Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

TAPI Schnittstelle ansprechen, Sonderzeichen trimmen

Frage Entwicklung VB for Applications

Mitglied: cmeese

cmeese (Level 1) - Jetzt verbinden

01.02.2012 um 15:26 Uhr, 7158 Aufrufe, 2 Kommentare

Hallo zusammen, im Internet habe ich ein VBS Script gefunden welches die TAPI Schnittstelle ansprechen kann...

... dies funktioniert ganz gut, hier der Quellcode:
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 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!
Mitglied: rubberman
01.02.2012 um 19:47 Uhr
Hallo cmeese.

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 strNumber
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
Bitte warten ..
Mitglied: derLenhart
07.02.2012 um 12:29 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
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(2)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Server-Hardware
gelöst Problem mit ILO 3 Schnittstelle beim DL 120 G7 (13)

Frage von Leo-le zum Thema Server-Hardware ...

Linux Tools
gelöst Mit SPI-Schnittstelle Komunizieren über Node.js (7)

Frage von Roadrunner777 zum Thema Linux Tools ...

Batch & Shell
gelöst Sonderzeichen Fehler aus Textdatei vermeiden (16)

Frage von Peter32 zum Thema Batch & Shell ...

DNS
Zwei VPN Server via SRV record ansprechen (2)

Frage von maddig zum Thema DNS ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...