如何获取所有可用的 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 框架获取用户时区

在 microsoft bot 框架上使用 webchat 获取 403 Forbidden

获取 403(禁止),Microsoft Bot 正在尝试进行 Web 客户端 - 下载数据调用

在 python-telegram-bot 中如何获取该组的所有参与者?