在浏览器拨打电话时,如何以编程方式判断电话是否已接通?

6 投票
1 回答
1380 浏览
提问于 2025-04-18 10:39

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

如果你还有其他问题,请告诉我!

谢谢你的时间,

撰写回答