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
的响应?
答案 0 :(得分:1)
您的机器人收到的由用户按下“提交”按钮生成的活动消息将带有replyToId
字段-这是您要更新的消息的ID。
如果您需要将这些活动消息与其他活动消息区分开的方法,则可以为Action.Submit按钮提供id
或使用其data
字段-活动的value
对象会告诉你的。