我使用快速启动模板进行多设备对话,当参与者断开连接时,参与者更改事件处理程序(participantsChanged
(似乎不会被解雇。我希望为关闭浏览器窗口或失去互联网连接的参与者获得LeftConversation
,但似乎只有当参与者选择断开连接时,事件才会启动。
如果参与者通过单击"离开对话"按钮干净地离开对话,则SpeechSDK.ParticipantChangedReason.LeftConversation
事件将立即触发。
如果参与者通过其他方式离开对话,如关闭浏览器窗口或单击浏览器的后退按钮,则底层网络套接字中将立即触发"DisconnectSession"消息。这将在6分钟内提升为SpeechSDK.ParticipantChangedReason.LeftConversation
事件。websocket"DisconnectSession"消息当前未在Javascript SDK中作为SDK事件公开。
作为一种解决方法,一种可能性是更新Quickstart代码,为浏览器"beforeunload"或"unload"事件添加一个侦听器,该侦听器将代表参与者调用离开会话功能。
https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_eventhttps://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 ...