Bot Framework v4 Загрузка веб-просмотра Facebook - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь выяснить, как заставить MS Bot Framework v4 работать с веб-представлением Facebook.В настоящее время во всем Интернете нет ничего о том, как заставить это работать.Есть несколько примеров, как этот , показывающих, как он может работать с BF v3.

Что я не могу понять, так это то, как это работает с HeroCard s и CardActions в v4.

Из документации видно, что для этого типа функции потребуется ActionTypes, включающий значение для web_url, которое перечисление полностью пропускает.Предполагая, что эта функция не поддерживается в BF v4.

В настоящее время я портирую Bot Bot PHP на MS Bot Framework, хотя кажется, что это очень тривиально сделать в Botman простым вызовом enableExtensions() на кнопке.element.

Я перепробовал слишком много подходов, чтобы перечислить здесь, но текущая попытка выглядит следующим образом:

var viewButton = new CardAction(
    "web_url", 
    "View Details", 
    null, 
    "",
    "",
    "https://myurl",
    JObject.FromObject(new { messenger_extensions = true }));

Я прошел все процессы внесения в белый список доменов, поэтому я уверенэто все готово к работе, однако, с моими текущими попытками на месте Messenger только ошибки, поскольку кажется, что Favebook не нравится JSON, который производит Bot Framework.

Я также пытался подклассифицировать класс CardActionнапример:

public class WebViewCardAction : CardAction
{
    public WebViewCardAction(string displayText, string url)
    {
        Type = "web_url";
        Url = url;
        Title = displayText;
        MessengerExtensions = true;
        WebviewHeightRatio = "compact";
    }

    [JsonProperty(PropertyName = "url")]
    public string Url { get; set; }

    [JsonProperty(PropertyName = "webview_height_ratio")]
    public string WebviewHeightRatio { get; set; }

    [JsonProperty(PropertyName = "messenger_extensions")]
    public bool MessengerExtensions { get; set; }
}

, который при просмотре JSON в эмуляторе Bot Framework создает JSON, например:

{
    "messenger_extensions": true,
    "title": "View Details",
    "type": "web_url",
    "url": "https://myurl",
    "webview_height_ratio": "compact"
}

, что, похоже, согласуется с тем, что я могу найти в примерахдля мессенджера FB.Но с этим на месте ошибки мессенджера FB, даже не отображая HeroCard.

Кто-нибудь получил это работает?

Есть ли примеры в Интернете, чтобы посмотреть?

1 Ответ

0 голосов
/ 29 декабря 2018

Поскольку схема действий не изменилась, пример, который вы связали, также работает в V4:

private async Task TestFacebookWebview(ITurnContext turnContext,
    CancellationToken cancellationToken)
{
    var reply = turnContext.Activity.CreateReply();

    var attachment = new
    {
        type = "template",
        payload = new
        {
            template_type = "button",
            text = "Your ? is on it's way!",
            buttons = new[]
            {
                new
                {
                    type = "web_url",
                    url = "https://mybot.azurewebsites.net/",
                    title = "See on map",
                    webview_height_ratio = "compact",
                    messenger_extensions = true,
                },
            },
        },
    };

    reply.ChannelData = JObject.FromObject(new { attachment });

    await turnContext.SendActivityAsync(reply, cancellationToken);
}

Как видите, нет необходимости в картах героев или действиях с картами.В этом примере Facebook webview вызывается с помощью шаблона кнопки , который передается через ChannelData, который представляет собой метаданные в действии, характерном для канала.Messenger считывает эти данные и создает для вас нечто, похожее на карту.

Убедитесь, что вы добавили в белый список свой домен , чтобы это работало.

...