我们正在使用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 ...