Bot Framework v3 Dialog返回卡

时间:2016-07-15 04:04:01

标签: botframework

我正在挖掘机器人框架v3中的所有重要新东西。我要做的其中一件事是创建一个用卡片响应的对话框。但我找不到一个展示如何做到这一点的样本。

我已经尝试过自己动手但却没有多少运气。在大多数用于Dialogs的代码示例中,您将Post中获得的Activity对象强制转换为IMessageActivity类。然后当你回复时,你只用纯文本来做。所有带卡的示例都可以创建一个Activity类。但是因为我已将它转换为IMessageActivity,所以我无法使用CreateReply方法。如果我不能这样做那么当我创建一个Activity时,我得到一个错误,'activityId'不能为null。

非常感谢任何建议,想法或见解。

提前致谢!

1 个答案:

答案 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