Веб-просмотр средства выбора даты для бота Facebook Messenger - не может вернуть значение поля в поле ввода бота

Я работаю над чат-ботом с Dialogflow & Messenger. Веб-крючок был написан на Python 3.x. У меня проблема с тем, как снова перенести данные из веб-просмотра в окно чата мессенджера, чтобы продолжить разговор с пользователем.

Чат-мессенджер интегрирован с Dialogflow (v2). Я добавил кнопку для выбора даты пользователем. Когда пользователь нажимает кнопку, он перенаправляется на внешний веб-сайт, где я размещаю HTML-страницу для средства выбора даты.

Кнопка полезной нагрузки webhook содержит -> "messenger_extensions": "true

"attachment" : { 
                 "type" : "template",
                 "payload" : {
                      "template_type" : "button",
                               "text":"Click button and choose",
                               "buttons": [{
                                    "type": "web_url",
                                    "url": "https://datepicker.glitch.me",
                                    "title": "Choose Date",
                                    "webview_height_ratio": "tall",
                                    "messenger_extensions": "true"
                                }]
                            } 
                        }

Мой домен HTML успешно занесен в белый список (добавлен домен HTTPS на странице FB -> Настройки -> Платформа Messenger -> домен из белого списка).

Откроется HTML-страница веб-просмотра (для мобильных устройств -> всплывающее окно в качестве расширения чата, для ПК -> открытие веб-просмотра в новом окне браузера). Я могу выбрать даты.

При отправке Javascript получает входные значения в виде предупреждения. Также Facebook Messenger SDK интегрирован с HTML. Это также помогает закрыть веб-просмотр по нажатию кнопки "Отправить".

// Facebook Messener SDK Javascript

      (function(d, s, id){
      alert('Messenger Extension loaded');  // This alert is coming
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) {return;}
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.com/en_US/messenger.Extensions.js";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'Messenger'));

// Messenger SDK загрузка завершена

window.extAsyncInit = function() {
    // the Messenger Extensions JS SDK is done loading 
    alert('window extAsyncInit')  // This alert is coming
    MessengerExtensions.getUserID(function success(uids) {
            var psid = uids.psid;//This is your page scoped sender_id
            alert("Getting PSID") // This alert is NOT COMING
            alert("This is the user's psid " + psid); // Alert NOT COMING
        }, function error(err) {
            alert("Messenger Extension Error: " + err);
        });
};

// Это Javascript, основанный на функции SubSubmit

 function sendMessage() {
        alert($( "#from_field_id" ).val()) // This is coming
        alert($( "#to_field_id" ).val())   // This is coming
        /// DON't KNOW HOW TO RETURN DATA TO MESSENGER WINDOW         
        MessengerExtensions.requestCloseBrowser(function success() {
        // This works too
        }, function error(err) {

        });

        return $( "#from_field_id" ).val() //Not coming to messenger window
 };

У меня есть несколько связанных тем, но, к сожалению, все они связаны с node.js. Но я не смог найти ничего связанного с питоном webhook.

Я прошел тонну документации:

  1. Руководство
  2. Тема Stackru: передача данных Datepicker
  3. Руководство по веб-просмотру
  4. Тема 2 Stackru: И еще много доступных документов.

Ожидаемое: с закрытием окна веб-просмотра, выбранные пользователем даты должны быть перенесены в окно чата мессенджера, чтобы продолжить разговор. В противном случае данные не могут быть сохранены в базе данных.

Факт: пользователь может выбрать дату. При отправке JS выбирает значения из полей ввода и закрывает окно веб-просмотра. Данные не передаются в окно чата мессенджера.

Что я здесь не так делаю? Пожалуйста помоги.

0 ответов

В настоящее время в dialoglow нет обратного вызова для данных, передаваемых из веб-просмотров мессенджера. Обходной способ решения проблемы - получить доступ к psid пользователя с помощью Messenger SDK, использовать его для идентификации пользователя и затем сохранить данные json, которые вы получаете в sumbit, в своей базе данных.

Другие вопросы по тегам