ESP8266 微蟒 Twilio API

ESP8266 Micropython Twilio API

有没有人在 8266 上成功使用 Twilio 和 Micropython?我已经在 pyton3 中测试了以下内容,并且可以让它成功发送短信。但是,当我将它移植到 micropython(下方)时,消息失败。我回到 urequests 库,这是我失败的地方,看到它失败是因为它将数据作为字典传递(它在第 79 行失败)。我尝试将其更改为作为字符串传递,但数据似乎没有发送到 Twilio。

Python3 实施

import requests

account_sid = "sid"
auth_token = "token"
url = "https://api.twilio.com/2010-04-01/Accounts/" + account_sid + "/Messages.json"
data = {'From': '+18005551234', 'To': '+18005551234', 'Body': 'Text Message'}

try:
    resp = requests.post(url=url, data=data, auth=requests.auth.HTTPBasicAuth(account_sid, auth_token))
    print(resp.status_code)
except Exception as exc:
    print("\nException occured.")
    sys.print_exceptin(exc)

Micropython 实现

import urequests
import ubinascii

account_sid = "sid"
auth_token = "token"
url = "https://api.twilio.com/2010-04-01/Accounts/" + account_sid + "/Messages.json"
data = {'From': '+18005551234', 'To': '+18005551234', 'Body': 'Text Message'}
login = ubinascii.b2a_base64(account_sid.encode('utf8') + b':' + auth_token.encode('utf8'))
headers = {'Authorization': b'Basic ' + login, 'Content-Type': 'application/x-www-form-urlencoded', 'WWW - Authenticate': 'Basic realm = "Twilio API'}

try:
    resp = urequests.post(url=url, data=data, headers=headers)
    print(resp.status_code)
except Exception as exc:
    print("\nException occured.")
    sys.print_exceptin(exc)

编辑:所以它似乎在这里得到了回答:Sending SMS in twilio returns 21603 : A 'From' number is required,但即使修改了我的数据,我也无法让消息真正传输。我已将数据字段修改为 "To=%2B18005551234&From=%2B18005551234&Body=Test",但这似乎也失败了。

根据 Twilio 的出色支持,需要添加的一行是

login = login[:-1]

base64编码后的登录末尾有一个换行符,需要去掉。