我正在用facebook messenger API在nodejs中構建一個facebook bot。我試圖通過直接從heroku服務器本身上傳圖像文件(而不是通過URL)從機器人發送圖像,但它不起作用。如何在Node js中使用facebook messenger發送圖像API?
這是來自控制檯的錯誤日誌。
失敗調用發送API 400錯誤請求{消息:'(#100)不正確 上傳的文件數量。必須上傳正好一個文件 '類型: 'OAuthException',代碼:100,error_subcode:2018005,fbtrace_id: 'E32ogm/ofxd'}
的official facebook document只包含捲曲格式的一例和I'不知道如何將這個curl複製到節點格式中。
我已經測試過捲曲,它的工作就像一個魅力。
curl \ -F 'recipient={"id":"recipientId"}' \ -F 'message={"attachment":{"type":"image", "payload":{}}}' \ -F '[email protected]/pdf_img/sample.jpg;type=image/jpeg' \ "https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN"
這是我的節點執行,這似乎是有問題的,
//file_loc = __dirname+"/resource/pdf_img/sample.jpg"
function sendImageMessage(recipientId, file_loc){
let fs = require('fs');
var readStream = fs.createReadStream(file_loc);
var messageData = {
recipient : {
id : recipientId
},
message : {
attachment : {
type : "image",
payload :{}
}
},
filedata:readStream
}
callSendAPI(messageData);
}
function callSendAPI(messageData) {
request({
uri: "https://graph.facebook.com/v2.6/me/messages",
qs: {access_token: process.env.PAGE_ACCESS_TOKEN},
method: "POST",
json: messageData
}, function(error, response, body) {
if (!error && response.statusCode == 200) {
var recipientId = body.recipient_id;
var messageId = body.message_id;
if (messageId) {
console.log("Successfully sent message with id %s to recipient %s",
messageId, recipientId);
} else {
console.log("Successfully called Send API for recipient %s",
recipientId);
}
} else {
console.error("Failed calling Send API", response.statusCode, response.statusMessage, body.error);
}
});
}
請即固定捲曲到節點我節點的實現或翻譯任何幫助,將不勝感激。
一個問題是,你必須發送'message','filedata'和'recipient'的形式數據,而不是json。 – amuramoto