twilio Whatsapp 图片下载 - 401 错误

问题描述 投票:0回答:1

我正在通过沙箱测试免费试用 twilio<->whatsapp。

我可以在我的 Flask 服务器中很好地接收来自 Whatsapp 的短信。但是,当我从 Whatsapp 收到图像时,我得到一个 MediaUrl0,在获取该图像时,它会返回一个 401 错误 xml,其中包含 20003 twilio 错误代码。 MediaUrl0 本身是一个很长的 api.twilio.com url。

我认为传入图像不需要身份验证,并且 Whatsapp 图像 url 是公共 aws url?无论如何,即使我尝试设置 client = Client(testing_account_sid,testing_auth_token),它也不起作用。

知道我做错了什么吗

谢谢 火神

python twilio whatsapp twilio-api
1个回答
0
投票

更新:您可能需要使用基本身份验证,具体取决于您创建帐户的时间

这不是必需的,但也许您发送了错误的请求。尝试运行这个片段:

import os
import requests    # ← new import
from dotenv import load_dotenv
from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse

load_dotenv()

app = Flask(__name__)

def respond(message):
    response = MessagingResponse()
    response.message(message)
    return str(response)

@app.route('/message', methods=['POST'])
def reply():
    sender = request.form.get('From')
    message = request.form.get('Body')
    media_url = request.form.get('MediaUrl0')
    print(f'{sender} sent {message}')
    if media_url:
        r = requests.get(media_url)
        content_type = r.headers['Content-Type']
        username = sender.split(':')[1]  # remove the whatsapp: prefix from the number
        if content_type == 'image/jpeg':
            filename = f'uploads/{username}/{message}.jpg'
        elif content_type == 'image/png':
            filename = f'uploads/{username}/{message}.png'
        elif content_type == 'image/gif':
            filename = f'uploads/{username}/{message}.gif'
        else:
            filename = None
        if filename:
            if not os.path.exists(f'uploads/{username}'):
                os.mkdir(f'uploads/{username}')
            with open(filename, 'wb') as f:
                f.write(r.content)
            return respond('Thank you! Your image was received.')
        else:
            return respond('The file that you submitted is not a supported image type.')
    else:
        return respond('Please send an image!')

欲了解更多详情,请查看这篇文章

© www.soinside.com 2019 - 2024. All rights reserved.