FormFlow и предлагаемые действия

Я использую FormFlow с перечислениями для рендеринга некоторых вопросов, но кажется, что formflow отображает их в виде карты HeroCard с кнопками, я хотел бы, чтобы подсказки отображались как предлагаемые действия, чтобы показывать как быстрые ответы в FB, что было бы лучшим способом делать это? На данный момент я реализовал пользовательский подсказчик следующим образом, но хотел бы знать, есть ли лучший способ сделать это с атрибутами, поэтому мне не нужно писать собственный код.

private static async Task<FormPrompt> Prompter(IDialogContext context, FormPrompt prompt, JObject state, IField<JObject> field)
    {
        IMessageActivity promptMessage;

        // Handle buttons as quick replies when possible (FB only renders 11 quick replies)
        if (prompt.Buttons.Count > 0 && prompt.Buttons.Count <= 11)
        {
            // Build a standard prompt with suggested actions. 
            promptMessage = context.MakeMessage();
            promptMessage.Text = prompt.Prompt;
            var actions = prompt.Buttons.Select(button => new CardAction
                {
                    Type = ActionTypes.ImBack,
                    Title = button.Description,
                    Value = button.Description
                })
                .ToList();
            promptMessage.SuggestedActions = new SuggestedActions(actions: actions);
        }
        else
        {
            promptMessage = await Extensions.GetDefaultPrompter(context, prompt);
        }

        await context.PostAsync(promptMessage);
        return prompt;
    }

1 ответ

Решение

Если вы хотите эту функциональность, вам придется придерживаться своей реализации. Formflow старается быть как можно более абстрактным, и представление опций перечисления в виде Herocard с кнопками является лишь результатом этого. Это происходит потому, что почти все каналы поддерживают Herocards, и только Facebook поддерживает быстрые ответы.

Другие вопросы по тегам