使用Messenger SDK发送文件数据

Hod*_*lom 8 javascript blob file facebook-messenger facebook-messenger-bot

我有一个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");
    }
Run Code Online (Sandbox Code Playgroud)

但是我得到一个错误:

Messenger Extensions unexpected error.
Run Code Online (Sandbox Code Playgroud)

希望得到帮助=]

编辑:

我发现这filedata是用来传输文件位置的(我没有)。

所以我尝试了其他解决方案:

  • 我从我的卡瓦酒创建blob,并试图将它传递的filedata- 没有工作
  • 我创建了一个blob文件(通过添加名称和日期)并尝试移动该位置- 无效
  • 我从中创建了一个urlblob并尝试将其作为url(而不是filedata)移动-并出现错误:

邮件内容中提供的图片网址无效

当我从浏览器转到Blob网址时,我看到了图像= [

FTh*_*son 5

根据SDK 关于发送附件部分

有三种将资产附加到消息的方法:

  • 网址
  • 文件
  • attachment_id

attachment_id指以前上传的URL /文件附件。发送原始文件数据不是一种选择。您必须将图像上传到URL或将其保存到文件。Blob URL不起作用,因为它们仅引用存储在本地系统内存中的数据。您需要将该数据移动到服务器上的图像或文件中。

将图片上传到网址

您的第一个选择是将图像上传到URL。根据图像内容的私密性,您可以使用诸如imgur之类的公共图像托管服务,也可以将图像上载到服务器上的公共位置。如果要隐藏图像,可以将图像保存在包含随机生成的哈希的URL上,并在附件上载到Messenger后立即删除该文件。但是,您可以使用第二个选项将图像完全保密:

从(临时)文件上传图像

您的第二个选择是根据文件位置上传图像。通过将图像上传到服务器上的文件,可以避免图像对公众可见。为了避免占用服务器空间,可以在附件上传后手动删除文件,也可以使用临时文件。实际上,SDK 发送文件示例演示了如何发送保存在/tmp文件夹中的临时文件。