Используйте Messenger SDK для отправки данных файла - PullRequest
8 голосов
/ 16 мая 2019

У меня есть 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 (добавив имя и дату) и попытался переместить местоположение - не работал
  • Я создал url из blob и попытался переместить его как URL ( не как filedata ) - и получил ошибку:

Недопустимый URL-адрес изображения в содержании сообщения

Когда я захожу на URL-адрес блоба из браузера, я вижу изображение = [

1 Ответ

5 голосов
/ 19 мая 2019

В разделе SDK об отправке вложений :

Существует три способа прикрепить ресурс к сообщению:

  • URL
  • Файл
  • attachment_id

attachment_id относится к ранее загруженным URL-адресам / вложенным файлам.Отправка необработанных данных файла не вариант.Вы должны либо загрузить изображение в URL, либо сохранить его в файл.URL-адреса BLOB-объектов не работают, поскольку они относятся только к данным, хранящимся в памяти локальной системы.Вам необходимо переместить эти данные в изображение или файл на сервере.

Загрузить изображение по URL-адресу

Первый вариант - загрузить изображение по URL-адресу.В зависимости от того, насколько приватным является содержимое изображения, вы можете использовать общедоступную службу размещения изображений, такую ​​как imgur, или вы можете загрузить изображение в общедоступное место на вашем сервере.Если вы хотите сохранить изображение скрытым, вы можете сохранить изображение по URL-адресу, содержащему случайно сгенерированный хеш, и удалить этот файл, как только вложение будет загружено в Messenger.Однако вы можете сохранить изображение полностью конфиденциальным со вторым параметром:

Загрузить изображение из (временного) файла

Второй вариант - загрузить изображение в соответствии с расположением файла.Загружая изображение в файл на вашем сервере, вы можете избежать того, что изображение станет общедоступным.Чтобы избежать заполнения серверного пространства, вы можете вручную удалить файл после загрузки вложения или использовать временный файл.Фактически, пример SDK для отправки файла демонстрирует отправку временного файла, сохраненного в папке /tmp.

...