我的一个应用程序已经制作了一年多的Twilio REST API调用而没有任何问题。在过去的一周里,我现在一直都会遇到这个错误:
HTTP 400错误:{“message”:“SendDigits长度必须少于32个字符”,“状态”:400}
我的请求看起来像这样(一些信息被编辑): (method ='POST',uri ='https://api.twilio.com/2010-04-01/Accounts/xxxxxxxxxxxxxxxxxx/Calls.json',** kwargs = {'auth':('xxxxxxxxxxxxxxxx','xxxxxxxxxxxxx'),'data':{'From':'+ 1415DDDDDDD', 'SendDigits':'ww0w1234w16w6w415DDDDDD#w415DDDDDD#','To':'+ 1415DDDDDD','Url':'http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient'},'header':{'Accept':'application / json','Accept -Charset':'utf-8','Content-Type':'application / x-www-form-urlencoded','User-Agent':'twilio-python / 3.6.13(Python 2.7.6)'} })
好像SendDigits的最大长度最近有所改变,虽然我无法在任何地方找到这方面的文档。
我该如何解决这个问题?更改SendDigits的值对我来说不是一个真正的选择。
答案 0 :(得分:3)
来自Twilio的梅根在这里。
感谢您的反馈,对不起您遇到的麻烦,我很抱歉。
有一种解决方法,要在TwiML中使用<Play digits="">
而不是将其作为POST参数传递,这也应该能够达到相同的结果。有关使用<Play>
的示例,请查看:
https://www.twilio.com/docs/api/twiml/play#attributes-digits
Python中的一个例子(使用上面的字符串)看起来像是:
def play_digits():
r = twiml.Response()
r.play(digits="ww0w1234w16w6w415DDDDDDD#w415DDDDDDD#")
return str(r)
如果您觉得这很有用,请告诉我。
答案 1 :(得分:1)
来自Twilio的支持人员:
“我们在几天前推出了一项更改,将SendDigits的最大长度限制为32个字符。由于多种原因,我们必须实施此限制。”
<强>更新强> 解决了。这是我的Python代码:
call=client.calls.create(to=dial_number,from_="+14159999999",url="http://twimlets.com/echo?Twiml=%3CResponse%3E%0A%20%20%20%20%3CPlay%20digits%3D%22"+urllib.quote_plus(send_digits)+"%22%3E%3C%2FPlay%3E%0A%3C%2FResponse%3E")
其中send_digits
是您要发送的数字字符串(例如键盘输入)。在这种解决方法中,send_digits 可以超过32个字符。