Используя 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'))
Заголовки на самом деле также не нужны Кажется, библиотека запросов делает это автоматически.
Как уже упоминал @CBroe, путь на самом деле не имеет значения, так как в любом случае он просто читает двоичные данные.