Twilio REST API HTTP 400错误:“SendDigits必须少于32个字符”

时间:2016-03-30 22:34:45

标签: twilio

我的一个应用程序已经制作了一年多的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的值对我来说不是一个真正的选择。

2 个答案:

答案 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个字符。