spufi Posted December 14, 2020 #1 Share Posted December 14, 2020 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. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now