【问题标题】:Bot Framework- Why Choice hold CardAction, and what is the role of each?Bot Framework- 为什么 Choice 持有 CardAction,每个角色的作用是什么?
【发布时间】:2019-08-08 00:14:50
【问题描述】:

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

我正在尝试创建一个Choice 对象,我发现它包含一个CardAction 对象。

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

但是即使我为CardActionvalue 字段赋值,我也会得到一个错误,因为Choice 必须在其value 中获取一个值,也就是获得的值最后

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

【问题讨论】:

    标签: c# botframework


    【解决方案1】:

    CardAction对象

    实际上并没有任何关于将CardActionChoicePrompt 一起使用的文档,因为ChoicePrompts 并不是真的“打算”以这种方式使用。这是可能的,但不是真正的首选。

    Here's the reference for the CardAction Class

    显示文本
    获取或设置(可选)单击按钮时在聊天提要中显示的文本

    图片
    获取或设置将出现在按钮上、文本标签旁边的图像 URL

    文字
    获取或设置此操作的文本

    标题
    获取或设置显示在按钮上的文字描述

    类型
    获取或设置此按钮实现的操作类型。可能的值包括:“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,而是从CardAction 中提取Choices 并尝试确定要为选项显示的最大文本长度, ChoiceFactory 错误地查看了Choice.Value,而它为空而不是查看Choice.Action.Title。有关修复,请参阅PR

    【讨论】:

    • 我的问题是基于许多错误的假设。可能是因为该框架的部分文档和编写方式很奇怪。 (我的看法)
    • 没问题。这有点跑题了,但如果你想在 ChoicePrompts 中使用卡片,你可能需要阅读 one of my other SO answers
    • 我忘记了什么。你能解释一下TextTitle之间的区别吗?
    • 我已经用解释更新了我的答案。请参阅“标题与文本”
    • “ChoicePrompt 需要一个 messageBack ActivityType”,实际上对我不起作用,但 postBack 有效
    猜你喜欢
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多