Я использую шаблон быстрого запуска для разговоров с несколькими устройствами, и кажется, что обработчик события смены участника (participantsChanged
) не срабатывает, когда участник отключается. Я ожидаю получить LeftConversation
для участника, который закрывает окно своего браузера или теряет подключение к Интернету, но похоже, что событие запускается только тогда, когда участник решает отключиться.
Событие LeftConversation для отключенных участников
Ответы (1)
Событие SpeechSDK.ParticipantChangedReason.LeftConversation
будет запущено немедленно, если участник чисто покинет беседу, нажав кнопку «Покинуть беседу».
Если участник покидает беседу другим способом, например, закрыв окно браузера или нажав кнопку «Назад» в браузере, в базовом веб-сокете будет немедленно запущено сообщение DisconnectSession. Это событие будет повышено до уровня SpeechSDK.ParticipantChangedReason.LeftConversation
в течение 6 минут. Сообщение веб-сокета DisconnectSession в настоящее время не отображается как событие SDK в Javascript SDK.
В качестве обходного пути можно обновить код быстрого запуска, чтобы добавить прослушиватель для события браузера «до выгрузки» или «выгрузки», которое будет вызывать функцию выхода из беседы от имени участника.
https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event
образец кода:
document.addEventListener("DOMContentLoaded", function () {
// ... existing variable declarations
window.addEventListener('beforeunload', (event) => {
// Call LeaveConversation on the participant's behalf
handleLeaveConversation();
// Cancel the event as stated by the standard.
event.preventDefault();
// Chrome requires returnValue to be set.
event.returnValue = '';
});
// existing code ...