【发布时间】:2019-03-28 06:26:45
【问题描述】:
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 响应?
【问题讨论】:
-
我有几个问题。
AddAdaptiveCard()是你自己做的扩展方法吗?另外,你为什么在代码的开头而不是结尾调用context.Wait()? -
1.是的,但这只是 v4 SDK 的代码副本。这肯定是不是的问题。 2. 在哪里进行调用并不重要,因为它只是某种“标记”,告诉框架在它返回时调用什么委托。
-
所以您使用的是 V4 而不是 V3?
-
正确。 Microsoft.Bot.Builder 版本="3.16.1.38846" Microsoft.Bot.Connector 版本="3.16.1.38846" Microsoft.Bot.Connector.Teams 版本="0.9.0"
-
听起来像 V3 而不是 V4
标签: c# botframework microsoft-teams