【问题标题】:I am unable to send an sms through Twilio tutorial code because of unknown error由于未知错误,我无法通过 Twilio 教程代码发送短信
【发布时间】:2021-02-09 15:04:21
【问题描述】:

所以我使用 Twilio 提供的示例代码向我的手机发送短信。使用示例代码时,我不断收到相同的错误,但我不确定错误是什么。我已经尝试通过这个网站搜索,看看是否有人有任何类似的错误我还按照 Twilio 一步一步的过程来设置和接收 SMS。所以我很困惑为什么会这样。我使用的任何资源都没有给我一个关于为什么会发生这种情况的答案。出于安全原因,我的电话号码已加注星标。

# Download the helper library from https://www.twilio.com/docs/python/install
import os
from twilio.rest import Client


# Your Account Sid and Auth Token from twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ['ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb']
auth_token = os.environ['REDACTED']
client = Client(account_sid, auth_token)

message = client.messages \
                .create(
                     body="What is up Med",
                     from_='+***********',
                     to='+***********'
                 )

print(message.sid)

以下错误:

Traceback (most recent call last):
File "/Users/administrator/Documents/Unit 5 Proj.py", line 8, in <module>
account_sid = os.environ['ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb']
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 679, in __getitem__
raise KeyError(key) from None
KeyError: 'ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb'

【问题讨论】:

  • 输入 account_sid 和 auth_token 时不需要使用 os.environ,因为您对实际 id 进行了硬编码。如果您使用变量名而不是实际数字,则只需将其添加为环境变量。
  • 是的,正如@SamanthaCruz 暗示的那样,您可能想要的是account_sid = 'ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb', and a similar thing for auth_token`。

标签: python twilio


【解决方案1】:

您在这里混淆了两个概念:

  1. 在您的代码中硬编码您的 Sid 和 Auth Token 值
  2. 从执行环境中提取您的 Sid 和 Auth Token 值。

你只想做其中一个或另一个,而不是两者。最直接的方法是只做#1,看起来像这样:

account_sid = 'ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb'
auth_token = 'REDACTED'

如果你想做#2,那么你需要在你运行程序的环境中定义两个导出的变量。看起来您使用的是 Mac,因此您可以在 ~/.bash_profile 文件中执行类似操作:

export TWILIO_SID=ACa30b8fa59e7eba0e6dc5dbedaf5e8fcb
export TWILIO_AUTH_TOKEN=REDACTED

然后在您的 Python 代码中执行此操作:

account_sid = os.environ['TWILIO_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']

更新:我要补充一点,#2 在生产代码中更受欢迎,因为它避免了您必须将敏感帐户凭据签入其他人将看到的共享源代码存储库。这就是增加复杂性的全部原因。如果您只是在闲逛或做个人项目,那么#1 可能没问题。如果您的代码会被其他人看到,请执行 #2 以保留您的凭据。

【讨论】:

    【解决方案2】:

    阅读您的错误!

    您对os.eviron[your-key] 的调用出现raise KeyError(key) from None KeyError 错误。谷歌搜索时,当您尝试从 os.eviron 的字典中访问缺少的键时,会发生此错误。您是否在env 变量中设置了密钥?如果您在代码中索引的键是您的 account_sid 和 auth_token,那么您肯定做错了

    【讨论】:

      猜你喜欢
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多