Ophalen Agent Status (Online / Offline / Handling / Pause) werkt slechts deels..
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?
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.
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?
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.