#c# #botframework
#c# #botframework
Вопрос:
Есть ли способ настроить расположение моих вариантов внутри promptoptions? Я хочу преобразовать его в card. HeroCard или SuggestedCard. Есть ли какие-либо способы? Макет по умолчанию всегда карусельный.
Кроме того, если я добавлю пробел в свой текст, это изменит форму. 1-е изображение без пробелов, 2-е — с пробелами. посмотрите на разницу.
Спасибо!
var options = new PromptOptions()
{
Prompt = MessageFactory.Text("Please choose a location."),
RetryPrompt = MessageFactory.Text("Sorry, please choose a location from the list."),
Choices = ChoiceFactory.ToChoices(new List<string> { "Redmond", "Bellevue", "Seattle" }),
};
return await stepContext.PromptAsync("second", options, cancellationToken);
Ответ №1:
Вы можете создать новый ответ, добавить к нему вложение HeroCard с предлагаемыми действиями и добавить ответ в параметры запроса в качестве атрибута запроса. Смотрите фрагмент кода ниже.
private static async Task<DialogTurnResult> PromptForLocation(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
Activity reply = stepContext.Context.Activity.CreateReply();
var heroCard = new HeroCard
{
Title = "Please choose a location.",
Buttons = new List<CardAction> { new CardAction(ActionTypes.PostBack, "Redmond", value: "Redmond"),
new CardAction(ActionTypes.PostBack, "Bellevue", value: "Bellevue"),
new CardAction(ActionTypes.PostBack, "Seattle", value: "Seattle") },
};
reply.Attachments = new List<Attachment>() { heroCard.ToAttachment() };
var options = new PromptOptions()
{
Prompt = reply,
RetryPrompt = MessageFactory.Text("Sorry, please choose a location from the list.")
};
return await stepContext.PromptAsync("name", options, cancellationToken);
}
Надеюсь, это поможет!
Комментарии:
1. привет @tdurnford, я уже пробовал это, но когда я выбираю варианты, он продолжает возвращать запрос на повторную попытку. он никогда не переходит к следующему шагу.
2. Какой тип приглашения вы используете?
3. Выберите Prompt. должен ли я использовать другое приглашение?
4. Я бы рекомендовал использовать TextPrompt с пользовательским средством проверки. Если вы хотите использовать приглашение выбора, вам нужно либо включить свойство Choices в параметры приглашения, либо использовать пользовательский валидатор.