Веб-просмотр средства выбора даты для бота Facebook Messenger - не может вернуть значение поля в поле ввода бота - PullRequest
0 голосов
/ 07 февраля 2019

Я работаю над чат-ботом с 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. Это также помогает закрыть веб-просмотр по нажатию кнопки «Отправить».

// Javascript Facebook Messener SDK

      (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, основанный на функции Subsub

 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. Но я не смог найти ничегоОн связан с python webhook.

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

  1. Учебное пособие
  2. Тема Stackoverflow: Данные Datepickerpass
  3. Руководство по просмотру веб-страниц
  4. Тема 2 Stackoverflow: И многие другие документы доступны.

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

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

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

...