0

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

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

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

4

1 回答 1

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);
    }
}
于 2018-03-21T16:15:39.617 回答