1

我试图摆脱使用带有包装器 skype4com 的桌面 Skype API。我看向 Microsoft Bot Framework 的方向。我使用 Microsoft Bot 连接器创建并注册了我的 Skype 机器人,如下所示:连接器入门 此外,我将我的机器人添加到了几个小组对话中。现在我的任务是向特定的群组对话写一条消息。为此,我需要获取机器人所在的群组对话列表。我想获取有关我的 Skype 机器人的所有群组对话的信息,例如对话 ID 和对话名称。我一直无法找到有关它的任何信息。有人知道如何获取 Microsoft Bot 的所有群组对话列表吗?

4

2 回答 2

1

当您的机器人被添加到对话中时,它会收到一条类型的消息conversationUpdate(请参阅页面)。您必须自己维护对话列表,拥有某种存储,遵循此消息类型发出的更改信号。

例子:

[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。此外,您需要进行过滤,以便仅在更新是关于将您的机器人添加到对话中时存储数据(而不是例如删除它)。

注意:这个例子只是为了让你开始。像上面列表这样的内存存储既不可扩展也不健壮。

于 2016-08-26T17:05:43.860 回答
0

目前,这在 Bot Framework SDK(或协议)中是不可枚举的。当机器人被添加到给定的对话时,系统假定机器人缓存了有关其所在的消息/组的信息。 在发布时获取群组信息

于 2016-09-05T08:11:18.560 回答