Я создаю чат-бота для Facebook с помощью NodeJS и с трудом пытаюсь отправить локальный файл через messeger через API Facebook, в соответствии с документацией для загрузки файла, необходимо сделать удаленный вызов, как в примере ниже:
curl \
-F 'message={"attachment":{"type":"image", "payload":{"is_reusable":true}}}' \
-F 'filedata=@/tmp/shirt.png;type=image/png' \
"https://graph.facebook.com/v2.6/me/message_attachments?access_token=<PAGE_ACCESS_TOKEN>"
На самом деле, используя этот пример, выполняется загрузка файла, и возвращается «attachment_id», чтобы я мог прикрепитьфайл в одно или несколько сообщений, однако я не могу загрузить его через свое приложение, я уже пытался по-разному структурировать файл на объекте, пытаясь указать путь, пытаться поместить поток файла и т. д.,но всегда возвращается следующая ошибка:
{
message: '(#100) Incorrect number of files uploaded. Must upload exactly one file.',
type: 'OAuthException',
code: 100,
error_subcode: 2018005,
fbtrace_id: 'XXXXXXXXXX',
{ recipient: { id: 'XXXXXXXXXX' },
message: { attachment: { type: 'file', payload: [Object] } },
filedata: '@pdf_exemple.pdf;type=application/pdf'
}
Я не эксперт по Node / JavaScript, поэтому возможно, что я делаю какую-то глупую ошибку ... В любом случае, ниже приведен фрагмент моего кода, ответственногодля сборки объекта и отправки его в фейсбук.Любая помощь приветствуется.
function callSendAPI(messageData) {
request({
url: 'https://graph.facebook.com/v2.6/me',
qs : { access_token: TOKEN },
method: 'POST',
json: messageData
}, function(error, response, body) {
if (error) {
console.log(error);
} else if (response.body.error) {
console.log(response.body.error);
}
})
}
function sendAttachment(recipientID) {
var messageData = {
recipient: {
id: recipientID
},
message: {
attachment: {
type: 'file',
payload: {
'is_reusable': true,
}
}
},
filedata: '@pdf_exemple.pdf;type=application/pdf'
};
callSendAPI(messageData);
}