Я реализую бота, который использует API отправки Facebook. Согласно documentation можно отправлять файлы с помощью запроса. Документация предлагает два метода: один отправляет URL-адрес в файл и другую загрузку файла. Я не хочу загружать файл и указывать ему URL-адрес, поскольку это библиотека с открытым исходным кодом, которая не хочет ничего воспринимать в реализации.Как отправить файл в API-интерфейс Facebook, используя запрос npm, без загрузки файла?
Я хочу загрузить файл напрямую. Документация для загрузки файла использует cURL
для примера и выглядит следующим образом:
curl \
-F recipient='{"id":"USER_ID"}' \
-F message='{"attachment":{"type":"file", "payload":{}}}' \
-F [email protected]/tmp/receipt.pdf \
"https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN"
Мой текущий взять то, что это должно выглядеть примерно так:
facebook_message.access_token = configuration.access_token;
var fileReaderStream = fs.createReadStream('./sampleData.json')
var formData = {
"recipient": JSON.stringify({
"id":message.channel
}),
"attachment": JSON.stringify({
"type":"file",
"payload":{}
}),
"filedata": fileReaderStream
}
request({
"method": 'POST',
"json": true,
"formData": formData,
"uri": 'https://graph.facebook.com/v2.6/me/messages?access_token=' + configuration.access_token
},
function(err, res, body) {
//***
});
Когда я запускаю это я получаю следующее ответ:
{
message: '(#100) Must send either message or state',
type: 'OAuthException',
code: 100,
error_subcode: 2018015,
fbtrace_id: '***'
}
Вы как пропустили что-то очень важное в своем вопросе: что именно не работает? вы его отлаживали? любая информация в обратном вызове? он вызван? «это мое решение, но оно не работает» слишком велико для stackoverflow. – luschn
Добавление этого в настоящее время. Спасибо. –