Node.js 在Whatspp业务api的http post请求中,将文件作为二进制数据上传的正确方法是什么?
我正在尝试创建一种通过whatsapp以pdf格式向客户发送发票的功能。为此,我已经有了一份发票pdf,需要上传到whatsapp服务器上,并根据以下文件发送给我们的客户: 因为它需要二进制媒体数据, 我正在创建一个http post请求主体,如下所示:Node.js 在Whatspp业务api的http post请求中,将文件作为二进制数据上传的正确方法是什么?,node.js,http,post,file-upload,whatsapp,Node.js,Http,Post,File Upload,Whatsapp,我正在尝试创建一种通过whatsapp以pdf格式向客户发送发票的功能。为此,我已经有了一份发票pdf,需要上传到whatsapp服务器上,并根据以下文件发送给我们的客户: 因为它需要二进制媒体数据, 我正在创建一个http post请求主体,如下所示: let requestOptions = { method: method, url: "https://whatsapp-url" + '/v1/upload', body: Buffer.from
let requestOptions = {
method: method,
url: "https://whatsapp-url" + '/v1/upload',
body: Buffer.from(fs.readFileSync("path/test.pdf")),
json: true,
headers: {
authorization: bearerToken,
'content-type' : 'application/pdf'
}
};
作为对此的回应,我在回复正文中收到Whatsapp的媒体id,我使用该id向客户发送信息,如文件所示:
但是,唉!!收到的pdf文件已损坏且无法打开,此外,我还注意到,与我通过Whatsapp消息在客户端收到的pdf文件相比,我发送的pdf文件的大小要大得多
有谁能帮我解决一下我在创建上传请求正文时可能犯的错误,因为我怀疑这是我所有的问题。正如文档上所说,你不能这样做
您需要做的是(通过api)为文件创建一个唯一的url,并将其保存在您的终端。然后将该url发送到whatsApp 有两种方法可以通过链接或ID将文件发送给用户。链接可以是您自己的WhatsApp服务器链接,也可以是以提供商名称作为参数的外部链接 如果您随身携带该文件,则可以将该文件上载到WhatsApp business API服务器,并获得媒体ID作为回报。使用该媒体id创建链接,或仅使用该媒体id将文件发送给用户 下面是创建二进制文件的代码示例
const dataStream = fs.readFileSync(
`Your Path to file/File Name`,
null
);
let uploadFile = yield whatsAppMessage.uploadWhatsappMediaToUser(
bot, // We are using Bot kit to process message
'application/pdf', // mime type
dataStream, // Binary Data Stream to upload the file
file name //File name
);
function uploadWhatsappMediaToUser(bot, contentType, binaryData, filename) {
const options = {
method: 'POST',
uri: `Upload URL`,
headers: {
Authorization: `Bearer {auth_token}`,
'Content-Type': contentType,
'Content-Disposition': `attachment; filename=${filename}`,
},
rejectUnauthorized: false,
body: binaryData,
};
return rp(options);
}
在uploadFile变量中,您将收到需要解析以提取媒体ID的json对象。使用该媒体ID发送文件
以下是将文件作为邮件附件发送的代码
const fileDetails = {
mime_type: 'application/pdf', // MIME type
id: uploadFile.media[0].id, // Media ID
filename: fileName,
};
yield whatsAppMessage.sendWhatsappMediaMessageToUser(
bot, // Bot kit object
userId, //User mobile number
fileDetails // Above File object
);
这样,您就可以将文件发送给用户 您能否提供此“通过api创建唯一url”的源文档?