使用TAPI 3.0获取呼叫者ID [英] Working with TAPI 3.0 to get caller id

查看:83
本文介绍了使用TAPI 3.0获取呼叫者ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么不起作用?我绝不是TAPI的专家(实际上不知道),但是我得到"TAPI INIT失败"的信息,但没有数字.从这里
[^ ]

Why won''t this work? I am not by any means an expert on TAPI (actually have no idea) but I get "TAPI INIT failed" and no number. Got this from here
[^]

Public Class Form1
    Dim WithEvents globalTAPI As namespace_tapi.vbtapi
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        globalTAPI.ShutDown()
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim localTAPI As New namespace_tapi.vbtapi
        Dim strTapiProvider As String
        strTapiProvider = localTAPI.Initialize()
        If strTapiProvider <> "Initializing failed" Then
            globalTAPI = localTAPI
        Else
            MsgBox("TAPI INIT failed")
        End If
        localTAPI = Nothing
    End Sub
    Private Sub globalTAPI_IncommingCall(ByVal strCallerID As Object) Handles globalTAPI.IncommingCall
        MsgBox(strCallerID)
    End Sub
End Class







Imports TAPI3Lib
Namespace namespace_tapi
    Public Class vbtapi
        Private WithEvents gobjTapi As TAPI3Lib.TAPI
        Private gobjAddress As ITAddress
        Private glngToken As Long
        Private Const MediaAudio As Integer = 8
        Private Const TAPI3_ALL_TAPI_EVENTS = TAPI_EVENT.TE_CALLNOTIFICATION
        Public Function Initialize() As String
            Dim TAPI As New TAPIClass
            Dim MediaTypes As Integer
            TAPI.Initialize()
            gobjTapi = TAPI
            TAPI = Nothing
            Dim AddressCollection As ITCollection = gobjTapi.Addresses()
            For Each Address As ITAddress In AddressCollection
                If Address.State = ADDRESS_STATE.AS_INSERVICE Then
                    ' next line just qualifies a specific TAPI provider
                    If Address.AddressName = "AVM TAPI Services for FRITZ!Box" Then
                        Dim MediaSupport As ITMediaSupport = Address
                        MediaTypes = MediaSupport.MediaTypes
                        MediaSupport = Nothing
                        If MediaTypes And MediaAudio = MediaAudio Then
                            gobjAddress = Address
                            Exit For
                        End If
                    End If
                End If
            Next
            If Not gobjAddress Is Nothing Then
                gobjTapi.EventFilter = TAPI3_ALL_TAPI_EVENTS
                glngToken = gobjTapi.RegisterCallNotifications(gobjAddress, True, True, MediaAudio, 1)
                Initialize = gobjAddress.AddressName
            Else
                Initialize = "Initializing failed"
            End If
        End Function
        Private Sub gobjTapi_Event(ByVal TapiEvent As TAPI3Lib.TAPI_EVENT, ByVal pEvent As Object) Handles gobjTapi.Event
            Select Case TapiEvent
                Case TAPI_EVENT.TE_CALLNOTIFICATION 'Call Notification Arrived
                    Dim CallNotificationEvent As ITCallNotificationEvent
                    CallNotificationEvent = CType(pEvent, ITCallNotificationEvent)
                    Debug.Print(CallNotificationEvent.Call.CallInfoString(CALLINFO_STRING.CIS_CALLERIDNUMBER))
                    RaiseEvent IncommingCall(CallNotificationEvent.Call.CallInfoString(CALLINFO_STRING.CIS_CALLERIDNUMBER))
            End Select
        End Sub
        Public Sub ShutDown()
            gobjTapi.UnregisterNotifications(glngToken)
            gobjAddress = Nothing
            glngToken = Nothing
            gobjTapi.Shutdown()
        End Sub
        Public Event IncommingCall(ByVal strCallerID)
    End Class
End Namespace

推荐答案

将用于FRITZ!Box的AVM TAPI服务"更改为您的调制解调器名称
change "AVM TAPI Services for FRITZ!Box" to the ur modem name


这篇关于使用TAPI 3.0获取呼叫者ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆