Frage
Ich möchte das native Verhalten des Web Widgets (Classic) mit JavaScript-APIs ändern. Ich habe das Help Center gelesen und viele verschiedene Implementierungen gefunden. Wie kann ich diese API-Workflows für das Web Widget (Classic) kombinieren?
Antwort
Wenden Sie die Widget-Einstellungen zum richtigen Zeitpunkt an. Einige Workflows müssen nach einem Abteilungsupdate ausgeführt werden, andere beim erstmaligen Herstellen oder erneuten Herstellen einer Verbindung. Dies ist wichtig, da das Widget geladen werden kann, bevor eine Chatsitzung stattfindet, und ein Besucher nach einem Sitzungs-Timeout oder Seitenaktualisierung erneut eine Verbindung herstellen kann. Wenn der Code beim Laden der Seite nur einmal ausgeführt wird, fehlen bei der aktiven Chatsitzung möglicherweise einige Einstellungen oder das Widget verliert sie nach einem erneuten Verbindungsaufbau.
Dieses Beispiel zeigt, wie Sie die Abteilung CRM festlegen. In diesem Beispiel ist „CRM“ der Name einer Chat-Abteilung, die Sie in den Chat-Widget-Einstellungen konfigurieren (z. B. eine Abteilung, die von einem Vertriebs- oder Account-Team verwendet wird). Ersetzen Sie „CRM“ durch den Namen der Abteilung in Ihrem Konto.
<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>
Hier sind zwei Punkte zum Skript. Sie können das anfängliche Ausblenden und das anschließende Anzeigen einer ungelesenen Nachricht weglassen, ohne den Rest des Skripts zu ändern. Da diese Anrufe laufen, sobald das Widget geladen wird, werden sie vom Skript an die Spitze gestellt. Sie sind optional.
Manche angepasste Workflows platzieren einen updateSettings-API-Block in einem chat:connected-Rückruf, Sie können ihn aber auch in einem chat:departmentStatus-Rückruf verwenden. Das Widget wendet es an, wenn es zum ersten Mal eine Verbindung herstellt, oder nach einem erneuten Verbindungsaufbau aufgrund eines Sitzungs-Timeouts. Verknüpfen Sie Ihren Workflow in der Regel mit dem Ereignis, wenn die Einstellung in Kraft treten muss:
- Verwenden Sie
chat:connectedfür Logik, die einmal pro Chatsitzung ausgeführt werden sollte, z. B. die anfängliche Konfiguration, die sich nicht nach jeder Aktualisierung des Abteilungsstatus wiederholen sollte. - Verwenden Sie
chat:departmentStatusfür Logik, die mit der Verfügbarkeit von Abteilungen oder Verteilungsänderungen synchronisiert bleiben muss, da sie ausgeführt werden kann, wenn sich der Abteilungsstatus ändert und das Widget initialisiert wird.
Weitere Informationen zu den verschiedenen API-Workflows für das Web Widget (Classic) finden Sie unter:
- Kann ich das Web Widget (Classic) so konfigurieren, dass der Chat auf meiner Webseite nur angezeigt wird, wenn eine bestimmte Abteilung online ist?
- Kann ich die Abteilung erneut anwenden, nachdem ein Chat-Besucher mit einem Timeout erneut verbunden wurde?
- Wie kann ich sicherstellen, dass dem Besucher das Pre-Chat-Formular angezeigt wird, wenn er sich nach Ablauf des Zeitlimits wieder verbindet?
Hinweis zur Übersetzung: Dieser Beitrag wurde mit automatischer Übersetzungssoftware übersetzt, um dem Leser ein grundlegendes Verständnis des Inhalts zu vermitteln. Trotz angemessener Bemühungen, eine akkurate Übersetzung bereitzustellen, kann Zendesk keine Garantie für die Genauigkeit übernehmen.
Sollten in Bezug auf die Genauigkeit der Informationen im übersetzten Beitrag Fragen auftreten, beziehen Sie sich bitte auf die englische Version des Beitrags, die als offizielle Version gilt.