在浏览器拨打电话时,如何以编程方式判断电话是否已接通?
我正在用Flask写一个网页客户端,并且集成了Twilio,这样我就可以通过浏览器打电话。现在一切都挺顺利的,大部分功能都在正常运作,但我想在电话接通时更新一些状态信息。
我发现connection.status()这个方法似乎没什么用,因为“open”这个状态表示电话正在尝试接通,而这个状态会一直保持为“open”,直到电话结束时才会变成“closed”。
有没有什么好的方法(无论是通过浏览器,还是通过在服务器上用Python代码注册一个回调)来获取电话从“响铃”到“接通”的状态更新呢?
1 个回答
3
关于外拨电话
twilio.js库中提到:
Twilio.Device is your main entry point for creating outbound connections, accepting incoming connections, and setting up your connection event handlers.
在设备的文档中,它接着说明了.status()方法:
Returns the status of the device.
这里的关键在于这段代码:
Twilio.Device.incoming(function(conn) {
console.log(conn.parameters.From);
conn.status // => "pending"
conn.accept();
conn.status // => "connecting"
});
现在要记住的是,Device.incoming是在你的浏览器发起外拨电话时使用的,具体说明如下:
The Device.incoming handler function is called when an incoming event is fired.
This is triggered whenever an incoming connection from an outbound REST call or a TwiML <Dial> to this device is made.
通过上面的代码,我能够检查到
conn.status
当连接正在转为开放状态时是“连接中”,而一旦接通外拨电话后则显示为“开放”。因此,我能够设置一个标志,并在外拨电话接通时记录下来。这是使用的TwiML:
<Response>
<Dial callerId="+1888XXXXXXX">
{{INSERT PHONE NUMBER HERE}}
</Dial>
</Response>
以下是设备规格和一般twilio.js库的文档链接:
http://www.twilio.com/docs/client/device
以及
http://www.twilio.com/docs/client/twilio-js
如果你还有其他问题,请告诉我!
谢谢你的时间,