如何解决Twilio - 快速问题无法更新记录
希望你这些天做对了。
总结一下我的问题,我认为这不起作用,因为我使用的是免费的 Twilio 帐户而不是付费帐户。但这只是我的初学者理论。现在,问题:
我尝试了一个官方的 Twilio 教程(https://www.twilio.com/blog/automating-ngrok-python-twilio-applications-pyngrok,我分享了链接,以防有人觉得有趣或需要它),它允许我们通过使用客户端 (twilio) 和自动配置 SMS webhook (sms_url) pyngrok (ngrok)。
def start_ngrok():
from twilio.rest import Client
from pyngrok import ngrok
url = ngrok.connect(5000)
print(' * Tunnel URL:',url)
client = Client()
client.incoming_phone_numbers.list(
phone_number=os.environ.get('TWILIO_PHONE_NUMBER'))[0].update(
sms_url=url + '/bot')
我无法解释过去 4 天我尝试过的所有事情,但都没有成功。我不断收到同样的错误:
client.incoming_phone_numbers.list(phone_number=os.environ.get('TWILIO_PHONE_NUMBER'))[0].update(sms_url=url + '/bot')
IndexError: list index out of range
列表中的某些内容不起作用,尽管环境变量工作正常,但它还是空的。我将只使用一个电话号码,因此实际上不需要列表,所以我开始更改该行以避免出现不同的错误,结果是这样的:
def start_ngrok():
from twilio.rest import Client
from pyngrok import ngrok
url = ngrok.connect(5000)
print(' * Tunnel URL:',url)
client = Client()
client.incoming_phone_numbers("my_number").update(sms_url=str(url) + '/bot')
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/twilio/rest/api/v2010/account/incoming_phone_number/__init__.py",line 442,in update
payload = self._version.update(method='POST',uri=self._uri,data=data,)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/twilio/base/version.py",line 106,in update
raise self.exception(method,uri,response,'Unable to update record')
twilio.base.exceptions.TwilioRestException:
HTTP Error Your request was:
POST /Accounts/my_account_SID/IncomingPhoneNumbers/+my_number.json
Twilio returned the following information:
Unable to update record: The requested resource /2010-04-01/Accounts/my_account_SID/IncomingPhoneNumbers/+my_number.json was not found
More information may be available here:
https://www.twilio.com/docs/errors/20404
我尝试了所有不同的电话号码组合/格式:没有任何效果。
感谢您花时间阅读所有内容!
解决方法
看起来自从写博客后发生了一些变化或有错误。
尝试以下操作:
- 唯一的区别是将
.public_url
添加到 url 对象。还允许GET
到 /bot 进行测试。
from dotenv import load_dotenv
from flask import Flask,request
from twilio.twiml.messaging_response import MessagingResponse
load_dotenv()
app = Flask(__name__)
@app.route('/bot',methods=['POST','GET'])
def bot():
user = request.values.get('From','')
resp = MessagingResponse()
resp.message(f'Hello,{user},thank you for your message!')
return str(resp)
def start_ngrok():
from twilio.rest import Client
from pyngrok import ngrok
url = ngrok.connect(5000)
print('This is',url)
print(' * Tunnel URL:',url)
client = Client()
client.incoming_phone_numbers.list(
phone_number=os.environ.get('TWILIO_PHONE_NUMBER'))[0].update(
sms_url=url.public_url + '/bot')
if __name__ == '__main__':
if os.environ.get('WERKZEUG_RUN_MAIN') != 'true':
start_ngrok()
app.run(debug=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。