Ich habe mir für meine älteren Cisco SIP-Telefone ein eigenes Wählprogramm gebaut. Die Wahl wird ausgelöst indem man dem Telefon einen http-POST Request sendet.
Hier der Quellcode meiner Funktion:
; Wählt die Rufummer aus dem ComboBox Feld indem diese als XML-Aufruf an das Cisco-Telefon gesendet wird
Func ButtonCallClick()
GUICtrlSetData($LabelStatus, "Wähle " & GUICtrlRead($ComboNumber))
;Priority Priority of the request (optional): 0 Execute immediately (default) ; 1 Execute when idle ; 2 Execute only if idle
Local $sPD = 'XML=<CiscoIPPhoneExecute><ExecuteItem Priority="1" URL="Play:Beep"/><ExecuteItem Priority="' & $s_CiscoPrio & '" URL="Dial:' & $s_CiscoPrefix & GUICtrlRead($ComboNumber) & '"/></CiscoIPPhoneExecute>'
Local $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("POST", "http://" & $s_CiscoIP & "/CGI/Execute", False)
$oHTTP.SetCredentials($s_CiscoUser,$s_CiscoPassword,0)
$oHTTP.SetRequestHeader("Content-Type", "application/xml")
$oHTTP.Send($sPD) ; Das eigentliche Senden
Local $oReceived = $oHTTP.ResponseText
Local $oStatusCode = $oHTTP.Status
If $oStatusCode = 200 Then
GUICtrlSetData($LabelStatus, "Telefon wählt!")
Else
GUICtrlSetData($LabelStatus, "Fehler! Statuscode: " & $oStatusCode)
EndIf
$oHTTP = 0 ; Aufräumen!
EndFunc
Alles anzeigen
Das hat bisher immer gut funktioniert, der Wahlvorgang wird sofort ausgelöst. Aber früher habe ich sofort wenn er anfängt zu wählen den Status 200 zurück bekommen.
Nun dauert es bestimmt 20 Sekunden bis die Antwort kommt und das Programm ist solange eingefroren.
Wenn ich die Wahl z.B. per Curl auslöse beträgt die Verzögerung nur 1 bis 2 Sekunden, so war das im AutoIt-Skript früher auch:
curl --user name1:pw1 --data "XML=<CiscoIPPhoneExecute><ExecuteItem URL=\"Dial:0123456789\"/></CiscoIPPhoneExecute>" http://192.168.1.232/CGI/Execute
<?xml version="1.0" encoding="utf-8"?>
<CiscoIPPhoneResponse>
<ResponseItem URL="Dial:0123456789" Data="Success" Status="0" />
</CiscoIPPhoneResponse>
Ich könnte mir vorstellen das es irgendwelchen Windows-Updates zu tun hat bzw. das sich in Windows was geändert hat.
Gäbe es die Möglichkeit die URL aufzurufen ohne auf die Antwort zu warten? Oder eine andere Idee wie ich es wieder "schnell" bekomme?