Не могу использовать быстрые ответы Facebook - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу использовать быстрые ответы Facebook - сначала я попытался использовать свойство AdditionalActions IMessageActivity

IMessageActivity result = Activity.CreateMessageActivity();
result.Type = ActivityTypes.Message;
result.TextFormat = TextFormatTypes.Plain;
result.SuggestedActions = suggestedActions.Select(x => new CardAction()
                {
                    Title = x,
                    Type = ActionTypes.ImBack,
                    Value = x
                }).ToList()

, но, поскольку оно не работало для Facebook, я нашел другое решение на основе ChanelData

result.ChannelData = JObject.FromObject(new {
                quick_replies = suggestedActions.Actions.Select(x => new
                {
                    content_type = "text",
                    title = x.Title,
                    payload = x.Value is null ? x.Title : x.Value
                }).ToArray()
            });

к сожалению, это все еще не работает. Есть что-нибудь еще, чтобы сделать?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Я полагаю, вы можете использовать карты HeroC и прикрепить их к действию и отправить его через SendActivityAsyn c.

Activity activity = _context.Context.Activity.CreateReply();
        var buttonList = new List<CardAction>();

        foreach (var prompt in Prompts)
        {
            buttonList.Add(
                new CardAction { Value = prompt.DisplayText, Type = "imBack", Title = prompt.DisplayText, });
        }

        var heroCard = new HeroCard { Text = "message text", Subtitle = string.Empty, Buttons = buttonList };

        activity.Attachments.Add(heroCard.ToAttachment());

        await stepContext.Context.SendActivityAsync(activity).ConfigureAwait(false);
0 голосов
/ 02 апреля 2020

Попробуйте использовать TextPrompt с PromptOptions, например:

await stepContext.PromptAsync(nameof(TextPrompt), new PromptOptions
{
    Prompt = new Activity
    {
        Type = ActivityTypes.Message,
        Text = "¡Bien! Ahora te envié un código de acceso a tu teléfono. Por favor ingrésalo aquí cuando lo recibas.",
        SuggestedActions = new SuggestedActions()
        {
            Actions = new List<CardAction>()
            {
                new CardAction() { Title = "Reenviar token", Type = ActionTypes.ImBack, Value = "Reenviar token" }
            },
        },
    }
});

Результат:

enter image description here

Редактировать:

Если вы не хотите использовать подсказки, попробуйте следующее:

Activity activity = stepContext.Context.Activity.CreateReply();
activity.Type = ActivityTypes.Message;
activity.Text = "This is an example of SuggestedAction";
activity.SuggestedActions = new SuggestedActions()
{
    Actions = new List<CardAction>()
    {
    new CardAction() { Title = "Action", Type = ActionTypes.ImBack, Value = "Action" }
    }
};
await stepContext.Context.SendActivityAsync(activity);
return await stepContext.EndDialogAsync();

Результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...