繁体   English   中英

Facebook Messenger API 无法发送附件

[英]Facebook Messenger API can't send attachments

我正在尝试使用 Python 请求通过 Facebook API 发送附件,但我不断收到以下错误:

"message":"(#100) The parameter recipient is required"

我的代码是:

import requests

url = "https://graph.facebook.com/v6.0/me/messages?access_token=<API_TOKEN>"

headers = {
    'Content-Type': 'multipart/form-data;'
}
payload = {
    'recipient': {"id": user_id},
    'message': {
        "attachment": {
            "type": "image",
            "payload": {}
        }
    },
}
files = {
    'filedata': open('C:/Users/user-pc/Downloads/duck.jpg', 'rb')
}
response = requests.post(url, headers=headers, data=payload, files=files)

我的代码基于以下两个链接:

https://developers.facebook.com/docs/messenger-platform/send-messages/#file

https://developers.facebook.com/docs/messenger-platform/reference/attachment-upload-api/

注意:我确实设法使用 CURL 并通过 Postman 发送。

另一方面,是否可以仅使用附件的字节字符串发送附件? 那是不需要文件的实际路径,我将如何在服务器环境中执行此操作?

使用https://webhook.site/我正在检查我发送到 Facebook 的内容,我发现它实际上并没有正确处理我的字典中的键值对。 所以通过一些实验,我发现你需要使用元组,不完全确定为什么,如果有人能解释一下,将不胜感激。

import requests

url = "https://graph.facebook.com/v6.0/me/messages?access_token=<API_Key>"

payload = {
    'recipient': (None, {"id": user_id}),
    'message': (None, {"attachment": {"type": "image", "payload": {}}}),
}

files = {
    'filedata': ('duck', open('C:/Users/user-pc/Downloads/duck.jpg', 'rb'), 'image/jpg')
}

response = requests.post(url, data=payload, files=files)

print(response.text.encode('utf8'))

标题似乎也不是必需的,因为 Requests 库似乎会自动处理它。

正如@CBroe 提到的,路径并不重要,因为无论如何它只会读取二进制数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM