Bot Framework-为什么Choice持有CardAction,每个角色的作用是什么?

时间:2019-03-17 13:34:08

标签: c# botframework

我使用 Bot Framework v4 ,并且尝试使用ChoicePrompt作为菜单。

我正在尝试创建一个Choice对象,并且看到它包含一个CardAction对象。

因为CardAction有更多选项,例如valueobject类型而不是string类型,所以我想使用它。

但是,即使我为CardAction value字段分配了一个值,也会出现错误,因为Choice必须在其{{1 }},它是最后 获得的值。

那为什么value包含一个Choice对象?每个人的工作是什么?

1 个答案:

答案 0 :(得分:1)

CardAction对象

实际上没有任何文档将CardActionChoicePrompt一起使用,因为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",
    });

这将产生:

enter image description here

单击时:

enter image description here

因此,Title是按钮上显示的文本。 Text是作为消息发送回机器人的文本。如果Value中有CardAction,它将作为活动的value发送。

错误

我也看到你submitted this question to GitHub。我将在这里重复答复。

问题不仅仅在于您不能为空Choice.Value,还不如从Choice中提取CardAction并尝试确定最大长度要为“选择”显示的文本,ChoiceFactory错误地查看了Choice.Value,而它为空而不是查看了Choice.Action.Title。在那里,请参见PR