回复消息并等待自适应卡片操作

时间:2018-10-23 22:49:59

标签: c# botframework microsoft-teams

Teams开发人员文档中的对话页面列出了我要实现的方案:

  

更新消息

     

您的机器人可以在发送消息后内联地动态更新消息,而不是让消息成为数据的静态快照。您可以将动态消息更新用于以下情况,例如轮询更新,在按下按钮后修改可用操作或任何其他异步状态更改。

在我的代码中,我创建一条消息并附加一个自适应卡。

var cardReply = activity.CreateReply();
cardReply.AddAdaptiveCard(card);

如果我使用PostAsync答复用户,那么我没有得到需要更新答复的ResponseResourceId

// PostAsync return Task, no ResourceResponse
await context.PostAsync(cardReply);

// OnDataItemInput is called when Action.Submit is triggered
context.Wait(this.OnDataItemInput);

如果相反,我回复了该活动,则不调用继续委托(context.Wait)。执行的延续是堆栈上的上一个对话框。

// OnDataItemInput is never called 
context.Wait(this.OnDataItemInput);

ConnectorClient connector = 
    new ConnectorClient(new Uri(activity.ServiceUrl));

var cardReplyResource = await connector
    .Conversations
    .ReplyToActivityAsync(cardReply);

如何发送包含输入项的AdaptiveCard,并让漫游器等待Action.Submit的响应?

1 个答案:

答案 0 :(得分:1)

您的机器人收到的由用户按下“提交”按钮生成的活动消息将带有replyToId字段-这是您要更新的消息的ID。

如果您需要将这些活动消息与其他活动消息区分开的方法,则可以为Action.Submit按钮提供id或使用其data字段-活动的value对象会告诉你的。