Jump to content

Anzeigen einer MessageBox, falls ein Anruf von einer bestimmten Nummer erfolgt


erpsb
 Share


Go to solution Solved by Tom Wellige,

Recommended Posts

Guten Morgen zusammen,

 

ich hoffte eigentlich, dass ich recht simpel einen Zusatztext über die MsgBox-Methode in VBscript anzeigen lassen könnte, wenn ein Anruf von einer bestimmten Nummer erfolgt.

Im VBScript-Block verwende ich testweise diesen Code:

 

Function ShowTextBox()
WScript.Echo "Falls die Haustür verschlossen ist, so können Sie diese während des laufenden Gesprächs mit der Türsprechstelle durch Eingabe des Codes *17# für 5 Sekunden öffnen. Sagen Sie dem Gesprächspartner nur bitte vorab Bescheid, dass Sie das versuchen."
End Function
ShowTextBox()
UseExit = 0 ' Bitte verwenden Sie die Variable UseExit um die Block-Ausgänge 0..9 zu verwenden

 

Wenn dann ein Anruf von der bestimmten Nummer erfolgt, geht er verloren.

 

Was mache ich da falsch?

Ich habe auch schon probiert, was passiert, wenn ich FollowMe oder Durchstellen hinter den Code-Block konfiguriere, aber es ist das gleiche Ergebnis.

 

Vielen Dank für jeden Augenöffner.

 

Gruß

Andreas

 

 

Ergänzung:

 

Ich habe mal mit dem VBScript-Codeblock etwas gespielt.

Die Messagebox wollte ich mit folgendem Code anzeigen:

MsgBox "Sie haben gerade einen Anruf von der Haustür erhalten!" & vbCrLf & "" & vbCrLf & "Im Falle, dass die Haustür verschlossen sein sollte, können Sie die Person davor via Telefon während dieses laufenden Gesprächs herein lassen." & vbCrLf & "" & vbCrLf & "Geben Sie dazu den Code *17# ein." & vbCrLf & "Die Haustür wird dann für 5 Sekunden entriegelt." & vbCrLf & "" & vbCrLf & "Sagen Sie dem Gesprächspartner Bescheid.",331840,"BITTE NICHT BLINDLINKS WEGKLICKEN, SONDERN LESEN!"

Als reines VBscript ausgeführt funktioniert das fehlerfrei.

 

Im Codeblock eingefügt, wird der Anruf durchgestellt, aber die Textbox nicht angezeigt.

Kapsele ich das Ganze in eine function() geht der Anruf verloren.

 

swyx.png

Link to comment
Share on other sites


  • Solution

Hallo Andreas,

 

das Call Routing wird vom Swyx Server ausgeführt, d.h. von dort aus gibt es keine Möglichkeit auf einem Client eine MessageBox zu öffnen.

 

Du musst mit Deinem Code auf den Client ziehen. Dazu gibt es das Client SDK.

 

Hier sind zwei Beispiele wie Du Dich mittels VBS an das SwyxIt! (oder besser gesagt den darunter liegenden Client Line Manager) heften kannst:

 

Im Client SDK Forum finden sich auch etliche ggf. hilfreiche Hinweise und Code Schnipsel, allen voran wo Du das aktuelle Client SDK (inkl. weiterer Beispeile und Doku) herunter laden kannst:

 

 

Link to comment
Share on other sites


@Tom Wellige

Hi Tom,

 

kannst Du mir bitte noch einen Tipp geben?

Wie kann ich in VBScript den Trigger auf eine bestimmte Anrufernummer legen, so dass erst, wenn diese anruft, das Script auslöst?

Ich habe in den Beispielen und in der Dokumentation nicht herausfinden können, wie ich das filtern kann.

 

Vielen Dank und beste Grüße

Andreas

Link to comment
Share on other sites


Hallo Andreas,

 

das geht recht einfach. In dem "VBScript Open Browser on incoming call" von oben findest Du folgende Code Stelle, in der Anrufer Nummer und Name in eine URL gebastelt werden, die dann aufgerufen wird.

 

' when line state changes from inactive to ringing
if lState(lineIdx)=PubLSRinging and lStateOld(lineIdx)=PubLSInactive then
    dim sTemp
    sTemp = GetCmdLine(lineIdx)
    sTemp = Replace(sTemp,"%num%",Escape(clmgr.DispGetLine(lineIdx).DispPeerNumber))
    sTemp = Replace(sTemp,"%name%",Escape(clmgr.DispGetLine(lineIdx).DispPeerName))
    WScript.Echo "New call, execute " & sTemp
    oWshShell.Run sTemp
end if

 

Da packst Du einfach die Überprüfung auf die Anrufernummer mit dazu. Um es etwas allgemeingültiger zu halten, würde ich mir erst eine Konstante definieren, die eine Liste aller Rufnummer enthält, auf die ich reagieren will:

 

Const SPECIFIC_CALLER_LIST = ("12345","23456","34567","45678")

 

Den obigen Code Schnipsel passt Du dann einfach wie folgt an:

 

' when line state changes from inactive to ringing
if lState(lineIdx)=PubLSRinging and lStateOld(lineIdx)=PubLSInactive then

    ' check for specific caller number
    if Escape(clmgr.DispGetLine(lineIdx).DispPeerNumber) in SPECIFIC_CALLER_LIST then

        dim sTemp
        sTemp = GetCmdLine(lineIdx)
        sTemp = Replace(sTemp,"%num%",Escape(clmgr.DispGetLine(lineIdx).DispPeerNumber))
        sTemp = Replace(sTemp,"%name%",Escape(clmgr.DispGetLine(lineIdx).DispPeerName))
        WScript.Echo "New call, execute " & sTemp
        oWshShell.Run sTemp

    end if
    
end if

 

 

Ich hoffe, damit kommst Du weiter.

 

Link to comment
Share on other sites


  • 1 month later...

Vielen Dank Tom.

 

Ich kam erst jetzt wieder dazu, daran zu arbeiten.

 

Hat leider nicht funktioniert. Ich bekam immer den Fehler "Then" erwartet in dieser Zeile:

if Escape(clmgr.DispGetLine(lineIdx).DispPeerNumber) in SPECIFIC_CALLER_LIST then

Habe aber getestet, das alle IF-Schleifen korrekt geschlossen waren. Und wie ich es auch angestellt habe, ich hab die Anrufernummer nie in eine Variable übergeben können. Da war nix.

Ich bin auf ein anderes Script von Dir gestoßen CallDetails.vbs 1.0.0.

Da kann ich mir wahrscheinlich auf einem anderen Weg helfen, denn damit bekomme ich die Werte. Aber eins ist spannend:

 

WriteCallDetails clmgr.DispGetLine(lineIdx).DispPeerName, clmgr.DispGetLine(lineIdx).DispPeerNumber, clmgr.DispGetLine(lineIdx).DispCalledExtension

 

DispPeerName liefert den Namen des Anrufers, DispPeerNumber und DispCalledExtension liefern aber immer meine Durchwahl.

 

Ich versuche mir diese Funktion umzubauen. Vielleicht klappt es damit. Dann mache ich einen STRING-Compare und gut ist.

 

Vielen Dank und Grüße

 

Andreas

 

 

Link to comment
Share on other sites


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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and have taken note of our Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.