Как насчет расширения jquery для этого?
(function () {
var ev = new $.Event('remove'),
orig = $.fn.remove;
var evap = new $.Event('append'),
origap = $.fn.append;
$.fn.remove = function () {
$(this).trigger(ev);
return orig.apply(this, arguments);
}
$.fn.append = function () {
$(this).trigger(evap);
return origap.apply(this, arguments);
}
})();
$(document).on('append', function (e) { /*write your logic here*/ });
$(document).on('remove', function (e) { /*write your logic here*/ ) });
Jquery 1.9+ построил поддержку для этого (я слышал, что не тестировался).
MS Teams называет это «Упреждающее сообщение» (примечание: Bot Framework, как правило, определяет «упреждающее сообщение» как отправку пользователю сообщения, не связанного с текущим диалогом, на который у вас есть ссылка. Команды смешивают несколько вещей с этим категория). Вы можете прочитать больше о , как использовать проактивные сообщения из официальных документов Команд. Или, более конкретно, создание канала разговора .
Суть в том, что вам нужно захватить conversationUpdate
и проверить, не добавлен ли новый участник в диалог или , получить список команд , а затем вы . отправить проактивное сообщение .
Примечание. Для команд MS пользователь или команда должны сначала добавить бота:
Боты могут создавать новые разговоры с отдельным пользователем Microsoft Teams, если ваш бот получает информацию о пользователе. через предыдущее добавление в личном или командном объеме. Эта информация позволяет вашему боту заблаговременно уведомлять их. Например, если ваш бот был добавлен в команду, он может запросить список команды и отправить пользователям отдельные сообщения в личных чатах, или пользователь может @mention другой пользователь, чтобы заставить бота отправить этому пользователю прямое сообщение.
blockquote>Некоторые разработчики сталкиваются с
401: Unauthorized
ошибками при использовании проактивного обмена сообщениями, особенно если бот был перезапущен по какой-то причине, и бот пытается повторно инициировать проактивное сообщение. Вы можете прочитать больше о предотвращении этого , используяtrustServiceUrl
из этого образца (это моя ветвь, которая используется для отправки запроса на извлечение для обновления Проактивного образца с информациейtrustServiceUrl
). [1114 ]
Вы можете начать новый разговор, используя соединитель Client в Botframework V4 и Teams Extensions V4. В nodejs вы найдете решение в одном из комментариев для этого выпуска Github . Для тех, кто ищет решение в C # , , есть подробное сообщение в блоге о том, как выполнить это в C # версии бот-фреймворка.
в nodejs:
var conversationReference = TurnContext.getConversationReference(context.activity)
connectorClient = await createConnectorClient(context)
var conversationParameters = {
isGroup: true,
bot: conversationReference.bot,
channelData: (await teamsCtx.getTeamsChannelData()),
tenantId: teamsCtx.tenant.id,
activity: MessageFactory.text("Queue Summary Placeholder") as Activity
} as ConversationParameters
await connectorClient.conversations.createConversation(conversationParameters)
В C #
ConnectorClient _client = new ConnectorClient(new Uri(turnContext.Activity.ServiceUrl), await GetMicrosoftAppCredentialsAsync(turnContext), new HttpClient());
var channelData = turnContext.Activity.GetChannelData<TeamsChannelData>();
var conversationParameter = new ConversationParameters
{
Bot = turnContext.Activity.Recipient,
IsGroup = true,
ChannelData = channelData,
TenantId = channelData.Tenant.Id,
Activity = MessageFactory.Text(message)
};
var response = await _client.Conversations.CreateConversationAsync(conversationParameter);