有人能够捕获Twilio DialCallStatus吗?在许多Twilio在线文档中都提到了它,但我在调试python脚本时从未见过它。我只在以下request. values转储中看到CallStatus。
请求值〉〉〉CombinedMultiDict([不可变多字典([]),不可变多字典([('帐户ID','帐户xxxxxxx'),(“Api版本”,“2010-04- 01”),(“呼叫方”,“呼叫方”),('呼叫状态','进行中'),(“已呼叫”,“+1785xxxxxxx”),(“被叫城市”、“TOPEKA”),(“被叫国”,“美国”),(“被呼叫状态”、“KS”),(“被叫邮编”、"66603“),(“呼叫方”,“+1630xxxxxxx”),(“呼叫者城市”、“罗塞尔”),(“呼叫方国家”、“美国”),(“呼叫者状态”,“IL”),(“呼叫方邮编”、“60193”),(“数字”、“1”),(“方向”、“入站”),('按键完成',''),(“发件人”,“+1630xxxxxxx”),(“来自城市”,“罗塞尔”),(“来自国家”,“美国”),(“来自州”,“IL”),(“来自邮政编码”,“60193”),(“收件人”,“+1785xxxxxxx”),(“收件人城市”,“TOPEKA”),(“收件人国家”,“美国”),("收件人州“,”KS“),(”收件人邮政编码“," 66603”),(“邮件”,“收集结束”)]]]
实际上,我需要将一个未应答的来电转接到另一个电话号码,当回拨事件中报告“无应答”时,这似乎是一个很好的时机。然而,在这一点上,似乎呼叫流程已经结束,response.dial.number(“next-number”)不再工作。
以前有人这么做过吗?
#This is the route where the initial incoming call is answered
@app.route('/gather', methods=['GET', 'POST'])
def gather():
resp = VoiceResponse()
dial = Dial(timeout=30)
dial.number(
'+1-initial-called-number',
status_callback_event='initiated ringing answered completed busy failed no-answer canceled',
status_callback='https://my.ngrok.io/response',
status_callback_method='POST',
)
resp.append(dial)
return str(resp)
@app.route('/response', methods=['POST']) #This is the call back route
def outbound():
status=request.values.get('CallStatus', None)
resp = VoiceResponse()
if (status=='no-answer'):
resp.dial(timeout=20).number('+1-next-number')
return str(resp)
2条答案
按热度按时间yfjy0ee71#
是的,我收到一个DialCallStatus参数。这是在拨号完成并执行操作URL之后。下面是一些Twiml:
https:XXXXXX/API/twilio/voice/nobanswer端点在拨号完成时接收DialCallCstatus。示例中的Sip部分实际上并不重要-号码、客户端和会议操作也是如此。一旦Sip、号码、客户端或会议完成,拨号操作URL将被调用,并将具有该参数。文档说明这是拨号命令的终端状态。
我对Python不是很了解,但是您的示例代码似乎缺少Action url。Twilio for Python的示例代码位于"Specify an action URL and method"中
smtd7mpg2#
你把TwiML部分放进TwiML Bin了吗?你用Webhook了吗?我添加了action属性和一个“/nobanswer”路由,但是没有命中。我做错了什么吗?我会把更新后的代码作为答案发布,因为在这个评论框中发布代码不容易
这是应答初始传入呼叫的路由
@应用程序路径('/gather',方法=['GET','POST'])
def聚集():
@应用程序.路由('/noanswer',方法=['GET','POST'])
定义句柄_无应答():