Seite 1 von 1

Tapi Wahl

Verfasst: 31.08.2012 16:16
von kunstlust
Ich versuche gerade eine Wahl per Tapi auszuführen und ich habe mich mal an die Umsetzung eines einfaches AutoIT Script gemacht:

AutoIT Script

Code: Alles auswählen

Const $LINEADDRESSTYPE_PHONENUMBER = "&H1"
Const $LINEMEDIAMODE_INTERACTIVEVOICE = "&H4"
Const $TAPI3_ALL_TAPI_EVENTS = "&H1FFFF"
Local $lAddressType = $LINEADDRESSTYPE_PHONENUMBER

Local $txtAddressName = "MobyDick 866" ;Name of Line
Local $Number = "966" ; Number to call

$objTapi = ObjCreate("TAPI.TAPI.1")

$objTapi.Initialize

$objCollAddresses = $objTapi.Addresses
For $lLoop = 1 To $objCollAddresses.Count
	$objCrtAddress = $objCollAddresses.Item($lLoop)
	If $objCrtAddress.AddressName = $txtAddressName Then
		$gobjAddress = $objCrtAddress
		ExitLoop
	EndIf
Next
$TestCall = $gobjAddress.CreateCall($Number, $lAddressType, $LINEMEDIAMODE_INTERACTIVEVOICE)
$TestCall.connect(False)
Purebasic Program was noch nicht geht:

Code: Alles auswählen

XIncludeFile "COMatePLUS.pbi"

TapiName.s = "MobyDick 866" ;Name of Line
Wahlnummer.i = 966 ; Number to call



objTAPI.COMateObject
objCollAddresses.COMateObject
objCollAnschluss.COMateObject
objWahl.COMateObject
objTAPI = COMate_CreateObject("TAPI.TAPI.1") 
objTAPI\Invoke("Initialize")

objCollAddresses = objTAPI\GetObjectProperty("Addresses")

For anzahl =1 To  objCollAddresses\GetIntegerProperty("count")
  
  objCollAnschluss = objCollAddresses\GetObjectProperty("Item(" + Str(anzahl) + " As Long)")
  objCollAnschluss\GetStringProperty("AddressName")
  If objCollAnschluss\GetStringProperty("AddressName") = TapiName
    
    Break
  EndIf
  
Next

objWahl = objCollAnschluss\Invoke("CreateCall, 966,LINEADDRESSTYPE_PHONENUMBER, LINEMEDIAMODE_INTERACTIVEVOICE")
objWahl\Invoke("Connect")\(False)

Debug COMate_GetLastErrorCode() 
Debug COMate_GetLastErrorDescription() 
Ich habe auch mal das VBS Beispiel dazu http://www.vbarchiv.net/tipps/tipp_2083.html

Beim objWahl scheitert es irgendwie, ich komme mit COMatePLUS nocht nicht so ganz klar, hat jemand einen Tip wo ich ansetzen könnte?
Danke

Re: Tapi Wahl

Verfasst: 31.08.2012 16:51
von Kiffi
kunstlust hat geschrieben:hat jemand einen Tip wo ich ansetzen könnte?
$LINEADDRESSTYPE_PHONENUMBER und $LINEMEDIAMODE_INTERACTIVEVOICE
sind Konstanten, die Du erst einmal in PB umsetzen und danach im Invoke korrekt
übergeben solltest.

Grüße ... Kiffi

Tapi Wahl

Verfasst: 01.09.2012 09:24
von kunstlust
Ich dachte das sein für den ersten Test egal, aber ich werde es Montag testen.

Re: Tapi Wahl

Verfasst: 04.09.2012 15:26
von kunstlust
PB ist schon toll, aber die Schreibweise bei COM-Objekten bringt einen schon mal um den Verstand, das ist bei AutoIT deutlich einfacher.
Ich versteh einfach nicht wie ich dies Zeile schrieben muss "("CreateCall, 966,#LINEADDRESSTYPE_PHONENUMBER, #LINEMEDIAMODE_INTERACTIVEVOICE")"

Re: Tapi Wahl

Verfasst: 04.09.2012 21:30
von Kiffi
so müsste es richtig sein:

Code: Alles auswählen

#LINEADDRESSTYPE_PHONENUMBER = 1
#LINEMEDIAMODE_INTERACTIVEVOICE = 4

; [...]

objCollAnschluss\Invoke("CreateCall(966, " + Str(#LINEADDRESSTYPE_PHONENUMBER) + ", " + Str(#LINEMEDIAMODE_INTERACTIVEVOICE) + ")")
Die anderen Sachen habe ich mir nicht angeschaut. Aber grade in der
ersten Entwicklungsphase lohnt es sich, hinter jedem COMate-Befehl
ein COMate_GetLastErrorDescription() ausgeben zu lassen (und nicht nur
hinter dem letzten).

Grüße ... Kiffi

Re: Tapi Wahl

Verfasst: 05.09.2012 09:12
von kunstlust
Hallo Kiffi,

ich habe nun einen Speicherfehler 0, ist der Connect Falsch?

Code: Alles auswählen

XIncludeFile "COMatePLUS.pbi"

#LINEADDRESSTYPE_PHONENUMBER = 1
#LINEMEDIAMODE_INTERACTIVEVOICE = 4

TapiName.s = "MobyDick 866" ;Name of Line
Wahlnummer.i = 966 ; Number to call




objTAPI.COMateObject
objCollAddresses.COMateObject
objCollAnschluss.COMateObject
objWahl.COMateObject
objTAPI = COMate_CreateObject("TAPI.TAPI.1") 
objTAPI\Invoke("Initialize")

objCollAddresses = objTAPI\GetObjectProperty("Addresses")

For anzahl =1 To  objCollAddresses\GetIntegerProperty("count")
  Debug COMate_GetLastErrorDescription() 
  objCollAnschluss = objCollAddresses\GetObjectProperty("Item(" + Str(anzahl) + " As Long)")
   Debug COMate_GetLastErrorDescription() 
   objCollAnschluss\GetStringProperty("AddressName")
    Debug COMate_GetLastErrorDescription() 
  If objCollAnschluss\GetStringProperty("AddressName") = TapiName
     Debug COMate_GetLastErrorDescription() 
    Break
  EndIf
  
Next

objCollAnschluss\Invoke("CreateCall(966, " + Str(#LINEADDRESSTYPE_PHONENUMBER) + ", " + Str(#LINEMEDIAMODE_INTERACTIVEVOICE) + ")")
 Debug COMate_GetLastErrorDescription()  
objWahl\Invoke("Connect(False)")
Debug COMate_GetLastErrorCode() 
Debug COMate_GetLastErrorDescription() 
objWahl\Release()