我使用 Bot Framework v4 ,并且尝试使用ChoicePrompt
作为菜单。
我正在尝试创建一个Choice
对象,并且看到它包含一个CardAction
对象。
因为CardAction
有更多选项,例如value
是object
类型而不是string
类型,所以我想使用它。
但是,即使我为CardAction
value
字段分配了一个值,也会出现错误,因为Choice
必须在其{{1 }},它是最后 获得的值。
那为什么value
包含一个Choice
对象?每个人的工作是什么?
答案 0 :(得分:1)
CardAction
对象实际上没有任何文档将CardAction
与ChoicePrompt
一起使用,因为ChoicePrompts
并不是真的“卑鄙”地用这种方式使用。有可能,但不是真正首选。
Here's the reference for the CardAction
Class:
DisplayText
获取或设置(可选)如果单击该按钮,则在聊天供稿中显示的文本
图片
获取或设置图片网址,该网址将显示在按钮上,文字标签旁边
文本
获取或设置此操作的文本
标题
获取或设置按钮上显示的文字说明
类型
获取或设置此按钮实现的操作类型。可能的值包括:“ openUrl”,“ imBack”,“ postBack”,“ playAudio”,“ playVideo”,“ showImage”,“ downloadFile”,“ signin”,“ call”,“ payment”,“ messageBack”。 More on ActionTypes
注意:ChoicePrompt需要一个imBack
ActivityType,因此使用其他类型可能会有一些奇怪的结果。
值
获取或设置操作的补充参数。此属性的内容取决于ActionType
给出CardAction
:
new Choice()
{
Action = new CardAction()
{
Type = "messageBack",
Value = "ACTION VALUE",
Title = "TITLE",
Text = "TEXT",
},
Value = "CARD VALUE",
});
这将产生:
单击时:
因此,Title
是按钮上显示的文本。 Text
是作为消息发送回机器人的文本。如果Value
中有CardAction
,它将作为活动的value
发送。
我也看到你submitted this question to GitHub。我将在这里重复答复。
问题不仅仅在于您不能为空Choice.Value
,还不如从Choice
中提取CardAction
并尝试确定最大长度要为“选择”显示的文本,ChoiceFactory
错误地查看了Choice.Value
,而它为空而不是查看了Choice.Action.Title
。在那里,请参见PR。