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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...