我有一个webview
从messenger bot
打开。
我要从webview
发送图像数据到对话中( 没有URL -来自画布的数据)
我尝试将Messenger SDK
beginShareFlow 与文件数据附件一起使用:
function uploadImage(data) {
let message = {
"attachment": {
"type": "image",
"payload": {
"is_reusable": true
},
"filedata": data
}
};
MessengerExtensions.beginShareFlow(function (share_response) {
// User dismissed without error
if (share_response.is_sent) {
// The user actually did share.
//close the webview
MessengerExtensions.requestCloseBrowser(function success() {
// webview closed
}, function error(err) {
console.log(err);
});
}
},
function (errorCode, errorMessage) {
// An error occurred in the process
console.log(errorMessage);
},
message, "current_thread");
}
但是我得到一个错误:
Messenger Extensions unexpected error.
希望获得帮助=]
编辑:
我发现filedata
用于传输文件位置(我没有)。
所以我尝试了其他解决方案:
blob
箱创建的,并试图在filedata
中传递它-没有用 blob
文件(通过添加名称和日期)并尝试移动了位置-没用 blob
创建了一个 url ,并尝试将其作为url( 不是文件数据 )移动-并获得了错误:邮件内容中提供的图片网址无效
当我从浏览器转到Blob网址时,我看到的图像= [
答案 0 :(得分:5)
根据SDK的section on sending attachments:
有三种方法可以将资产附加到邮件中:
- URL
- 文件
- attachment_id
attachment_id
是指以前上传的URL /文件附件。发送原始文件数据不是一种选择。您必须将图像上传到URL或将其保存到文件。 Blob URL不起作用,因为它们仅引用存储在本地系统内存中的数据。您需要将该数据移动到服务器上的图像或文件中。
您的第一个选择是将图像上传到URL。根据图像内容的私密性,您可以使用诸如imgur之类的公共图像托管服务,也可以将图像上载到服务器上的公共位置。如果要隐藏图像,可以将图像保存在包含随机生成的哈希的URL上,并在附件上载到Messenger后立即删除该文件。但是,您可以使用第二个选项将图像完全保密:
您的第二个选择是根据文件位置上传图像。通过将图像上传到服务器上的文件,可以避免图像对公众可见。为避免占用服务器空间,可以在附件上传后手动删除文件,也可以使用临时文件。实际上,SDK的example for sending a file演示了如何发送保存在/tmp
文件夹中的临时文件。