我正在挖掘机器人框架v3中的所有重要新东西。我要做的其中一件事是创建一个用卡片响应的对话框。但我找不到一个展示如何做到这一点的样本。
我已经尝试过自己动手但却没有多少运气。在大多数用于Dialogs的代码示例中,您将Post中获得的Activity对象强制转换为IMessageActivity类。然后当你回复时,你只用纯文本来做。所有带卡的示例都可以创建一个Activity类。但是因为我已将它转换为IMessageActivity,所以我无法使用CreateReply方法。如果我不能这样做那么当我创建一个Activity时,我得到一个错误,'activityId'不能为null。
非常感谢任何建议,想法或见解。
提前致谢!
答案 0 :(得分:4)
我将此代码添加到对话框中:
protected override async Task MessageReceived(IDialogContext context, IAwaitable<IMessageActivity> item)
{
_message = (Activity)await item;
await base.MessageReceived(context, item);
}
[field: NonSerialized()]
private Activity _message;
[LuisIntent("Ping")]
public async Task Ping(IDialogContext context, LuisResult result)
{
Activity replyToConversation = _message.CreateReply("Should go to conversation, with a carousel");
replyToConversation.Recipient = _message.From;
replyToConversation.Type = "message";
replyToConversation.AttachmentLayout = "carousel";
.
.
.
await context.PostAsync(replyToConversation);
context.Wait(MessageReceived);
}
我让它在模拟器中工作但不在Skype中工作,但我想我的问题是这个Rich Card attachments are not showing on web chat or Skype