TAPI Schnittstelle ansprechen, Sonderzeichen trimmen
01.02.2012
15:26:01 Uhr507 Aufrufe
2 Antworten
15:26:01 Uhr
2 Antworten
Noch nicht bewertet
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!
01.
Option Explicit 02.
03.
Dim strFilter, strNumber 04.
strFilter = "" 05.
06.
If (Wscript.Arguments.Count < 1) Then 07.
Wscript.Echo "Make a call via TAPI" & vbcrlf & vbcrlf & "cti.vbs Number StringToSearchForInTapi" 08.
Wscript.Quit 09.
Else 10.
' Retrieve the first argument (index 0). 11.
strNumber = Wscript.Arguments(0) 12.
If Wscript.Arguments.Count > 1 Then 13.
' Retrieve the second argument. 14.
strFilter = Wscript.Arguments(1) 15.
End If 16.
End If 17.
18.
19.
If Wscript.Arguments(0) = "-list" Then 20.
Call ListTAPI() 21.
Else 22.
Call MakeCall(strNumber, strFilter) 23.
End If 24.
25.
26.
Sub MakeCall(strNumber, strFilter) 27.
Dim lAddressType, objTapi, objCollAddresses, objCrtAddress, lLoop, NewCall, gobjAddress 28.
29.
Const LINEADDRESSTYPE_PHONENUMBER = 1 30.
Const LINEMEDIAMODE_INTERACTIVEVOICE = 4 31.
32.
lAddressType = LINEADDRESSTYPE_PHONENUMBER 33.
Set objTapi = CreateObject("TAPI.TAPI.1") 34.
objTapi.Initialize 35.
Set objCollAddresses = objTapi.Addresses 36.
37.
For lLoop = 1 To objCollAddresses.Count 38.
Set objCrtAddress = objCollAddresses.Item(lLoop) 39.
If Instr(objCrtAddress.AddressName, "EXT00") > 0 Then 40.
If Instr(objCrtAddress.AddressName, strFilter) Then 41.
Set gobjAddress = objCrtAddress 42.
Exit For 43.
End If 44.
End If 45.
If lLoop = objCollAddresses.Count Then 46.
Msgbox "TAPI Provider Not Found" 47.
WScript.quit(-1) 48.
End If 49.
Next 50.
51.
Set NewCall = gobjAddress.CreateCall(strNumber, lAddressType, LINEMEDIAMODE_INTERACTIVEVOICE) ',lMediaTypes)'Set 52.
NewCall.connect(False) 53.
54.
End Sub 55.
56.
Sub ListTAPI() 57.
Dim strAddressList, lAddressType, objTapi, objCollAddresses, objCrtAddress, lLoop 58.
59.
Const LINEADDRESSTYPE_PHONENUMBER = 1 60.
61.
lAddressType = LINEADDRESSTYPE_PHONENUMBER 62.
Set objTapi = CreateObject("TAPI.TAPI.1") 63.
objTapi.Initialize 64.
Set objCollAddresses = objTapi.Addresses 65.
66.
For lLoop = 1 To objCollAddresses.Count 67.
Set objCrtAddress = objCollAddresses.Item(lLoop) 68.
strAddressList = strAddressList & objCrtAddress.AddressName & vbCrLf 69.
Next 70.
Wscript.echo strAddressList 71.
End SubDie 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!
rubberman schreibt am 01.02.2012 um 19:47:36 Uhr
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
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
Um die numerische Essenz aus einem String zu filtern, bietet sich ein regulärer Ausdruck an.
Beispiel:
01.
strNumber = "0123 / 456-789" 02.
03.
Set objRegex = New RegExp 04.
objRegex.Global = True 05.
objRegex.Pattern = "\d+" 06.
Set colNums = objRegex.Execute(strNumber) 07.
strNumber = "" 08.
For Each objNum In colNums 09.
strNumber = strNumber & objNum.Value 10.
Next 11.
Set objNum = Nothing 12.
Set colNums = Nothing 13.
Set objRegex = Nothing 14.
15.
WScript.Echo strNumberstrNumber = Wscript.Arguments(0)
in deinem Script. Die letzte Zeile ist nur zur Ausgabe des Resultats.
Brain.exe solltest du trotzdem mitlaufen lassen
+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
derLenhart schreibt am 07.02.2012 um 12:29:13 Uhr
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
---------------------------





