我正在使用 Microsoft Bot Framework 创建一个机器人,该机器人应该在收到来自 CI 服务器的通知时,通知 Skype 中特定聊天组的构建事件参与者。
我不太明白,当我将 Skype 机器人添加到聊天中时,它收到了一个活动,大概可以让我在那个阶段保存一些 Id。但由于我需要机器人主动并根据外部刺激发布消息,因此我需要永久知道对该群聊的引用,包括在重新部署之后。但重新部署后,我没有对话参考。
理论上,考虑到我在添加时间保存了哪些数据,我可以在任何给定时间点主动发送消息?
我正在使用 Microsoft Bot Framework 创建一个机器人,该机器人应该在收到来自 CI 服务器的通知时,通知 Skype 中特定聊天组的构建事件参与者。
我不太明白,当我将 Skype 机器人添加到聊天中时,它收到了一个活动,大概可以让我在那个阶段保存一些 Id。但由于我需要机器人主动并根据外部刺激发布消息,因此我需要永久知道对该群聊的引用,包括在重新部署之后。但重新部署后,我没有对话参考。
理论上,考虑到我在添加时间保存了哪些数据,我可以在任何给定时间点主动发送消息?
如果所有参与者都可以通过首先写信给机器人来“加入”对话,并且如果你的机器人接受类似 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);
}
}