Pregunta
Deseo modificar el comportamiento nativo del Web Widget (clásico) con las API de JavaScript. Leí el centro de ayuda y encontré muchas implementaciones diferentes. ¿Cómo puedo combinar estos flujos de trabajo de API del Web Widget (clásico)?
Respuesta
Aplique la configuración del widget en el momento preciso. Algunos flujos de trabajo deben ejecutarse después de una actualización del departamento, y otros deben ejecutarse cuando el widget se conecta o se vuelve a conectar por primera vez. Esto es importante porque el widget se puede cargar antes de que exista una sesión de chat, y un visitante puede volver a conectarse después de que se agote el tiempo de espera de una sesión o se actualice la página. Si el código se ejecuta solo una vez en la carga de la página, la sesión de chat activa podría perder algunas opciones de configuración, o el widget podría perderlas después de una reconexión.
En este ejemplo se muestra cómo configurar el departamento CRM. En este ejemplo, "CRM" es el nombre de un departamento de Chat que se configura en la configuración del widget de Chat (por ejemplo, un departamento utilizado por un equipo de ventas o de cuentas). Reemplace "CRM" con el nombre exacto del departamento de su cuenta.
<script id="ze-snippet"
src="https://static.zdassets.com/ekr/snippet.js?key=ACCOUNT_KEY"> </script>
<script>
// first hide the widget on page load
zE('webWidget', 'hide');
// whenever an unread message appears unhide and open the widget
zE('webWidget:on', 'chat:unreadMessages', function(number) {
zE('webWidget', 'show');
zE('webWidget', 'open');
});
// this callback runs whenever chat first connects (or reconnects)
zE('webWidget:on', 'chat:connected', function() {
// put any code you only want run once here
});
// this callback runs whenever a department status changes
zE('webWidget:on', 'chat:departmentStatus', function(dept) {
// only set the widget online for chat if this department was online
if (dept.name === 'CRM' && dept.status === 'online') {
// apply the chat widget settings
zE('webWidget', 'updateSettings', {
webWidget: {
chat: {
departments: {
enabled: [''],
select: 'CRM'
},
suppress: false
}
}
});
} else if (dept.name === 'CRM' && dept.status !== 'online') {
// or suppress chat (optional: apply contact form settings here)
zE('webWidget', 'updateSettings', {
webWidget: {
chat: {
suppress: true
}
}
});
}
});
</script>
Estos son dos puntos sobre el script. Puede omitir el ocultamiento inicial y el espectáculo subsiguiente en un mensaje sin leer sin cambiar el resto del script. Debido a que esas llamadas se ejecutan tan pronto como se carga el widget, el script las coloca en la parte superior. Son opcionales.
Algunos flujos de trabajo personalizados colocan un bloque de API de updateSettings en una devolución de llamada de chat:conectado, pero también se puede colocar en una devolución de llamada de chat:departamentoEstado. El widget lo aplica cuando se conecta por primera vez o después de una reconexión debido al tiempo máximo de inactividad de la sesión. Como regla general, vincule su flujo de trabajo al evento en el que la configuración debe surtir efecto:
- Use
chat:connectedpara la lógica que debe ejecutarse una vez por sesión de chat, como la configuración inicial que no debe repetirse después de cada actualización del estado del departamento. - Use
chat:departmentStatuspara la lógica que debe mantenerse sincronizada con la disponibilidad del departamento o los cambios de desvío, porque puede dispararse cuando cambia el estado del departamento y cuando se inicializa el widget.
Si desea más información sobre los distintos flujos de trabajo de la API del Web Widget (clásico), consulte:
- ¿Puedo configurar el Web Widget (clásico) para que presente Chat en mi página web solo cuando hay un departamento específico conectado?
- ¿Puedo volver a aplicar el departamento después de que un visitante de chat que ha agotado el tiempo de espera se vuelva a conectar?
- ¿Cómo puedo asegurarme de que el Formulario previo al chat se presente al visitante si se agota el tiempo de espera pero se vuelve a conectar?
Descargo de responsabilidad de la traducción: Este artículo ha sido traducido usando software de traducción automática para proporcionar una idea básica del contenido. Se han realizado esfuerzos razonables para proporcionar una traducción exacta, sin embargo, Zendesk no garantiza la exactitud de la traducción.
Si surge alguna pregunta relacionada con la exactitud de la información incluida en el artículo traducido, consulte la versión en inglés del artículo, que es la versión oficial.