当Twilio电话被接听时获取通知
我正在开发一个使用Twilio的应用程序,想要在通过Twilio拨打的电话被接听时收到通知。我使用Python的API来拨打电话,代码如下:
call = client.calls.create(to=number,
from_="15555555555",
url=twiml_url,
status_callback=status_url)
这一切都运作得很好。当电话拨出时,我会收到一个POST请求到twiml_url,当电话结束时又会收到一个POST请求到status_url。在这两种情况下,我都会收到CallStatus,第一次的值是'ringing',第二次是'completed'
我看过API文档,知道它们说这是预期的行为。
我想知道是否有办法在其他CallStatus状态变化时也能收到类似的通知?根据Twilio的说法,以下都是CallStatus可能的值:
queued(排队中)、ringing(响铃中)、in-progress(进行中)、completed(已完成)、failed(失败)、busy(忙碌)或no-answer(无人接听)
感觉有这么多不同的CallStatus却没有提供相应的回调,实在有点没意思。
最终,我想要实现的是检测电话何时被接听。目前我能想到的唯一方法就是定期轮询,手动检查CallStatus是否发生了变化——这可真不太好。
1 个回答
1
大家好,我是Twilio的Ricky。我们在我们的API中增加了一个非常酷的新功能,叫做通话进展事件。这个功能允许开发者传递一系列关于通话的事件,比如响铃或通话完成等,来告诉他们希望收到哪些通知。我觉得这个功能可能会对某些使用场景有帮助,因为你可以通过这段代码告诉API,只在通话接通时通知你:
call = client.calls.create(
url="http://demo.twilio.com/docs/voice.xml",
to="+14155551212",
from_="+18668675309",
method="GET",
status_callback="https://www.myapp.com/events",
status_callback_method="POST",
status_events=["answered"],
)
如果你不是在用Python,文档中的这个例子可以让你了解如何在PHP、C#、Ruby、Node.js、Java中使用通话进展事件,或者如果你喜欢用命令行的话,也可以用curl命令。