Botframework 如何使bot能够查找以前添加到的Skype群组聊天?

Botframework 如何使bot能够查找以前添加到的Skype群组聊天?,botframework,skype,channel,groupchat,Botframework,Skype,Channel,Groupchat,我正在使用Microsoft bot Framework创建一个bot,当收到CI服务器的通知时,它应该通知Skype中特定聊天组的生成事件参与者 我不太明白,当我将Skype bot添加到聊天中时,它收到了一个活动,大概可以让我在那个阶段保存一些Id。但是,由于我需要bot是主动的,并且基于外部刺激发布消息,所以我需要永久地知道对该群组聊天的引用,包括在重新部署之后。但在重新部署后,我没有一个谈话参考 从理论上讲,如果我在添加时间内保存数据,那么什么样的数据位将使我能够在任何给定的时间点主动发

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

我不太明白,当我将Skype bot添加到聊天中时,它收到了一个活动,大概可以让我在那个阶段保存一些Id。但是,由于我需要bot是主动的,并且基于外部刺激发布消息,所以我需要永久地知道对该群组聊天的引用,包括在重新部署之后。但在重新部署后,我没有一个谈话参考


从理论上讲,如果我在添加时间内保存数据,那么什么样的数据位将使我能够在任何给定的时间点主动发送消息

如果所有参与者都可以通过先向bot写入来“加入”对话,并且bot也可以通过类似的Post方法接受消息,则

public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
    string rawActivity = JsonConvert.SerializeObject(activity);
    Save(rawActivity);
}
公共异步任务发布([FromBody]活动)
{
string rawActivity=JsonConvert.SerializeObject(活动);
保存(活动);
}
然后,您可以使用以下代码随时从bot向该对话发送消息。在此期间,您可以重新启动甚至重新部署bot。我已经测试了大约一周,作为连续消息之间的最长间隔时间

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);
    }
}
public void方法由externalevent调用(字符串externalMessage)
{
var activity=JsonConvert.DeserializeObject(GetStoredActivity());
var replyActivity=activity.CreateReply(externalMessage);
ResourceResponse reply=null;
使用(var client=newconnectorclient(新Uri(activity.ServiceUrl)))
{
reply=client.Conversations.ReplyToActivity(replyActivity);
}
}

如果所有参与者都可以通过先向bot写入来“加入”对话,并且bot也可以通过类似的Post方法接受消息,则

public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
    string rawActivity = JsonConvert.SerializeObject(activity);
    Save(rawActivity);
}
公共异步任务发布([FromBody]活动)
{
string rawActivity=JsonConvert.SerializeObject(活动);
保存(活动);
}
然后,您可以使用以下代码随时从bot向该对话发送消息。在此期间,您可以重新启动甚至重新部署bot。我已经测试了大约一周,作为连续消息之间的最长间隔时间

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);
    }
}
public void方法由externalevent调用(字符串externalMessage)
{
var activity=JsonConvert.DeserializeObject(GetStoredActivity());
var replyActivity=activity.CreateReply(externalMessage);
ResourceResponse reply=null;
使用(var client=newconnectorclient(新Uri(activity.ServiceUrl)))
{
reply=client.Conversations.ReplyToActivity(replyActivity);
}
}