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, 7260 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 ..
Ähnliche Inhalte
Sonstige Systeme
Siemens Openlink HL7 Schnittstelle kopieren

Frage von DanO90 zum Thema Sonstige Systeme ...

Netzwerke
gelöst Serielle Schnittstelle über W-LAN (26)

Frage von apranet zum Thema Netzwerke ...

LAN, WAN, Wireless
Lancom 1821n VLAN Problem über interne W-LAN Schnittstelle (2)

Frage von dudeson zum Thema LAN, WAN, Wireless ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Windows Server
gelöst Exchange HyperV Prozessorlast (19)

Frage von theoberlin zum Thema Windows Server ...

Hardware
16-20 Port POE Switch mit VLAN (19)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Server mit Netzwerkaussetzern (17)

Frage von SarekHL zum Thema Windows Server ...

LAN, WAN, Wireless
gelöst Batchdatei um einen Proxy einzustellen (14)

Frage von CrystalFlake zum Thema LAN, WAN, Wireless ...