Imports sipdotnet Imports System.ComponentModel Imports System.Text Imports TAPI3Lib Imports Bria_API_CSharp_SampleApp Imports Bria_API_CSharp_SampleApp.BriaPhoneRemoteControl Imports Bria_API_CSharp_SampleApp.CallHistoryView Public Class frmTapi Private Const MediaAudio As Integer = 8 Private Const MediaModem As Integer = 16 Private Const MediaFax As Integer = 32 Private Const MediaVideo As Integer = 32768 Private WithEvents oTAPI As TAPI3Lib.TAPI ' will hold our TAPI object ' will hold our selected address (you can hold many addresses in an array) Private oAddress As ITAddress Private RegCookie As Integer Dim briaAPI As BriaAPI Private phoneLines As PhoneLine() = New PhoneLine(5) {} Sub New() Try InitializeComponent() ' creating a new instance to first initialize TAPI ' before attaching the events Dim m_TAPI As New TAPI3Lib.TAPIClass ' a variable to hold supported media types for the address Dim MediaTypes As Integer ' initializing TAPI m_TAPI.Initialize() ' attaching event sink oTAPI = m_TAPI ' getting rid of the private instance as we have another ' global instance (oTAPI) m_TAPI = Nothing Dim AddressCollection As ITCollection = oTAPI.Addresses() ' looping through address collection For Each Address As ITAddress In AddressCollection ' checking if address is working If Address.State = ADDRESS_STATE.AS_INSERVICE Then ' extracting media support interface from the address Dim MediaSupport As ITMediaSupport = Address ' extracting media types supporting MediaTypes = MediaSupport.MediaTypes MediaSupport = Nothing ' dispose of the object 'If (MediaTypes And MediaModem) = MediaModem Then If MediaModem = MediaModem Then ' the address is a data Modem If MediaTypes = MediaAudio Then ' Select the address since it supports Audio ' and is a FAX/Modem oAddress = Address ' select this address ' show the selected address name SetLabStatus(lblStatusTAPI, "we have selected this address: " & oAddress.AddressName) Exit For End If End If End If Next Address If Not (oAddress Is Nothing) Then ' registering notifications for the selected address RegCookie = oTAPI.RegisterCallNotifications(oAddress, True, False, MediaTypes, 1) ' Note: this registration can be done on ' as many addresses as you want ' we will not receive notifications unless we specify ' which type of events we are interested in oTAPI.EventFilter = (TAPI_EVENT.TE_CALLNOTIFICATION Or TAPI_EVENT.TE_CALLSTATE Or TAPI_EVENT.TE_CALLINFOCHANGE) Else MsgBox("no address selected") End If Catch ex As Exception MsgBox("Error occurred:" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "VBCITY.VBTAPI") End Try ' by now we are done for the initialization and registration ' and the events should fire ' Note: you must dispose of TAPI before you destroy the class ' and I will leave this for now End Sub Private Sub oTAPI_Event(ByVal TapiEvent As TAPI3Lib.TAPI_EVENT, ByVal pEvent As Object) Handles oTAPI.Event ' making a thread asynchronously process the event Dim thAsyncCall As System.Threading.Thread Select Case TapiEvent Case TAPI_EVENT.TE_CALLNOTIFICATION 'Call Notification Arrived ' assigning our sub's delegate to the thread thAsyncCall = New Threading.Thread(AddressOf CallNotificationEvent) ' passing the variable for the thread CallNotificationObject = CType(pEvent, ITCallNotificationEvent) ' starting the thread thAsyncCall.Start() Case TAPI_EVENT.TE_CALLSTATE 'Call State Changes ' assigning our sub's delegate to the thread thAsyncCall = New Threading.Thread(AddressOf CallStateEvent) ' passing the variable for the thread CallStateObject = CType(pEvent, ITCallStateEvent) ' starting the thread thAsyncCall.Start() Case TAPI_EVENT.TE_CALLINFOCHANGE 'Call Info Changes ' assigning our sub's delegate to the thread thAsyncCall = New Threading.Thread(AddressOf CallInfoEvent) ' passing the variable for the thread CallInfoObject = CType(pEvent, ITCallInfoChangeEvent) ' starting the thread thAsyncCall.Start() End Select End Sub Private CallNotificationObject As ITCallNotificationEvent Private Sub CallNotificationEvent() ' here we should check to see various notifications of new and ended calls Select Case CallNotificationObject.Event Case CALL_NOTIFICATION_EVENT.CNE_MONITOR ' the notification is for a monitored call Case CALL_NOTIFICATION_EVENT.CNE_OWNER ' the notification is for an owned call End Select End Sub Private CallStateObject As ITCallStateEvent Private Sub CallStateEvent() ' here we should check to see call state and handle connects and disconnects Select Case CallStateObject.State Case CALL_STATE.CS_IDLE SetLabStatus(lblStatusTAPI, "CS_IDLE") Case CALL_STATE.CS_INPROGRESS SetLabStatus(lblStatusTAPI, "CS_IDLE") Case CALL_STATE.CS_OFFERING ' a call is offering so if you don't want it then pass it ' The code to pass the call is the following ' Dim CallControl As ITBasicCallControl = CallStateObject.Call ' CallControl.HandoffIndirect(CallStateObject.Call.CallInfoLong(CALLINFO_LONG.CIL_MEDIATYPESAVAILABLE)) 'Dim c = CallStateObject.Call.get_CallInfoString(TAPI3Lib.CALLINFO_STRING.CIS_CALLERIDNUMBER) Dim target = CallStateObject.Call.Address.DialableAddress 'SetLabStatus(lblStatusTAPI, CallStateObject.) SetLabStatus(Label1, target) Dim oCallInfo As ITCallInfo2 = CallStateObject.Call 'SetLabStatus(lblStatusTAPI, CallStateObject.Call.CallInfoString(CALLINFO_STRING.CIS_CALLERIDNAME)) SetLabStatus(Label1, CallStateObject.Call.CallInfoString(CALLINFO_STRING.CIS_CALLERIDNUMBER)) ' SetLabStatus(lblStatusTAPI, CallStateObject.Call.CallInfoString(CALLINFO_STRING.CIS_CALLERIDNUMBER)) ' oCallInfo.get_CallInfoString(CALLINFO_STRING.CIS_CALLERIDNAME)) ' SetLabStatus(lblStatusTAPI, oCallInfo.CallInfoString(CALLINFO_STRING.CIS_CALLERIDNAME))' oCallInfo.get_CallInfoString(CALLINFO_STRING.CIS_CALLERIDNAME)) Case CALL_STATE.CS_CONNECTED ' call is connected SetLabStatus(lblStatusTAPI, " call is connected ") SetLabStatus(lblCallState, "Anruf läuft, bitte nennen Sie Ihr Anliegen.") ' CallStateObject.Call. 'CallStateObject.Call.CallInfoString() Case CALL_STATE.CS_QUEUED ' call is being queued SetLabStatus(lblStatusTAPI, " call is being queued ") Case CALL_STATE.CS_HOLD ' call is on hold SetLabStatus(lblStatusTAPI, "call is on hold ") Case CALL_STATE.CS_DISCONNECTED ' call is disconnected SetLabStatus(lblStatusTAPI, "call is disconnected ") 'SetLabStatus(lblCallState, "Anruf beendet.") End Select End Sub 'threadsicherer Aufruf Delegate Sub SetLabStatusCallback(lbl As Label, txt As String) Private Sub SetLabStatus(lbl As Label, txt As String) If Me.InvokeRequired Then Dim d As New SetLabStatusCallback(AddressOf SetLabStatus) Try Me.Invoke(d, New Object() {lbl, txt}) Catch ex As Exception : End Try Else lbl.Text = txt End If End Sub Private CallInfoObject As ITCallInfoChangeEvent Private Sub CallInfoEvent() ' here you can extract information from the call ' the code to extract the caller ID ' >>> put the following code in a try block and ' swallow the exception if it gives errors Try Dim CallerID As String CallerID = CallInfoObject.Call.CallInfoString(CALLINFO_STRING.CIS_CALLERIDNAME) Catch ex As Exception End Try End Sub Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click Dim PhoneNumber As String = "00436644178557" ' Dim PhoneNumber As String = "147" makePhoneCall(PhoneNumber) 'makeVideoCall(PhoneNumber) End Sub Dim CURRENTCALL As TAPI3Lib.ITBasicCallControl Sub makePhoneCall(PhoneNumber As String) Try ' Dim lMediaTypes As Long = TAPI3Lib.TapiConstants.TAPIMEDIATYPE_VIDEO, lCallbackInstance As Long = 1 Dim lMediaTypes As Long = TAPI3Lib.TapiConstants.TAPIMEDIATYPE_AUDIO, lCallbackInstance As Long = 1 Dim TestCall As TAPI3Lib.ITBasicCallControl Dim lAddressType As Long = TAPI3Lib.TapiConstants.LINEADDRESSTYPE_PHONENUMBER TestCall = oAddress.CreateCall(PhoneNumber, lAddressType, TapiConstants.TAPIMEDIATYPE_AUDIO) TestCall.Connect(False) CURRENTCALL = TestCall 'Dim pITMediaSupport = .QueryDispatchInterface(IID_String_ITMediaSupport, pITAddress) Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try End Sub Sub makeVideoCall(PhoneNumber As String) Try ' Dim lMediaTypes As Long = TAPI3Lib.TapiConstants.TAPIMEDIATYPE_VIDEO, lCallbackInstance As Long = 1 Dim lMediaTypes As Long = TAPI3Lib.TapiConstants.TAPIMEDIATYPE_VIDEO, lCallbackInstance As Long = 1 Dim TestCall As TAPI3Lib.ITBasicCallControl Dim lAddressType As Long = TAPI3Lib.TapiConstants.LINEADDRESSTYPE_PHONENUMBER TestCall = oAddress.CreateCall(PhoneNumber, lAddressType, TapiConstants.TAPIMEDIATYPE_AUDIO Or TapiConstants.TAPIMEDIATYPE_VIDEO) TestCall.Connect(False) 'Dim pITMediaSupport = .QueryDispatchInterface(IID_String_ITMediaSupport, pITAddress) Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try End Sub Sub makeVideoCallBRIA(PhoneNumber As String) Try Dim connected = True If connected Then briaAPI.RequestPlaceCall(PhoneNumber, Bria_API_CSharp_SampleApp.BriaAPI.CallTypes.video) End If Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try End Sub Sub makeVideoCall2(PhoneNumber As String) SetLabStatus(lblStatusTAPI, "Dialing to " & PhoneNumber & " ...") Dim call_control As TAPI3Lib.ITBasicCallControl call_control = oAddress.CreateCall(PhoneNumber, TapiConstants.LINEADDRESSTYPE_IPADDRESS, TapiConstants.TAPIMEDIATYPE_AUDIO Or TapiConstants.TAPIMEDIATYPE_VIDEO) ' call_control = call_address.CreateCall(addr, TapiConstants.LINEADDRESSTYPE_IPADDRESS, TapiConstants.TAPIMEDIATYPE_AUDIO Or TapiConstants.TAPIMEDIATYPE_VIDEO) ' button1.Enabled = False Dim enum_stream As IEnumStream 'Dim pstream_control As ITStreamControl 'pstream_control = CType(call_control, ITStreamControl) ' pstream_control.EnumerateStreams(enum_stream) Dim p_stream As ITStream Dim a11 As UInteger = 0 call_control.EnumerateStreams(enum_stream) enum_stream.[Next](1, p_stream, a11) Dim imedia As Integer imedia = p_stream.MediaType Dim dir As TERMINAL_DIRECTION dir = p_stream.Direction Dim termi, termi1 As ITTerminal Dim term_support As ITTerminalSupport = CType(oAddress, ITTerminalSupport) termi = term_support.GetDefaultStaticTerminal(imedia, dir) p_stream.SelectTerminal(termi) enum_stream.[Next](1, p_stream, a11) termi1 = term_support.GetDefaultStaticTerminal(imedia, TERMINAL_DIRECTION.TD_CAPTURE) p_stream.SelectTerminal(termi1) call_control.EnumerateStreams(enum_stream) call_control.Connect(False) End Sub Private Sub btn3_Click(sender As Object, e As EventArgs) Handles Button1.Click ' Try 'MsgBox(PlathosysApiWrapper.Plathosys.ApiVersionNumber()) openConnectionPLATHOSYS() 'Dim HookPttInfo = -1 'PlathosysApiWrapper.Plathosys.ReadHookAndPTT(HookPttInfo) 'MsgBox(HookPttInfo) 'PlathosysApiWrapper.Plathosys.Closedevice() ' Catch ex As Exception ' MsgBox(ex.Message & ex.StackTrace) ' End Try End Sub Function openConnectionPLATHOSYS() As Boolean Try Dim isDeviceOpen As Boolean = PlathosysApiWrapper.Plathosys.IsDeviceOpen() If Not isDeviceOpen Then Dim apiVersionNumber As Integer = PlathosysApiWrapper.Plathosys.ApiVersionNumber() Console.WriteLine("ApiVersionNumber: {0}", Convert.ToString(apiVersionNumber, 2)) Dim successful As Boolean Dim vendorID As Integer = 0 Dim productID As Integer = 0 Dim selectedVendorID As Integer Dim selectedProductID As Integer Dim deviceName As StringBuilder = New StringBuilder(200) Dim serialNumber As StringBuilder = New StringBuilder(200) successful = PlathosysApiWrapper.Plathosys.Opendevice(vendorID, productID, selectedVendorID, selectedProductID, deviceName, serialNumber) Console.WriteLine($"Open successful? {successful}") Console.WriteLine("Selected Vendor ID: {0:X}", selectedVendorID) Console.WriteLine("Selected Product ID: {0:X}", selectedProductID) Console.WriteLine($"Device name: {deviceName}") Console.WriteLine($"Serial number: {serialNumber}") If successful Then successful = PlathosysApiWrapper.Plathosys.SetHandsetVolume(200) successful = PlathosysApiWrapper.Plathosys.SetIntSpeakerVolume(0) successful = PlathosysApiWrapper.Plathosys.SetHandsetMicVolume(128) successful = PlathosysApiWrapper.Plathosys.SetMicMute(False) 'successful = PlathosysApiWrapper.Plathosys.SetSpeakerOutMute(False) 'alle 'successful = PlathosysApiWrapper.Plathosys.SetIntSpeakerMute(True) '' Console.WriteLine($"SetHeadsetActive successful? {successful}") ''PlathosysApiWrapper.Plathosys.SetIntSpeakerMute(False) ''PlathosysApiWrapper.Plathosys.SetIntSpeakerVolume(255) ''PlathosysApiWrapper.Plathosys.SetHandsetVolume(128) 'successful = PlathosysApiWrapper.Plathosys.SetConference(False) 'Console.WriteLine($"SetConference successful? {successful}") ' PlathosysApiWrapper.Plathosys.SetConference(False) 'Lautsprecher deaktivieren 'PlathosysApiWrapper.Plathosys.SetHeadsetEar(True) 'Hörer aktivieren ' PlathosysApiWrapper.Plathosys.SetIntSpeakerVolume(0) 'Hörer Lautstäreke = 0 isDeviceOpen = PlathosysApiWrapper.Plathosys.IsDeviceOpen() If isDeviceOpen Then Timer.Enabled = True Return True End If End If End If ' Public Shared Function Opendevice(ByVal vendorID As Integer, ByVal productID As Integer, ByRef gotVendorID As Integer, ByRef gotProductID As Integer, ByVal gotProductName As StringBuilder, ByVal gotSerialNumber As StringBuilder) As Boolean Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try Return False End Function Sub allFunc() ' Try MsgBox(PlathosysApiWrapper.Plathosys.ApiVersionNumber()) 'Dim HookPttInfo = -1 'PlathosysApiWrapper.Plathosys.ReadHookAndPTT(HookPttInfo) 'MsgBox(HookPttInfo) 'PlathosysApiWrapper.Plathosys.Closedevice() Try Dim apiVersionNumber As Integer = PlathosysApiWrapper.Plathosys.ApiVersionNumber() Console.WriteLine("ApiVersionNumber: {0}", Convert.ToString(apiVersionNumber, 2)) Dim successful As Boolean Dim vendorID As Integer = 0 Dim productID As Integer = 0 Dim selectedVendorID As Integer Dim selectedProductID As Integer Dim deviceName As StringBuilder = New StringBuilder(200) Dim serialNumber As StringBuilder = New StringBuilder(200) successful = PlathosysApiWrapper.Plathosys.Opendevice(vendorID, productID, selectedVendorID, selectedProductID, deviceName, serialNumber) Console.WriteLine($"Open successful? {successful}") Console.WriteLine("Selected Vendor ID: {0:X}", selectedVendorID) Console.WriteLine("Selected Product ID: {0:X}", selectedProductID) Console.WriteLine($"Device name: {deviceName}") Console.WriteLine($"Serial number: {serialNumber}") Dim isDeviceOpen As Boolean = PlathosysApiWrapper.Plathosys.IsDeviceOpen() Console.WriteLine($"IsDeviceOpen? {isDeviceOpen}") successful = PlathosysApiWrapper.Plathosys.SetHandsetVolume(128) Console.WriteLine($"SetHandsetVolume successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetHeadsetVolume(128) Console.WriteLine($"SetHeadsetVolume successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetIntSpeakerVolume(128) Console.WriteLine($"SetIntSpeakerVolume successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetIntSpeakerMute(True) Console.WriteLine($"SetIntSpeakerMute successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetHandsetMicVolume(128) Console.WriteLine($"SetHandsetMicVolume successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetExtMicVolume(128) Console.WriteLine($"SetExtMicVolume successful? {successful}") Dim info1, info2, info3, info4, info5, info6, info7, info8, info9, info10 As Byte successful = PlathosysApiWrapper.Plathosys.ReadCurrentInfo(info1, info2, info3, info4, info5, info6, info7, info8, info9, info10) Console.WriteLine($"ReadCurrentInfo successful? {successful}") Console.WriteLine($"Connected / PTT Info: {Convert.ToString(info1, 2).PadLeft(8, "0"c)}") successful = PlathosysApiWrapper.Plathosys.SetSideTone(True) Console.WriteLine($"SetSideTone successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetMicMute(True) Console.WriteLine($"SetMicMute successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetWideBand(True) Console.WriteLine($"SetWideBand successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetEchoCanceller(True) Console.WriteLine($"SetEchoCanceller successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetExtMic(True) Console.WriteLine($"SetExtMic successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetConference(True) Console.WriteLine($"SetConference successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetHeadsetActive(True) Console.WriteLine($"SetHeadsetActive successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetWirelessHeadsetRinging(True) Console.WriteLine($"SetWirelessHeadsetRinging successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetWirelessCall(True) Console.WriteLine($"SetWirelessCall successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetPttFunctions(9) Console.WriteLine($"SetPttPlathosys successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetHeadsetEar(1) Console.WriteLine($"SetHeadsetEar successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetExtmicLed(True) Console.WriteLine($"SetExtmicLed successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetByListening(True) Console.WriteLine($"SetByListening successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetCodecType(1) Console.WriteLine($"SetCodecType successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetSerialNumber(12345678) Console.WriteLine($"SetSerialNumber successful? {successful}") successful = PlathosysApiWrapper.Plathosys.InitHookAndPTTState() Console.WriteLine($"InitHookAndPTTState successful? {successful}") successful = PlathosysApiWrapper.Plathosys.MuteSpkCt140(True) Console.WriteLine($"MuteSpkCt140 successful? {successful}") successful = PlathosysApiWrapper.Plathosys.MuteMicCt140(True) Console.WriteLine($"MuteMicCt140 successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetHeadsetdBVolume(-6) Console.WriteLine($"SetHeadsetdBVolume successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetHeadsetMicdBVolume(6) Console.WriteLine($"SetHeadsetMicdBVolume successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetExtMicdBVolume(3) Console.WriteLine($"SetExtMicdBVolume successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetIntSpeakerdBVolume(3) Console.WriteLine($"SetIntSpeakerdBVolume successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetIntAlarmSpeakerdBVolume(3) Console.WriteLine($"SetIntAlarmSpeakerdBVolume successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetIntAlarmSpeakerVolume(3) Console.WriteLine($"SetIntAlarmSpeakerVolume successful? {successful}") successful = PlathosysApiWrapper.Plathosys.SetLyncFeature(True) Console.WriteLine($"SetLyncFeature successful? {successful}") Dim info11, info12, info13, info14, info15, info16 As Byte successful = PlathosysApiWrapper.Plathosys.ReadCurrentInfodB(info1, info2, info3, info4, info5, info6, info7, info8, info9, info10, info11, info12, info13, info14, info15, info16) Console.WriteLine($"ReadCurrentInfodB successful? {successful}") Console.WriteLine($"Connected Info: {Convert.ToString(info1, 2).PadLeft(8, "0"c)}") Console.WriteLine($"Standard headset connected? {(info1 And 2) <> 0}") Console.WriteLine($"Info3: {info3}") Dim hardwareVersion As String = Convert.ToString(info3, 2).PadLeft(8, "0"c) Dim first As Integer = Convert.ToInt32(hardwareVersion.Substring(0, 4), 2) Dim second As Integer = Convert.ToInt32(hardwareVersion.Substring(4, 4), 2) Console.WriteLine($"Hardware version: {first}.{second}") Console.WriteLine($"Info4: {info4}") Dim softwareVersion As String = Convert.ToString(info4, 2).PadLeft(8, "0"c) first = Convert.ToInt32(hardwareVersion.Substring(0, 4), 2) second = Convert.ToInt32(hardwareVersion.Substring(4, 4), 2) Console.WriteLine($"Software version: {first}.{second}") Console.WriteLine($"Serial number high: {info7}") Console.WriteLine($"Serial number: {info8}") Console.WriteLine($"Serial number: {info9}") Console.WriteLine($"Serial number low: {info10}") Console.WriteLine($"Speaker volume on bylisten: {info14}") Dim hookAndPttInfo As Integer successful = PlathosysApiWrapper.Plathosys.ReadHookAndPTT(hookAndPttInfo) Console.WriteLine($"ReadHooAndPttInfo successful? {successful}") Console.WriteLine($"HookAndPttInfo: {Convert.ToString(hookAndPttInfo, 2).PadLeft(4, "0"c)}") Console.WriteLine($"HookOff? {(hookAndPttInfo And 1) <> 0}") isDeviceOpen = PlathosysApiWrapper.Plathosys.IsDeviceOpen() Console.WriteLine($"IsDeviceOpen: {isDeviceOpen}") successful = PlathosysApiWrapper.Plathosys.Closedevice() Console.WriteLine($"DeviceClosed successful? {successful}") isDeviceOpen = PlathosysApiWrapper.Plathosys.IsDeviceOpen() Console.WriteLine($"IsDeviceOpen: {isDeviceOpen}") ''Public Static extern bool Opendevice( ''Int VendorID, ''Int productID, ''out Int gotVendorID, ''out Int gotProductID, ''StringBuilder GotProductName, ''StringBuilder gotSerialNumber); 'Dim VendorID As Integer '= &H299D '&H299D ' ''Dim VendorID = 665 'Dim ProductID As Integer '= &H1 '0 'Dim GotVendorID As Integer 'Dim GotProductID As Integer 'Dim GotProductName As String = "" 'Dim gotSerialNumber As String = "" 'MsgBox(PlathosysApiWrapper.Plathosys.IsDeviceOpen()) 'If PlathosysApiWrapper.Plathosys.Opendevice(VendorID, ProductID, GotVendorID, GotProductID, GotProductName, gotSerialNumber) Then ' MsgBox(GotVendorID) ' MsgBox(GotProductID) 'Else ' MsgBox("No") 'End If ' Public Shared Function Opendevice(ByVal vendorID As Integer, ByVal productID As Integer, ByRef gotVendorID As Integer, ByRef gotProductID As Integer, ByVal gotProductName As StringBuilder, ByVal gotSerialNumber As StringBuilder) As Boolean Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try ' Catch ex As Exception ' MsgBox(ex.Message & ex.StackTrace) ' End Try End Sub Private Sub frmTapi_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing Try Dim isDeviceOpen = PlathosysApiWrapper.Plathosys.IsDeviceOpen() If isDeviceOpen Then Dim successful = PlathosysApiWrapper.Plathosys.Closedevice() Console.WriteLine($"DeviceClosed successful? {successful}") End If Catch ex As Exception End Try End Sub Dim STATE = "NOT PICKUP" Private Sub Timer_Tick(sender As Object, e As EventArgs) Handles Timer.Tick Dim isDeviceOpen = PlathosysApiWrapper.Plathosys.IsDeviceOpen() If isDeviceOpen Then Dim HookPttInfo = -1 Dim ReadHook = PlathosysApiWrapper.Plathosys.ReadHookAndPTT(HookPttInfo) ' Console.WriteLine($"ReadHook? {ReadHook}") ' Console.WriteLine($"HookPttInfo? {HookPttInfo}") 'Dim HookAndPTTState = PlathosysApiWrapper.Plathosys.InitHookAndPTTState() 'Console.WriteLine($"HookAndPTTState? {HookAndPTTState}") Select Case HookPttInfo Case "17" 'PICKUP If STATE <> "PICKUP" Then STATE = "PICKUP" ' --> ANRUF STARTEN picCallState.BackgroundImage = My.Resources._call 'picCallState.BackgroundImage = Nothing 'picCallState.Image = My.Resources._call lblCallState.Text = "Anruf wird gestartet..." Dim PhoneNumber As String = "800" '"00436644178557" ' Dim PhoneNumber As String = "147" 'makePhoneCall(PhoneNumber) endCall() makeVideoCallBRIA(PhoneNumber) End If Case Else If STATE = "PICKUP" Then STATE = "NOT PICKUP" ' --> ANRUF BEENDEN picCallState.BackgroundImage = My.Resources.PLATHOSYS 'picCallState.BackgroundImage = My.Resources.PLATHOSYS 'picCallState.Image = Nothing lblCallState.Text = "Bitte heben Sie den Höhrer ab, um den Anruf zu starten." 'CURRENTCALL.Disconnect(DISCONNECT_CODE.DC_NORMAL) endCall() 'briaAPI.Stop() ' MsgBox("PICKUP DOWN!!!") End If End Select Else 'NEU VERBINDEN openConnectionPLATHOSYS() End If End Sub Private Sub endCall() Try ' briaAPI. For Each phoneLine As PhoneLine In phoneLines If (phoneLine IsNot Nothing) Then MsgBox(phoneLine.Id) briaAPI.RequestEndCall(phoneLine.Id) End If Next Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try End Sub Private Sub frmTapi_Load(sender As Object, e As EventArgs) Handles Me.Load 'allFunc() Timer.Enabled = True 'SipLinphone() Try briaAPI = New Bria_API_CSharp_SampleApp.BriaAPI() briaAPI.Start() 'AddHandler briaAPI.OnCallStatus, AddressOf OnCallOptionsStatus(Me, aes As BriaAPI.CallOptionsStatusEventArgs) 'AddHandler briaAPI.OnCallStatus, AddressOf MainThread_OnCallStatus(New BriaAPI.CallStatusEventArgs) ' AddHandler briaAPI.OnCallOptionsStatus, AddressOf OnCallStatus AddHandler briaAPI.OnCallStatus, AddressOf OnCallStatus ' briaAPI.OnCallOptionsStatus += New EventHandler(Of BriaAPI.CallOptionsStatusEventArgs)(OnCallOptionsStatus) Catch ex As Exception End Try End Sub Private Delegate Sub OnCallStatusDelegate() ' As OnCallOptionsStatusDelegateEv Private Event OnCallStatusDelegateEv(ByVal args As BriaAPI.CallStatusEventArgs) 'Private Delegate Sub OnCallOptionsStatus() As OnCallOptionsStatusDelegate 'Private Event OnCallOptionsStatusDelegate(ByVal args As BriaAPI.CallStatusEventArgs) 'Private Delegate void OnCallOptionsStatusDelegate(BriaAPI.CallOptionsStatusEventArgs args); ' Private OnCallOptionsStatusDelegate onCallOptionsStatusDelegate; Private Sub OnCallStatus(ByVal sender As Object, ByVal args As BriaAPI.CallStatusEventArgs) Dim lineInUse As Boolean() = New Boolean(5) {} Dim callList As List(Of BriaAPI.[Call]) = args.CallList phoneLines = New PhoneLine(5) {} Dim cnt = 0 For Each [call] As BriaAPI.[Call] In callList Dim existingCall As Boolean = False Dim phoneLine As PhoneLine = Nothing Dim newPhoneLine As PhoneLine = New PhoneLine([call].CallId) phoneLines(cnt) = newPhoneLine phoneLine.HoldState = [call].HoldState For Each participant As BriaAPI.CallParticipant In [call].ParticipantList Dim remoteParty As RemoteParty = New RemoteParty() remoteParty.Number = participant.Number remoteParty.DisplayName = participant.DisplayName remoteParty.TimeInitiated = participant.TimeInitiated remoteParty.State = participant.CallState phoneLine.RemoteParties.Add(remoteParty) If (phoneLine.RemoteParties.Count = 1) AndAlso (remoteParty.State = BriaAPI.CallStates.Ringing) Then phoneLine.IsRinging = True Else phoneLine.IsRinging = False End If Next Next For i As Integer = 0 To 6 - 1 If lineInUse(i) = False Then phoneLines(i) = Nothing End If Next UpdateCallStates() End Sub Private Sub lblClose_Click(sender As Object, e As EventArgs) Handles lblClose.Click Me.Close() End Sub Private Sub lblClose_MouseHover(sender As Object, e As EventArgs) Handles lblClose.MouseHover lblClose.BackColor = Color.Red lblClose.ForeColor = Color.White End Sub Private Sub lblClose_MouseLeave(sender As Object, e As EventArgs) Handles lblClose.MouseLeave lblClose.BackColor = Panel2.BackColor lblClose.ForeColor = Panel2.BackColor End Sub 'Private Sub SurroundingSub() ' Dim callee As Address = Factory.Instance.CreateAddress("sip:janedoe@sip.example.org") ' Dim callParams As CallParams = Core.CreateCallParams(Nothing) ' callParams.MediaEncryption = MediaEncryption.SRTP ' callParams.VideoEnabled = True ' Dim [call] As [Call] = Core.InviteAddressWithParams(callee, callParams) ' [call].Listener.OnStateChanged += Function(ByVal delegateCall As [Call], ByVal state As CallState, ByVal message As String) ' Select Case state ' Case CallState.Connected ' loggingService.Message("Call is connected") ' Case Else ' loggingService.Message("Call is " & state.ToString()) ' End Select ' End Function 'End Sub 'Sub SipLinphone() ' Dim account As Account = New Account("0p6ou3lEGC", "WarT4jO5Us", "sip:verag.3cx.at") ' Dim phone As Phone = New Phone(account) ' AddHandler phone.PhoneConnectedEvent, Sub() ' Console.WriteLine("Phone connected. Calling...") ' ' phone.MakeCallAndRecord("phonenumber", "/tmp/filename.wav") ' phone.MakeCall("phonenumber") ' End Sub ' AddHandler phone.CallActiveEvent, Sub() ' Console.WriteLine("Answered. Call is active!") ' End Sub ' AddHandler phone.CallCompletedEvent, Sub() ' Console.WriteLine("Completed.") ' End Sub ' AddHandler phone.PhoneConnectedEvent, Sub() ' Console.WriteLine("Connected.") ' End Sub ' AddHandler phone.PhoneDisconnectedEvent, Sub() ' Console.WriteLine("Disonnected.") ' End Sub ' Console.WriteLine("Go....") ' phone.Connect() ' // connecting ' Console.WriteLine(phone.CurrentConnectState) ' 'phone.MakeCall("800") ' 'Console.ReadLine() ' 'phone.Disconnect() ' // terminate all calls And disconnect 'End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click End Sub Private Sub UpdateCallStates() 'Dim active1 As Boolean = UpdatePhoneLine(Me.PhoneLine1Status_Text, Me.PhoneLine1Hold_Button, Me.PhoneLine1Resume_Button, Me.PhoneLine1End_Button, phoneLines(0)) 'Dim active2 As Boolean = UpdatePhoneLine(Me.PhoneLine2Status_Text, Me.PhoneLine2Hold_Button, Me.PhoneLine2Resume_Button, Me.PhoneLine2End_Button, phoneLines(1)) 'Dim active3 As Boolean = UpdatePhoneLine(Me.PhoneLine3Status_Text, Me.PhoneLine3Hold_Button, Me.PhoneLine3Resume_Button, Me.PhoneLine3End_Button, phoneLines(2)) 'Dim active4 As Boolean = UpdatePhoneLine(Me.PhoneLine4Status_Text, Me.PhoneLine4Hold_Button, Me.PhoneLine4Resume_Button, Me.PhoneLine4End_Button, phoneLines(3)) 'Dim active5 As Boolean = UpdatePhoneLine(Me.PhoneLine5Status_Text, Me.PhoneLine5Hold_Button, Me.PhoneLine5Resume_Button, Me.PhoneLine5End_Button, phoneLines(4)) 'Dim active6 As Boolean = UpdatePhoneLine(Me.PhoneLine6Status_Text, Me.PhoneLine6Hold_Button, Me.PhoneLine6Resume_Button, Me.PhoneLine6End_Button, phoneLines(5)) 'm_IsActiveOnThePhone = active1 OrElse active2 OrElse active3 OrElse active4 OrElse active5 OrElse active6 'UpdatePhoneState() Me.Update() End Sub End Class