我正在使用Microsoft Bot Framework创建一个机器人,当从CI服务器收到通知时,它应该通知Skype中特定聊天组的构建事件参与者。
我不太明白,当我将Skype机器人添加到聊天室时,它收到的活动可能会让我在那个阶段保存一些Id。但由于我需要机器人主动并根据外部刺激发布消息,我需要永久地知道对该群聊的引用,包括重新部署之后。但在重新部署之后,我没有对话参考。
理论上,考虑到我在添加时间内保存了多少数据,我可以在任何给定的时间点主动发送消息?
答案 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);
}
}