#c# #facebook #webview #botframework
#c# #Facebook #веб-просмотр #botframework
Вопрос:
Может ли кто-нибудь дать мне преимущество в использовании Facebook Messenger Webview? Я изучал это в течение нескольких дней, и у меня все еще нет ни малейшего представления о том, как это сделать. И как бы мне ни хотелось привести здесь код, теперь я знаю, с чего начать. Официальные документы мне не очень помогают, и я лучше всего учусь на собственном примере. Я использую C # Botframework V4 SDK.
Это просто веб-сайт, просматриваемый в messenger? Вам нужен существующий веб-сайт для этого?
Комментарии:
1. Вы пытаетесь использовать расширение messenger, которое отображает веб-страницу поверх диалога, или вы просто пытаетесь направить пользователя на веб-страницу в новом окне браузера?
2. Я пытаюсь выполнить первое. Для этого нужен существующий веб-сайт? Или вам нужно создать новый, специально разработанный для этого webview?
Ответ №1:
Facebook Webview, который находится над диалогом, требует веб-сайта, поддерживающего расширение Messenger. Вы можете либо найти веб-сайт, поддерживающий расширение, либо создать свой собственный и добавить расширение.
Настройка веб-сайта
Вы можете добавить расширение Messenger на свой сайт, добавив следующий вызов функции на свою веб-страницу.
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/messenger.Extensions.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'Messenger'));
window.extAsyncInit = function() {
// the Messenger Extensions JS SDK is done loading
};
Для получения более подробной информации ознакомьтесь с документацией Facebook Messenger по добавлению расширений Messenger.
Отправка шаблона с помощью Microsoft BotFramework
Существует несколько способов открыть расширение Messenger Webview с помощью Microsoft BotFramework, но самый простой вариант — использовать шаблон Facebook Button. Добавьте URL-адрес вашего сайта в шаблон кнопки и отправьте его пользователю, добавив шаблон к данным канала исходящего действия. Смотрите пример ниже.
var reply = turnContext.Activity.CreateReply();
var attachment = new
{
type = "template",
payload = new
{
template_type = "button",
text = "Sign up for our mailing list!",
buttons = new[]
{
new
{
type = "web_url",
url = "https://mybot.azurewebsites.net/",
title = "Sign Up!",
webview_height_ratio = "full",
messenger_extensions = true,
},
},
},
};
reply.ChannelData = JObject.FromObject(new { attachment });
await turnContext.SendActivityAsync(reply, cancellationToken);
Взгляните на документацию Messengers по шаблонам кнопок для получения более подробной информации. Обратите внимание, обязательно внесите в белый список все URL-адреса, которые вы используете в Facebook.
Скриншот
Надеюсь, это поможет!
Комментарии:
1. Благодарю вас, сэр! Если это немного, знаете ли вы также, как отправлять и получать данные из webview в чат-бота?
2. Ответ на ваш последующий вопрос потребовал бы слишком много кода для комментариев и лучше подошел бы в качестве другого вопроса. Если вы откроете другую проблему, я взгляну на нее.