Domanda
Voglio modificare il comportamento nativo del Web Widget (versione classica) con le API JavaScript. Ho letto il Centro assistenza e ho trovato molte implementazioni diverse. Come posso combinare questi workflow API Web Widget (versione classica) ?
Risposta
Applica le impostazioni del widget al momento giusto. Alcuni workflow devono essere eseguiti dopo un aggiornamento del reparto, mentre altri devono essere eseguiti quando il widget si collega o si riconnette per la prima volta. Ciò è importante perché il widget può essere caricato prima che esista una sessione di chat e un visitatore può riconnettersi dopo un timeout di sessione o un aggiornamento della pagina. Se il codice viene eseguito una sola volta al caricamento della pagina, è possibile che nella sessione di chat attiva siano mancate alcune impostazioni oppure il widget potrebbe perderle dopo una riconnessione.
Questo esempio mostra come impostare il reparto CRM . In questo esempio, "CRM" è il nome di un reparto Chat configurato nelle impostazioni del widget Chat (ad esempio, un reparto usato da un team commerciale o account). Sostituisci "CRM" con il nome esatto del reparto nel tuo account.
<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>
Ecco due punti sullo script. Puoi omettere il nascondiglio iniziale e la visualizzazione successiva in un messaggio non letto senza modificare il resto dello script. Poiché tali chiamate vengono eseguite non appena il widget viene caricato, lo script le posiziona in alto. Sono facoltativi.
Alcuni workflow personalizzati inseriscono un updateSettings Blocco API in una richiamata chat:connected , ma puoi anche inserirlo in una richiamata chat:departmentStatus . Il widget lo applica quando si connette per la prima volta o dopo una riconnessione a causa di un timeout di sessione. Di norma, lega il workflow all’evento in cui l’impostazione deve avere effetto:
- Usa
chat:connectedper la logica che deve essere eseguita una volta per sessione di chat, come la configurazione iniziale che non deve essere ripetuta dopo ogni aggiornamento dello stato del reparto. - Usa
chat:departmentStatusper la logica che deve rimanere sincronizzata con la disponibilità del reparto o le modifiche all’indirizzamento, perché può attivarsi quando lo stato del reparto cambia e quando il widget viene inizializzato.
Per ulteriori informazioni sui diversi workflow API Web Widget (versione classica) , consulta:
- Posso configurare il Web Widget (versione classica) per presentare Chat nella mia pagina web solo quando un reparto specifico è online?
- Posso presentare nuovamente domanda per il reparto dopo che un visitatore della chat scaduto si è riconnesso?
- Come posso assicurarmi che il modulo preliminare alla chat venga presentato al visitatore in caso di timeout ma si riconnette?
Avvertenza sulla traduzione: questo articolo è stato tradotto usando un software di traduzione automatizzata per fornire una comprensione di base del contenuto. È stato fatto tutto il possibile per fornire una traduzione accurata, tuttavia Zendesk non garantisce l'accuratezza della traduzione.
Per qualsiasi dubbio sull'accuratezza delle informazioni contenute nell'articolo tradotto, fai riferimento alla versione inglese dell'articolo come versione ufficiale.