TAPI Schnittstelle ansprechen, Sonderzeichen trimmen
Hallo zusammen, im Internet habe ich ein VBS Script gefunden welches die TAPI Schnittstelle ansprechen kann...
... dies funktioniert ganz gut, hier der Quellcode:
Die Datei habe ich als "cti.vbs" gespeichert und nach C:\Windows kopiert. Wenn ich nun in einer CMD "cti.vbs 123456789" tippe fängt mein Telefon an zu wählen und alles ist super. Um das ganze nun zu verfeinern habe ich nun noch ein AutoHotkey Script geschrieben welches mir markierte Nummern an die cti.vbs übergibt. Funktioniert auch super.
Es geht aber um den Fall der eintrifft wenn ich Rufnummern von Webseiten markiere, diese entahlten oft Sonderzeichen wie /, (, oder .
Durch die Sonderzeichen ist es naütlrich nicht möglich das VBS Script auszuführen.
Da ich von VBS überhaupt keine Ahnung habe, suche ich jemand der mir helfen kann und mir erklärt wie ich diese Sonderzeichen heraustrimme. Vielleicht ist dies auch der falsche Ansatz und man muss die Sonderzeichen schon im AutoHotkey Script raustrimmen.
Ich bin für jede Hilfe dankbar! Vielen Dank im Voraus!
... dies funktioniert ganz gut, hier der Quellcode:
Option Explicit
Dim strFilter, strNumber
strFilter = ""
If (Wscript.Arguments.Count < 1) Then
Wscript.Echo "Make a call via TAPI" & vbcrlf & vbcrlf & "cti.vbs Number StringToSearchForInTapi"
Wscript.Quit
Else
' Retrieve the first argument (index 0).
strNumber = Wscript.Arguments(0)
If Wscript.Arguments.Count > 1 Then
' Retrieve the second argument.
strFilter = Wscript.Arguments(1)
End If
End If
If Wscript.Arguments(0) = "-list" Then
Call ListTAPI()
Else
Call MakeCall(strNumber, strFilter)
End If
Sub MakeCall(strNumber, strFilter)
Dim lAddressType, objTapi, objCollAddresses, objCrtAddress, lLoop, NewCall, gobjAddress
Const LINEADDRESSTYPE_PHONENUMBER = 1
Const LINEMEDIAMODE_INTERACTIVEVOICE = 4
lAddressType = LINEADDRESSTYPE_PHONENUMBER
Set objTapi = CreateObject("TAPI.TAPI.1")
objTapi.Initialize
Set objCollAddresses = objTapi.Addresses
For lLoop = 1 To objCollAddresses.Count
Set objCrtAddress = objCollAddresses.Item(lLoop)
If Instr(objCrtAddress.AddressName, "EXT00") > 0 Then
If Instr(objCrtAddress.AddressName, strFilter) Then
Set gobjAddress = objCrtAddress
Exit For
End If
End If
If lLoop = objCollAddresses.Count Then
Msgbox "TAPI Provider Not Found"
WScript.quit(-1)
End If
Next
Set NewCall = gobjAddress.CreateCall(strNumber, lAddressType, LINEMEDIAMODE_INTERACTIVEVOICE) ',lMediaTypes)'Set
NewCall.connect(False)
End Sub
Sub ListTAPI()
Dim strAddressList, lAddressType, objTapi, objCollAddresses, objCrtAddress, lLoop
Const LINEADDRESSTYPE_PHONENUMBER = 1
lAddressType = LINEADDRESSTYPE_PHONENUMBER
Set objTapi = CreateObject("TAPI.TAPI.1")
objTapi.Initialize
Set objCollAddresses = objTapi.Addresses
For lLoop = 1 To objCollAddresses.Count
Set objCrtAddress = objCollAddresses.Item(lLoop)
strAddressList = strAddressList & objCrtAddress.AddressName & vbCrLf
Next
Wscript.echo strAddressList
End Sub
Die Datei habe ich als "cti.vbs" gespeichert und nach C:\Windows kopiert. Wenn ich nun in einer CMD "cti.vbs 123456789" tippe fängt mein Telefon an zu wählen und alles ist super. Um das ganze nun zu verfeinern habe ich nun noch ein AutoHotkey Script geschrieben welches mir markierte Nummern an die cti.vbs übergibt. Funktioniert auch super.
Es geht aber um den Fall der eintrifft wenn ich Rufnummern von Webseiten markiere, diese entahlten oft Sonderzeichen wie /, (, oder .
Durch die Sonderzeichen ist es naütlrich nicht möglich das VBS Script auszuführen.
Da ich von VBS überhaupt keine Ahnung habe, suche ich jemand der mir helfen kann und mir erklärt wie ich diese Sonderzeichen heraustrimme. Vielleicht ist dies auch der falsche Ansatz und man muss die Sonderzeichen schon im AutoHotkey Script raustrimmen.
Ich bin für jede Hilfe dankbar! Vielen Dank im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179895
Url: https://administrator.de/contentid/179895
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo cmeese.
Um die numerische Essenz aus einem String zu filtern, bietet sich ein regulärer Ausdruck an.
Beispiel:
Als Orientierungshilfe: Die erste Zeile im Beispielcode entspricht dem
in deinem Script. Die letzte Zeile ist nur zur Ausgabe des Resultats.
Brain.exe solltest du trotzdem mitlaufen lassen Einfach Irgendetwas übergeben zu wollen, schlägt im Zweifelsfall natürlich fehl. Oft schon gesehen:
+49 (0) 123 / 456789
... was soviel bedeutet, wie wahlweise 0049123... bzw. 0123... Du kannst dir vorstellen was passiert, wenn aus diesem String einfach alle Ziffern extrahiert werden...
Grüße
rubberman
Um die numerische Essenz aus einem String zu filtern, bietet sich ein regulärer Ausdruck an.
Beispiel:
strNumber = "0123 / 456-789"
Set objRegex = New RegExp
objRegex.Global = True
objRegex.Pattern = "\d+"
Set colNums = objRegex.Execute(strNumber)
strNumber = ""
For Each objNum In colNums
strNumber = strNumber & objNum.Value
Next
Set objNum = Nothing
Set colNums = Nothing
Set objRegex = Nothing
WScript.Echo strNumber
strNumber = Wscript.Arguments(0)
in deinem Script. Die letzte Zeile ist nur zur Ausgabe des Resultats.
Brain.exe solltest du trotzdem mitlaufen lassen Einfach Irgendetwas übergeben zu wollen, schlägt im Zweifelsfall natürlich fehl. Oft schon gesehen:
+49 (0) 123 / 456789
... was soviel bedeutet, wie wahlweise 0049123... bzw. 0123... Du kannst dir vorstellen was passiert, wenn aus diesem String einfach alle Ziffern extrahiert werden...
Grüße
rubberman
Hallo,
zunächsteinmal danke, ich habe auch ein ähnliches Problem, welches super dadurch gelöst werden konnte. Eine Frage habe ich jedoch, da ich kein vbs Crack bin.
Zeile 51 - Set NewCall = gobjAddress.CreateCall(strNumber, lAddressType, LINEMEDIAMODE_INTERACTIVEVOICE) ',lMediaTypes)'Set
Da ich ganz speziell eine definierte TapiVerbindung eingetragen habe, bei der ein Softphone die Verbindung aufbaut. Gibt es eine Möglichkeit/Trick um den Fehler abzufangen?
Error:
Line: 52
Position: 2
OK
zunächsteinmal danke, ich habe auch ein ähnliches Problem, welches super dadurch gelöst werden konnte. Eine Frage habe ich jedoch, da ich kein vbs Crack bin.
Zeile 51 - Set NewCall = gobjAddress.CreateCall(strNumber, lAddressType, LINEMEDIAMODE_INTERACTIVEVOICE) ',lMediaTypes)'Set
Da ich ganz speziell eine definierte TapiVerbindung eingetragen habe, bei der ein Softphone die Verbindung aufbaut. Gibt es eine Möglichkeit/Trick um den Fehler abzufangen?
Error:
Line: 52
Position: 2
OK