我使用这种结构定义了一个ThumbnailCard:
private static Attachment GetThumbnailCard()
{
var thumbnailCard= new ThumbnailCard
{
Title = "title",
Subtitle = "subtitle",
Text = "text",
Images = new List<CardImage>() { new CardImage(url: "http://example.com/image.jpg")},
Buttons = new List<CardAction>() { new CardAction(type: ActionTypes.ImBack, title: "Product 1", value: "Product 01") },
};
return thumbnailCard.ToAttachment();
}
一切正常,按钮显示&#34;产品1&#34;当用户使用你在聊天窗口中看到的按钮时,在这种情况下的价值内容&#34;产品01&#34;。
但我需要更多功能,因此我查看文档并找到cardAction
类的其他参数,例如text
和displayText
。
因此,当用户使用聊天按钮时,您将看到&#34;我想购买产品01&#34;,并且机器人将获得该产品的ID,以便它可以在数据库上进行检查。
我根据文档完成了这个:
new CardAction(type: ActionTypes.ImBack, title: "Product 1", value: "IdOfProduct01", text: "Product 01", displayText: "I Want to buy Product 01")
我正在接受这种方法的价值:
private async Task ReceivingButtonClick(IDialogContext context, IAwaitable<object> result)
{
var rpta = await result as Activity;
}
但是当我尝试访问rpta.value
时,它始终为空,聊天窗口仍显示value
而不是displayText
或text
有谁知道这个功能是否还没有,我使用的是Microsoft.Bot.Builder 3.13.1,我在模拟器上测试了这个,或者我可能会收到这个结果作为活动和我应该接收它作为其他东西。
提前感谢您的答案。
答案 0 :(得分:1)
这是BOT Framework中的当前行为。 ImBack类似于只输入一条消息,它会发回“&#39;值”中设置的内容。我猜你不想在用户点击产品按钮时向用户显示ID。您可以使用 ActionTypes.PostBack 作为类型,并将消息发送回BOT,但不会在聊天时显示。
试试这个:
new CardAction(type: ActionTypes.PostBack, title: "Product 1", value: "IdOfProduct01", text: "Product 01", displayText: "I Want to buy Product 01")
使用PostBack的问题是并非所有渠道都支持它。因此,请务必检查您正在实施机器人的频道。
答案 1 :(得分:0)
有没有人知道这个功能是否可用,我正在使用Microsoft.Bot.Builder 3.13.1,我在模拟器上测试这个,或者我可能会收到一个活动的结果,我应该接收它作为别的东西。
{3}}的displayText
和Text
属性是在v3 SDK中新添加的,问题是尚未修改CardAction
以支持这些属性。您可以参考directLine.ts的源代码来查看该问题。
我们的模拟器使用WebChat而DirectLineJS
使用WebChat
,因此DirectLine
会导致问题。
您可以在Github BotFramework-WebChat上提交问题,我们可以方便地监控此问题。谢谢。