我正在为我正在处理的联络中心应用程序设置一个“来电”网络挂钩,它基本上向来电者说了几句话(“欢迎来到x公司等......”),然后将它们添加到一个呼叫队列。
我能够为队列的'action'和'wait'事件添加更多的web-hook,让我检查队列中调用的进度,但是我很难找到一种方法来处理在进入队列之前挂断的呼叫。一个例子是,如果有人在系统说“欢迎来到x公司等......”时挂断电话。
我知道我可以自动将它们添加到队列中并在'wait url'web-hook中播放欢迎消息,但是这个消息会在循环中重复出现。
答案 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)