Hallo Swyxler,
in einem CallRouting muss ich herausfinden, ab an einer Visual Groups Warteschlange gerade User angemeldet sind. Ich habe mir das CallRouting der VisualGroup angeguckt und folgenden Code als relevant angesehen und herausextrahiert:
Const fsoForReading = 1
Const fsoForWriting = 2
Const fsoForAppending = 8
Const fsoCreateIfNotExist = True
Function TraceIntoFile ( traceText )
Const filename = "D:\EigeneTraces\EigeneTraces.txt"
Dim fso
Dim file
' Create FileSystemObejct
Set fso = CreateObject("Scripting.FileSystemObject")
' Open text file
Set file = fso.OpenTextFile(filename, fsoForAppending, fsoCreateIfNotExist)
' Write (append) traceText into file
file.WriteLine ( """" & traceText & """,""" & CStr(now) & """" )
file.Close
Set file = Nothing
Set fso = Nothing
End Function
Dim msgnr 'Messagenumber in repeated query
Dim queuestring 'VisualGroups server connection string
Dim globcallid 'PBXCall.CallId
Function checkvisgroup
Dim PBXConfig
Set PBXConfig = PBXScript.CreateObject("IpPBxSrv.PBXConfig")
PBXConfig.Initialize PBXUser
On Error Resume Next
'Get global queue connection string
queuestring = PBXScript.GetGlobalConfigItem ("VisualGroups","Global","Url")
If queuestring = "" Then
getparameters = 1
Exit Function
Else
queuestring = CStr(queuestring) + "&rid=9398517249"
End If
Dim stringurl
Dim CnxSVG
Dim reason
Dim len1
Dim len2
Dim LDAP_WAIT_TIMEOUT
On Error Resume Next
msgnr = msgnr + 1
'globcallid = CLng(PBXCall.CallId)
stringurl = CStr(queuestring) & "&msgnr=" + CStr(msgnr) + "&function=4&deactivatemode=0"
'stringurl = stringurl + "&callid=" + CStr(globcallid)
stringurl = stringurl + "&queuenameid=1"
TraceIntoFile (stringurl)
Set CnxSVG = CreateObject("MSXML2.ServerXMLHTTP")
CnxSVG.Open "POST", stringurl, False
CnxSVG.Send
If Err <> 0 then
TraceIntoFile (Err.Description)
Err.Clear
checkvisgroup = 9
Exit Function
End if
If CnxSVG.waitForResponse(LDAP_WAIT_TIMEOUT) Then
If CnxSVG.Status = 200 Then
LDAPRequested = True
TraceIntoFile (CnxSVG.responseText)
len1 = instr(CnxSVG.responseText, "<reason>")
len2 = instr(CnxSVG.responseText, "</reason>")
If len1 > 0 And len2 > 0 And len2 > len1 + 8 Then
reason = mid(CnxSVG.responseText, len1 + 8, len2 - len1 - 8)
End If
If reason = "NoAgent" Then
checkvisgroup = 1
Exit Function
End IF
End If
End If
If Err <> 0 then
TraceIntoFile (Err.Description)
End if
Set CnxSVG = Nothing
checkvisgroup = 2
End Function
In der Mitte des Codes ist "stringurl = ..." auskommentiert und durch meinen "Versuch" ersetzt. Der Code läuft original ja unter der Nummer der VisualGroup. "Meine globcallid" hat aber nichts mit der VisualGroup zu tun. Deswegen habe ich queuenameid probiert. Leider gibt die Antwort dann nicht ...<response>0</response>... sondern ...<waiting>0</waiting>... zurück. Ich finde keine Dokumentation zu den VisualGroup-aspx-Seiten und welche Variablen ich übergeben kann. Denke ich jetzt überhaupt in die richtige Richtung?
FYI:
Mein erster Versuch war ein DB Zugriff auf die Felder state der Tabelle svg_ta_queuewaitingusers und priority der Tabelle svg_ta_queuemembers. Das funktioniert so lange sich die User immer brav aktiv von der Warteschlange abmelden. Sobald sie ihren Client einfach nur schließen, wird state nicht upgedatet....
Mein zweiter Ansatz war das Auslesen einer Wallpaper. Dort stehen die angemeldeten User auch drin. Das habe ich aber abgebrochen, da der responseText so unendlich lang ist.
Ich hoffe ich konnte mein Problem verständlich machen.