当Twilio电话被接听时获取通知

1 投票
1 回答
1259 浏览
提问于 2025-04-17 06:53

我正在开发一个使用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命令。

撰写回答