Как включить бот для поиска в групповом чате Skype, в который он был добавлен ранее?
Я создаю бота с помощью Microsoft Bot Framework, который должен, при получении уведомления от CI-сервера, уведомлять о событиях сборки участников определенной группы чата в Skype.
Я не совсем понимаю, когда я добавил бота Skype в чат, он получил активность, которая, вероятно, позволила бы мне сохранить некоторый Id на этом этапе. Но так как мне нужно, чтобы бот был активным и публиковал сообщения, основанные на внешних раздражителях, мне нужно было бы постоянно знать ссылку на этот групповой чат, в том числе после повторного развертывания. Но после передислокации у меня нет ссылки на разговор.
Теоретически, какой бит данных, учитывая, что я сохраняю его во время добавления, позволил бы мне активно отправлять сообщения в любой данный момент времени?
1 ответ
Если это нормально, что все участники "присоединяются" к беседе, сначала написав боту, и если ваш бот принимает сообщения аналогичным способом 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);
}
}