<script>
(function () {
let timeout;
const sendEndSessionMessage = () => {
window.voiceflow?.chat?.sendEvent({
type: 'text',
payload: { message: 'END_SESSION' }
});
};
const resetTimer = () => {
clearTimeout(timeout);
timeout = setTimeout(sendEndSessionMessage, 5 * 60 * 1000);
};
[
'mousemove',
'keydown',
'click',
'scroll',
'touchstart'
].forEach(evt => window.addEventListener(evt, resetTimer));
const chat = window.voiceflow?.chat;
if (chat?.on) {
chat.on('send', resetTimer);
chat.on('receive', resetTimer);
}
document.addEventListener('visibilitychange', () => {
if (document.hidden) sendEndSessionMessage();
else resetTimer();
});
window.addEventListener('beforeunload', sendEndSessionMessage);
window.addEventListener('pagehide', sendEndSessionMessage);
resetTimer();
})();
</script>