Ophalen Agent Status (Online / Offline / Handling / Pause) werkt slechts deels..

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter Baggen

Peter Baggen

04/10/2015 20:28:37
Quote Anchor link
Hoop dat het in de juiste groep staat...

Ik heb een probleem waar mijn webmaster en ik niet uitkomen. Het gaat om een online presence system, waarbij statussen van agents worden opgehaald aan de hand van een application die een signaal afgeeft aan de server, wat wordt opgevangen door het script. Ik heb een probleem met het ophalen van enkele statussen: enkele worden goed opgehaald en anderen niet.

Ik weet dat de application goed werkt, de offline en online status pakt hij zonder probleem. Het enige probleem is hoe we de "bezet" (Handling) en "Pause" statussen kunnen weergeven. Met de code die hieronder staat is dus iets mis, maar geen idee wat. Wat ik weet is dat het script totaal niet reageert op de "bezet" en "handling". Als iemand online staat, en we zetten de application bijvoorbeeld op pause, dan blijft het op online staan. Als iemand offline staat en zetten de status op pause, dan blijft het op offline staan.

Ik heb begrepen dat we sub-statussen moeten maken, dat er onder "offline" de statussen "bezet" en "handling" moeten staan, maar hoe...? Dit is het deel van de code die fout gaat:


if(!$result->faultCode())
{
$agent=$result->value();
$agent_avail=$agent->structmem("available");
$agent_reason=$agent->structmem("availReason");
if ($agent_avail->scalarval() == "1")
{
$status = "online";
}
else
{
switch (IsSet($agent_reason) ? trim($agent_reason->scalarval()) : "offline")
{
case "pause":
$status = "Pause";
break;
case "handling":
$status = "Afhandelen";
break;
default:
//If not both of the above values are true, the agent is offline!
$status = "offline";
break;


Pogingen die we hebben ondernomen hebben tot niks geleid, ik heb codes gekopieerd van forums en getest, de online en offline statussen nagemaakt maar niks.. dit hierboven is de originele code die - als het goed is - gewoon zou moeten werken.

De vraag is dus: wat missen we in ons script?
 
PHP hulp

PHP hulp

20/04/2024 02:12:36
 
Thomas van den Heuvel

Thomas van den Heuvel

04/10/2015 20:42:08
Quote Anchor link
Tijd om dit stukje code te refactoren:

switch (IsSet($agent_reason) ? trim($agent_reason->scalarval()) : "offline")

Misschien bestaat de variabele $agent_reason niet of heeft deze de waarde NULL, in welk geval de status altijd "offline" is?

Tis iig vrij onleesbaar.

Ook zou enige annotatie in code wat het zou moeten doen niet misstaan.
 
Peter Baggen

Peter Baggen

04/10/2015 22:03:01
Quote Anchor link
Bedankt voor je reactie, ik zal er eens naar kijken. Er staat niks in de code wat terug verwijst naar agent_reason maar zou hij anders de statussen online en offline ook niet afvangen?
 
Thomas van den Heuvel

Thomas van den Heuvel

05/10/2015 12:19:38
Quote Anchor link
Oh, ja. Het zou geholpen hebben als je het fragment in een code-blok had gezet waarbij fatsoenlijk ingesprongen was.

Heb je gekeken naar de waarde van $agent_reason->scalarval()? Als deze geen scalar bevat, wordt waarschijnljk false geretourneerd, wat tot gevolg heeft dat je op je default case uit komt (even er vanuit gaande dat $agent_reason bestaat en dat een dergelijke constructie in een switch-statement is toegestaan).

Tijd om eens wat data naar je scherm of logfile te dumpen zou ik zeggen, anders blijft dit koffiedik kijken.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.