Question
Je veux modifier le comportement natif du Web Widget (Classique) avec les API JavaScript. J’ai lu le centre d’aide et j’ai trouvé de nombreuses implémentations différentes. Comment combiner ces workflows de l’API du Web Widget (Classique) ?
Réponse
Appliquez les paramètres de votre widget au bon moment. Certains workflows doivent s’exécuter après une mise à jour du service, d’autres à la connexion ou la reconnexion initiale du widget. C’est important, car le widget peut se charger avant qu’une session de chat n’existe et qu’un visiteur puisse se reconnecter après l’expiration d’une session ou l’actualisation d’une page. Si votre code ne s’exécute qu’une seule fois au chargement de la page, il est possible que la session de chat active manque certains paramètres ou que le widget les perde après une reconnexion.
Cet exemple montre comment configurer le service CRM . Dans cet exemple, « CRM» est le nom d’un service Chat que vous configurez dans les paramètres du widget Chat (par exemple, un service utilisé par une équipe de vente ou de compte). Remplacez « CRM» par le nom exact du service dans votre compte.
<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>
Voici deux points à propos du script. Vous pouvez omettre le masquage initial et l’affichage subséquent pour un message non lu sans modifier le reste du script. Comme ces appels s’exécutent dès le chargement du widget, le script les place en haut de la liste. Ils sont facultatifs.
Certains workflows personnalisés placent une updateSettings dans un rappel chat:connected , mais vous pouvez aussi le placer dans un rappel chat:departmentStatus . Le widget l’applique à sa connexion initiale ou après une reconnexion due à l’expiration d’une session. En règle de base, associez votre workflow à l’événement lorsque le paramètre doit entrer en vigueur :
- Utiliser
chat:connectedpour la logique qui doit s’exécuter une fois par session de chat, comme la configuration initiale qui ne doit pas se répéter après chaque actualisation du statut de chaque service. - Utiliser
chat:departmentStatuspour une logique qui doit rester synchronisée avec la disponibilité du service ou les changements de routage, car elle peut s’exécuter quand le statut du service change et quand le widget s’initialise.
Pour en savoir plus sur les différents workflows de l’API du Web Widget (Classique) , consultez :
- Puis-je configurer le Web Widget (Classique) pour présenter Chat sur ma page Web uniquement quand un service spécifique est en ligne ?
- Puis-je réappliquer le service après la reconnexion d’un visiteur de chat ayant expiré ?
- Comment m’assurer que le Formulaire pré-chat est présenté au visiteur si sa session expire, mais qu’il se reconnecte ?
Traduction - exonération : cet article a été traduit par un logiciel de traduction automatisée pour permettre une compréhension élémentaire de son contenu. Des efforts raisonnables ont été faits pour fournir une traduction correcte, mais Zendesk ne garantit pas l’exactitude de la traduction.
Si vous avez des questions quant à l’exactitude des informations contenues dans l’article traduit, consultez la version anglaise de l’article, qui représente la version officielle.