是否有Twilio webhook通知我在排队前挂断的用户

时间:2017-10-31 10:29:43

标签: twilio webhooks twiml

我正在为我正在处理的联络中心应用程序设置一个“来电”网络挂钩,它基本上向来电者说了几句话(“欢迎来到x公司等......”),然后将它们添加到一个呼叫队列。

我能够为队列的'action'和'wait'事件添加更多的web-hook,让我检查队列中调用的进度,但是我很难找到一种方法来处理在进入队列之前挂断的呼叫。一个例子是,如果有人在系统说“欢迎来到x公司等......”时挂断电话。

我知道我可以自动将它们添加到队列中并在'wait url'web-hook中播放欢迎消息,但是这个消息会在循环中重复出现。

2 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

您可以获取来电的通话状态的webhook。您只需在电话号码中添加一个网址即可#34;呼叫状态更改"。

当呼叫完成后,您将获得一个webhook,允许您跟踪其进度。

或者,就像您说的那样,当waitUrl通话时,您可以将信息作为<Enqueue>的一部分播放。你不必重复它,你实际上可以return TwiML as the response to the waitUrl。 TwiML可以包含<Redirect>,因此您可以读出欢迎消息,然后重定向到音乐播放列表,然后循环播放,例如。

让我知道这是否有帮助。

答案 1 :(得分:0)

在我这边,更简单的编码为here的方式是使用while循环并查询twilio api以获取来自呼叫sid的呼叫状态

account_sid = os.environ.get('TWILIO_ACCOUNT_SID')
auth_token  = os.environ.get('TWILIO__AUTH_TOKEN')
client = Client(account_sid, auth_token)


while True:
    r = client.calls(sid).fetch()
    c = to_dict(r)
    print(f'{datetime.now().strftime("%Y%m%d_%H%M%S")} from={c["from"]} to={c["to"]}  status={c["status"]}')
    #       ts  .                    .                .

    stop = c["status"] not in ['queued', 'ringing', 'in-progress']  # stop by :completed
    if stop: break

    time.sleep(3)