我有一个样式为ListStyle.heroCard
的ChoicePrompt
,如下所示:
import {ChoicePrompt, ListStyle} from 'botbuilder-dialogs';
import {PromptValidator} from 'botbuilder-dialogs/src/prompts/prompt';
import {FoundChoice} from 'botbuilder-dialogs/src/choices/findChoices';
export class HeroCardChoicePrompt extends ChoicePrompt{
constructor(dialogId: string, validator?: PromptValidator<FoundChoice>, defaultLocale?: string){
super(dialogId, validator, defaultLocale)
this.style = ListStyle.heroCard
}
}
然后我添加了这个choice对象:
choices.push({
action: {
text: 'Lolipop',
displayText: 'Lolipop',
channelData: 'Lolipop',
type: 'postBack',
title: 'Lolipop',
value: 'Lolipop',
},
value: 'Can you please help me to manage...',
synonyms: []
},)
当用户单击选项时,如何在代码中获得数据'Lolipop'
?
当我在机器人模拟器中检查客户机接收到的JSON对象时,我根本看不到数据'Lolipop'
。
发布于 2019-10-12 07:38:04
使用ListStyle.heroCard
使提示符使用ChoiceFactory.heroCard
生成卡片。您可以在source code中看到,ChoiceFactory.heroCard
不使用选项中的操作,而只是创建imBack
操作:
选择常量按钮: CardAction[] =choices.map(
=> ({标题: choice.value,类型: ActionTypes.ImBack,值: choice.value } as CardAction));
如果您想在提示符中提供自定义操作,那么您需要创建自己的英雄卡,并将其作为提示符选项的prompt
字段提供,然后使用ListStyle.none
。不清楚为什么要这样做,因为ChoiceFactory
生成的操作将匹配选择提示符中的可用选项,因此该活动没有必要具有隐藏值。
https://stackoverflow.com/questions/58332441
复制相似问题