c# - Bot Framework - 为什么 Choice 持有 CardAction,每个角色的作用是什么?
问题描述
我使用Bot Framework v4,并尝试ChoicePrompt
用于菜单。
我正在尝试创建一个Choice
对象,我看到它包含一个CardAction
对象。
因为CardAction
有更多的选项,比如 avalue
是一个object
类型而不是一个string
类型,所以我想使用它。
但是即使我为该CardAction
value
字段分配了一个值,我也会得到一个错误,因为Choice
必须在它的 中获取一个值value
,这是最后获得的值。
那么为什么Choice
包含一个CardAction
对象呢?每个人的工作是什么?
解决方案
CardAction
目的
实际上并没有任何关于使用CardAction
a 的文档,ChoicePrompt
因为ChoicePrompts
并不是真的“打算”以这种方式使用。这是可能的,但不是真正的首选。
DisplayText
获取或设置(可选)单击按钮时在聊天提要中显示的文本
Image
获取或设置将出现在按钮上,文本标签旁边的图像 URL
Text
获取或设置此操作的文本
Title
获取或设置显示在按钮上的文本描述
Type
获取或设置此按钮实现的操作类型。可能的值包括:“openUrl”、“imBack”、“postBack”、“playAudio”、“playVideo”、“showImage”、“downloadFile”、“signin”、“call”、“payment”、“messageBack”。更多关于动作类型
注意:ChoicePrompt 需要一个imBack
ActivityType,因此使用其他类型可能会产生一些奇怪的结果。
Value
获取或设置动作的补充参数。该属性的内容取决于 ActionType
标题与文本
鉴于CardAction
:
new Choice()
{
Action = new CardAction()
{
Type = "messageBack",
Value = "ACTION VALUE",
Title = "TITLE",
Text = "TEXT",
},
Value = "CARD VALUE",
});
这将产生:
点击时:
所以,Title
是按钮上显示的文本。Text
是作为消息发送回机器人的文本。如果Value
存在于 中CardAction
,它将作为活动的value
.
错误
我看到你也向 GitHub 提交了这个问题。我将在这里复制响应。
问题不在于您不能有一个空值Choice.Value
,而是从 s 中提取Choice
sCardAction
并尝试确定要为 Choice 显示的文本的最大长度时,在它为空ChoiceFactory
时错误地查看Choice.Value
而不是查看Choice.Action.Title
. 有关修复,请参阅PR。
推荐阅读
- github - 如何使用 gh cli 通过调度触发 github 操作
- javascript - 是否可以将 CSS 选择器用于 textarea 值?
- cmake - 是否可以多个项目以相同的包名称导出目标?
- amazon-web-services - Network Load Balancer Listeners 和 VPC 连接关系
- c - 如何使用 c 中的解析器库获取 linux 中的 ipv6 dns 服务器列表
- python - 无法识别 Django 应用程序中的导入模块
- css - 如何在没有滚动条的 Tailwind 中创建可滚动元素
- c++ - 销毁树(析构函数)是否需要遍历通用树?
- android - 如何在android studio中仅加载安装在设备中的upi应用程序
- gremlin - gremlin shortestPath() with (ShortestPath.edges, Direction.OUT)