API调用的事件处理程序

问题描述 投票:0回答:1

我们正在使用Zoiper Biz的旧版本,该版本使用的是旧api,而不是当前的zoiper api。我正在尝试在Access vba女士中编写一个处理程序,以便在zoiper响起时,该处理程序将提供呼叫者ID,然后该呼叫者ID可用于调用客户详细信息并以表格形式显示。

我遇到的问题是,告诉处理程序侦听API的OnLineStateEvent的更改。我可以使用API​​来从数据库进行调用,也可以使用API​​来应答该调用,但我只是找不到捕获调用方ID的方法。

API文档中与OnLineStateEvent相关的段落如下:

OnLineStateEvent-(行:整数;状态:TLineState;帐户名:字符串;格式:TCodecs; callerid:字符串; releasecause:整数)-线路状态当一行更改其状态并提供该行时,将触发事件状态,用于呼叫的帐户,用于呼叫的格式,如果新状态为lsDown,则显示callerid和释放原因。

TLineState如下:

TLineState-此枚举类型用于保存行状态常量之一,并且表示给定行的当前状态。它与信息一起使用事件,不能设置为一行。

⇒线路状态常量如下:•lsDown-线路上没有呼叫。还指示呼叫已结束。•lsDialing-线路正在拨号,但仍然没有有意义的状态。•lsActive-线路处于活动状态,即远端有语音活动(可能是IVR或某些服务器端响铃),但呼叫不回答。•lsRinging-线路上有来电。•lsWaitForAnswer-拨出电话在远端响铃。•lsUp-通话已打开,双方都互相听到。这是唯一的可以转移并保持的呼叫状态。•lsResolvingPort-解析STUN端口。

我试图编写一个名为Zoiper的类来处理线路状态事件。


Option Explicit
Public Event LineStatus(ByVal state As String, ByVal callerid As String)

Public Ring As String
Public ThisCallerID As String

Public Function MyEventHandler(state, callerid)
    If state = "IsRinging" Then
        ThisCallerID = callerid
    End If
    MyEventHandler = ThisCallerID
    RaiseEvent LineStatus(state, callerid)
End Function

调用函数如下:

Private Sub cmdAnswer_Click()
Stop
Set il = CreateObject("idefisk.IdefiskAPI")
Dim Listener As Zoiper
Set Listener = New Zoiper

With Listener
    .MyEventHandler(state, callerid) = il.OnLineStateEvent(state, callerid)
End With

If Listener.Ring = "IsRinging" Then
    Me.txtCallerNumber = Listener.ThisCallerID
End If

'il.answer 0

End Sub

cmdAnswer_click进入.MyEventHandler(state,callerid)= il.OnLineStateEvent(state,callerid)与对象不支持此属性或方法,我想这与il.OnLineStateEvent(state,callerid)有关。

il.Answer 0被重新发送,因为我不希望它在解决之前一直不接听电话。

我已经更改了很多行代码,以至于我不记得自己尝试过的内容和没有尝试过的内容。如果有人可以指出正确的方向,我将非常感激。

我们正在使用Zoiper Biz的旧版本,该版本使用的是旧api,而不是当前的zoiper api。我正在尝试在Access vba中编写一个处理程序,以便在zoiper响起时,该处理程序将提供呼叫者ID ...

api events access-vba handler
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.