Я работаю над чат-ботом с 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.
Я прошел тонну документации:
- Учебное пособие
- Тема Stackoverflow: Данные Datepickerpass
- Руководство по просмотру веб-страниц
- Тема 2 Stackoverflow: И многие другие документы доступны.
Ожидается: с закрытием окна веб-просмотра, выбранные пользователем даты должны быть перенесены в окно чата мессенджера, чтобы продолжить разговор.В противном случае данные не могут быть сохранены в базе данных.
Факт: Пользователь может выбрать дату.При отправке JS выбирает значения из полей ввода и закрывает окно веб-просмотра.Данные не передаются в окно чата мессенджера.
Что я здесь не так делаю?Пожалуйста, помогите.