Я создаю систему событий, в которой чат-бот может использоваться для запуска задания во внешней системе. Как только задание получено внешней системой, она запускает то, что ей нужно для запуска, и затем уведомляет очередь в Azure о том, что задание завершено.
Далее у меня есть приложение-функция, которое просматривает эту очередь. Как только новая информация получена (содержит идентификатор, ConversationReferenceObject и ответ задания), она уведомляет бота через ProactiveMessage:
var conversationReference = JsonConvert.DeserializeObject<ConversationReference>(subscription.ConversationReference);
MicrosoftAppCredentials.TrustServiceUrl(conversationReference.ServiceUrl);
var client = new ConnectorClient(new Uri(conversationReference.ServiceUrl), new MicrosoftAppCredentials(appId, appPassword));
var result = conversationReference.GetPostToBotMessage().CreateReply($@"[ProactiveMessage] Your job response: {response.data}");
client.Conversations.ReplyToActivity((Activity)result);
Теперь, вместо того, чтобы публиковать этот ответ на активность бота, я хочу, чтобы чат-перехватчик перехватывал [ProactiveMessage]
, а затем отвечал бы пользователю, только если диалог в данный момент не активен - просто обычно правильно управлял потоком разговоров.
Теперь мне интересно, имеет ли client.Conversations
другую функцию, где я могу публиковать сообщения в чат-боте, а не отвечать на текущий разговор? Я немного застрял.