如何让bot找到以前添加的Skype群聊?

时间:2018-03-20 21:37:08

标签: botframework skype channel groupchat

我正在使用Microsoft Bot Framework创建一个机器人,当从CI服务器收到通知时,它应该通知Skype中特定聊天组的构建事件参与者。

我不太明白,当我将Skype机器人添加到聊天室时,它收到的活动可能会让我在那个阶段保存一些Id。但由于我需要机器人主动并根据外部刺激发布消息,我需要永久地知道对该群聊的引用,包括重新部署之后。但在重新部署之后,我没有对话参考。

理论上,考虑到我在添加时间内保存了多少数据,我可以在任何给定的时间点主动发送消息?

1 个答案:

答案 0 :(得分:2)

如果所有参与者都可以加入"通过首先写入机器人以及机器人是否接受类似Post方法的消息来进行对话

public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
    string rawActivity = JsonConvert.SerializeObject(activity);
    Save(rawActivity);
}

然后,您可以使用以下代码随时通过机器人向该对话发送消息。您可以在此期间重新启动甚至重新部署机器人。我已经测试了大约一周作为连续消息之间的最长时间。

public void MethodInvokedByExternalEvent(string externalMessage)
{
    var activity = JsonConvert.DeserializeObject<Activity>(GetStoredActivity());
    var replyActivity = activity.CreateReply(externalMessage);

    ResourceResponse reply = null;
    using (var client = new ConnectorClient(new Uri(activity.ServiceUrl)))
    {
        reply = client.Conversations.ReplyToActivity(replyActivity);
    }
}