Веб-просмотр Messenger для Botframework V4

#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.

Скриншот

Веб-просмотр расширения Messenger

Надеюсь, это поможет!

Комментарии:

1. Благодарю вас, сэр! Если это немного, знаете ли вы также, как отправлять и получать данные из webview в чат-бота?

2. Ответ на ваш последующий вопрос потребовал бы слишком много кода для комментариев и лучше подошел бы в качестве другого вопроса. Если вы откроете другую проблему, я взгляну на нее.