如何获取所有可用的 Microsoft bot Skype 组
Posted
技术标签:
【中文标题】如何获取所有可用的 Microsoft bot Skype 组【英文标题】:How to get all available groups of Microsoft bot Skype 【发布时间】:2016-08-26 15:39:52 【问题描述】:我试图摆脱使用带有包装器 skype4com 的桌面 Skype API。我看向 Microsoft Bot Framework 的方向。我使用 Microsoft Bot 连接器创建并注册了我的 Skype 机器人,如下所示:Getting started with the Connector 我还将我的机器人添加到了几个小组对话中。现在我的任务是向特定的群组对话写一条消息。为此,我需要获取机器人所在的群组对话列表。我想获取有关我的 Skype 机器人的所有群组对话的信息,例如对话 ID 和对话名称。我一直无法找到有关它的任何信息。有人知道如何获取 Microsoft Bot 的所有群组对话列表吗?
【问题讨论】:
【参考方案1】:当您的机器人被添加到对话中时,它会收到conversationUpdate
类型的消息(请参阅this 页面)。您必须自己维护对话列表,并根据此消息类型发出的更改信号,拥有某种存储空间。
例子:
[BotAuthentication]
public class MessagesController : ApiController
private List<string> m_conversationIds;
public MessagesController()
m_conversationIds = new List<string>();
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
if (activity.Type != ActivityTypes.Message)
return await HandleSystemMessage(activity);
// ...
private async Task<HttpResponseMessage> HandleSystemMessage(Activity message)
if (message.Type == ActivityTypes.ConversationUpdate)
m_conversationIds.Add(message.Conversation.Id);
return Request.CreateResponse(HttpStatusCode.OK);
// ...
当然,您可能需要其他信息,而不仅仅是对话 ID。此外,您需要进行过滤,以便仅在更新是关于将您的机器人添加到对话中时存储数据(而不是例如删除它)。
注意:这个例子只是为了让你开始。像上面列表这样的内存存储既不可扩展也不健壮。
【讨论】:
感谢您的回答。我打算试试这个,但我认为这不是一个非常可靠的方法。关于添加的消息可能会被跳过或丢失。【参考方案2】:目前这在 Bot Framework SDK(或协议)中是不可枚举的。当机器人被添加到给定的对话中时,系统假定机器人缓存了有关其所在的消息/组的信息。 Get group info on launch
【讨论】:
以上是关于如何获取所有可用的 Microsoft bot Skype 组的主要内容,如果未能解决你的问题,请参考以下文章
如何获取系统上可用的所有 Microsoft 媒体基础转换 (MFT) 的列表
如何使用自适应卡操作从自适应卡获取用户响应。使用 Microsoft Bot Framework 从 MS Teams 频道提交操作?
在 microsoft bot 框架上使用 webchat 获取 403 Forbidden