Ferndesk SDK-Referenz
Das Ferndesk SDK ist eine schlanke JavaScript-Bibliothek, die die programmgesteuerte Steuerung des Self-Service-Widgets ermöglicht. Nach dem Einbetten stellt sie ein globales Ferndesk-Objekt unter window.Ferndesk bereit, mit dem Sie das Widget initialisieren, Artikel öffnen, Suchen auslösen und die Sichtbarkeit verwalten können – alles aus dem JavaScript-Code Ihrer Website heraus.
Erste Schritte
Installation
Binden Sie zunächst das Ferndesk SDK-Skript in Ihr HTML ein (oder kopieren Sie es aus dem Ferndesk-Dashboard):
<!-- Step #1. Install the Ferndesk SDK -->
<script>
!(function (e, t) {
var n = 'ferndesk-sdk',
r = e.FERNDESK_SDK_SRC || 'https://static.ferndesk.com/dist/sdk.js',
c = 'Ferndesk',
s = t.currentScript;
function a() {
if (!t.getElementById(n)) {
var e = t.createElement('script');
((e.id = n),
(e.src = r),
(e.async = !0),
s && s.nonce && ((e.nonce = s.nonce), e.setAttribute('nonce', s.nonce)));
var c = t.getElementsByTagName('script')[0];
c.parentNode.insertBefore(e, c);
}
}
if ('function' != typeof e[c]) {
var i = [],
o = function () {
i.push(arguments);
};
((o.q = i), (e[c] = o));
}
'complete' === t.readyState || 'interactive' === t.readyState
? a()
: t.addEventListener('DOMContentLoaded', a);
})(window, document);
</script>Initialisierung
Initialisieren Sie das Widget mit Ihrer Widget-ID:
<script>
Ferndesk('init', { widgetId: 'YOUR_WIDGET_ID' })
</script>Nach der Initialisierung erscheint das Widget als schwebende Schaltfläche auf Ihrer Seite, und alle SDK-Methoden stehen zur Verfügung.
Der Parameter widgetId ist erforderlich.
Kernmethoden
Init
Das Ferndesk-Widget initialisieren.
Ferndesk('init', { widgetId: 'YOUR_WIDGET_ID', open: true })Parameter:
widgetId(string, erforderlich): Ihre Widget-ID aus dem Ferndesk-Dashboard.open(boolean, optional): Beitruewird das Widget beim Laden der Seite automatisch geöffnet. Standard:false.hideLauncher(boolean, optional): Beitruewird die schwebende Widget-Schaltfläche ausgeblendet. Das Widget bleibt ausgeblendet, bis Sieopen()odertoggle()aufrufen. Standard:false.locale(string, optional): Legt die Sprache des Widgets mithilfe eines ISO-639-1-Sprachcodes fest (z. B.'fr','es','de'). Überschreibt die Erkennung der Browsersprache und die Standardeinstellungen des Help Centers. Unterstützt:en,fr,es,de,nl,pt,it,ja,ko,zh,sv,no,da,fi,tr. Standard: automatisch anhand des Browsers erkannt.changelogAnnouncements(boolean, optional): Steuert Ankündigungsaufforderungen für Changelog-Aktualisierungen.truezeigt Ankündigungen jedem Besucher, einschließlich anonymen Besuchern.falseunterdrückt Ankündigungsaufforderungen und Kennzeichnungen für ungesehene Einträge, während der Changelog-Feed und die direkte Navigation verfügbar bleiben.
Rückgabe: Keine. Löst die Initialisierung des Widgets aus.
Beispiel: Benutzerdefinierte Hilfe-Schaltfläche mit ausgeblendetem Launcher:
<button onclick="Ferndesk('open')">Get Help</button>
<script>
Ferndesk('init', {
widgetId: 'YOUR_WIDGET_ID',
hideLauncher: true
});
</script>Beispiel – Französische Sprache unabhängig von den Browsereinstellungen erzwingen:
Ferndesk('init', {
widgetId: 'YOUR_WIDGET_ID',
locale: 'fr'
});Benutzer klicken auf Ihre benutzerdefinierte Schaltfläche, um das Widget zu öffnen. Die standardmäßige schwebende Schaltfläche wird nie angezeigt.
Wenn Sie hideLauncher auf true setzen, müssen Sie eine andere Möglichkeit zum Öffnen des Widgets bereitstellen (z. B. eine benutzerdefinierte Schaltfläche). Andernfalls können Benutzer nicht auf Ihr Help Center zugreifen.
Konsolenfehler:
Ferndesk: init requires a widgetId— Der Parameter widgetId fehlt.Ferndesk widget failed to load widget configuration— Die Widget-ID ist ungültig oder wurde nicht gefunden.
Ausblenden
Die Widget-Schaltfläche ausblenden und Interaktionen deaktivieren.
Ferndesk('hide')Parameter: Keine.
Rückgabe: Keine.
Verhalten: Blendet die Widget-Schaltfläche aus und schließt alle geöffneten Bereiche. Benutzer können erst wieder auf das Widget zugreifen, wenn show() aufgerufen wird.
Beispielanwendungsfall: Widget auf Seiten ausblenden, auf denen keine Hilfe benötigt wird:
if (window.location.pathname === '/checkout') {
Ferndesk('hide');
}Anzeigen
Die Widget-Schaltfläche anzeigen und interaktiv machen.
Ferndesk('show')Parameter: Keine.
Rückgabe: Keine.
Verhalten: Macht die Widget-Schaltfläche sichtbar. Ist sie bereits sichtbar, erfolgt keine Änderung.
Beispielanwendungsfall: Das Widget anzeigen, nachdem ein Benutzer eine bestimmte Aktion ausgeführt hat:
document.getElementById('help-button').addEventListener('click', () => {
Ferndesk('show');
});Öffnen
Das Hilfe-Panel des Widgets programmgesteuert öffnen.
Ferndesk('open')Parameter: Keine.
Rückgabe: Keine.
Verhalten: Öffnet das Haupt-Panel des Widgets, ohne zu einem bestimmten Artikel zu navigieren. Benutzer sehen die Startseite des Help Centers.
Beispielanwendungsfall: Hilfe öffnen, wenn ein Benutzer auf eine Schaltfläche „Hilfe erhalten“ klickt:
document.getElementById('get-help').addEventListener('click', () => {
Ferndesk('open');
});OpenHome
Die Widget-Navigation auf die Startansicht zurücksetzen.
Ferndesk('openHome')Parameter: Keine.
Rückgabe: Keine.
Verhalten: Öffnet das Widget und navigiert zur Startansicht. Wenn das Widget bereits geöffnet ist, aber eine andere Ansicht anzeigt (z. B. den KI-Assistenten oder das Kontaktformular), wird die Navigation auf die Startansicht zurückgesetzt. Verwenden Sie diese Methode, wenn Sie Benutzer aus einem anderen Widget-Zustand zurück zur Hauptansicht des Help Centers führen möchten.
// Button to reset widget to home view
document.getElementById('reset-help').addEventListener('click', () => {
Ferndesk('openHome');
});Wann verwenden:
Sie möchten programmgesteuert aus einem anderen Widget-Zustand zur Startansicht zurückkehren.
Sie benötigen eine zuverlässige Möglichkeit, die Widget-Navigation unabhängig von der aktuellen Ansicht zurückzusetzen.
Sie erstellen eine benutzerdefinierte Navigation mit einer „Startseite“-Aktion.
Der Befehl open öffnet das Widget, wenn es geschlossen ist, in der Startansicht. Verwenden Sie openHome, wenn Sie aus einer anderen Ansicht wie dem KI-Assistenten oder dem Kontaktformular ausdrücklich zur Startseite zurückkehren möchten.
OpenAssistant
Das Widget direkt in der Ansicht des KI-Assistenten öffnen.
Ferndesk('openAssistant')Parameter: Keine.
Rückgabe: Keine.
Verhalten: Öffnet das Widget und navigiert direkt zur Chatansicht des KI-Assistenten. Dort können Benutzer Fragen stellen und KI-gestützte Antworten auf Grundlage Ihrer Help-Center-Inhalte erhalten. Verwenden Sie diese Methode, wenn Benutzer sofort ein Gespräch mit dem KI-Assistenten beginnen sollen, anstatt Artikel zu durchsuchen.
Beispielanwendungsfall: Den KI-Assistenten über eine eigene Schaltfläche „Frage stellen“ öffnen:
document.getElementById('ask-question').addEventListener('click', () => {
Ferndesk('openAssistant');
});Beispielanwendungsfall: Den Assistenten über einen kontextbezogenen Hilfelink öffnen:
<a href="#" onclick="Ferndesk('openAssistant')">Ask AI for help</a>OpenContact
Das Widget direkt in der Ansicht des Kontaktformulars öffnen.
Ferndesk('openContact')Parameter: Keine.
Rückgabe: Keine.
Verhalten: Öffnet das Widget und navigiert direkt zur Ansicht des Kontaktformulars, über das Benutzer eine Supportanfrage senden können. Das Verhalten des Kontaktformulars hängt von Ihren Widget-Einstellungen ab: Es kann ein E-Mail-Formular anzeigen, zu einem externen Link weiterleiten oder an eine integrierte Chatplattform wie Intercom oder Zendesk übergeben.
Beispielanwendungsfall: Das Kontaktformular über eine Schaltfläche „Support kontaktieren“ öffnen:
document.getElementById('contact-support').addEventListener('click', () => {
Ferndesk('openContact');
});Beispielanwendungsfall: Prefill mit openContact für eingeloggte Benutzer kombinieren:
// After user clicks a "Report a problem" button
Ferndesk('prefill', {
name: user.fullName,
email: user.email,
subject: 'Problem report'
});
Ferndesk('openContact');Der Befehl openContact berücksichtigt Ihre konfigurierte Kontaktmethode. Wenn Sie als Kontaktmethode einen externen Link oder eine Integration festgelegt haben, leitet das Widget entsprechend weiter, anstatt ein E-Mail-Formular anzuzeigen.
Schließen
Das geöffnete Widget-Panel schließen.
Ferndesk('close')Parameter: Keine.
Rückgabe: Keine.
Verhalten: Schließt alle geöffneten Widget-Panels, Seitenleisten oder modalen Fenster. Die Widget-Schaltfläche bleibt sichtbar und anklickbar.
Destroy
Das Widget vollständig entfernen und Ressourcen freigeben.
Ferndesk('destroy')Parameter: Keine.
Rückgabe: Keine.
Verhalten: Entfernt das Widget von der Seite, löscht Event-Listener und setzt den Status zurück. Um das Widget erneut zu verwenden, rufen Sie init() mit einer neuen Widget-ID auf.
Beispielanwendungsfall: Widget beim Entladen einer Seite in Single-Page-Apps bereinigen:
window.addEventListener('beforeunload', () => {
Ferndesk('destroy');
});SetLocale
Die Widget-Sprache nach der Initialisierung ändern.
Ferndesk('setLocale', 'es')Parameter:
locale(string oder null, erforderlich): ISO-639-1-Sprachcode (z. B.'de','ja') odernull, um zur automatischen Erkennung zurückzukehren.
Rückgabe: Keine.
Verhalten: Wechselt die Benutzeroberfläche und Inhalte des Widgets sofort in die angegebene Sprache. Lädt die Widget-Übersetzungen neu und ruft die Inhalte in der neuen Sprache erneut ab. Übergeben Sie null, um die automatische sprachbasierte Erkennung des Browsers wiederherzustellen.
Unterstützte Sprachen: en, fr, es, de, nl, pt, it, ja, ko, zh, sv, no, da, fi, tr.
Beispiel – Sprachumschalter:
<select id="lang-picker">
<option value="en">English</option>
<option value="fr">Français</option>
<option value="es">Español</option>
</select>
<script>
document.getElementById('lang-picker').addEventListener('change', (e) => {
Ferndesk('setLocale', e.target.value);
});
</script>Beispiel – Zur Browsersprache zurücksetzen:
// User clicks "Use my browser language" button
Ferndesk('setLocale', null);Die Spracheinstellung bleibt über Seitenaufrufe hinweg in localStorage gespeichert. Benutzer müssen ihre Sprache bei späteren Besuchen nicht erneut auswählen.
Identify
Einen Benutzer mit einem JWT-Token authentifizieren und identifizieren.
Ferndesk('identify', { jwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' })Parameter:
jwt(string, erforderlich): Ein signierter JWT-Token mit Informationen zur Benutzeridentität.
Rückgabe: Keine.
Verhalten: Authentifiziert den Benutzer im Widget und ermöglicht personalisierte Hilfeinhalte sowie eine sichere Identifizierung. Der Token muss serverseitig generiert und mit Ihrem Ferndesk-Geheimschlüssel signiert werden.
Die identify-Methode muss von derselben Domain wie Ihr Help Center oder von einer Subdomain der ersten Ebene aufgerufen werden (wenn sich Ihr Help Center beispielsweise unter help.example.com befindet, können Sie identify von help.example.com oder app.example.com aufrufen, aber nicht von different-domain.com).
Beispiel – Eingeloggten Benutzer identifizieren:
// After user logs in, get JWT from your backend
const userToken = await fetch('/api/ferndesk-token').then(r => r.text());
Ferndesk('init', { widgetId: 'your-widget-id' });
Ferndesk('identify', { jwt: userToken });Rufen Sie identify nach init und vor dem Öffnen des Widgets auf. Der Token sollte die Benutzer-ID, die E-Mail-Adresse und alle benutzerdefinierten Attribute enthalten, die Sie verfolgen möchten.
Eine vollständige Anleitung zum Einrichten der stillen Benutzeridentifizierung finden Sie unter JWT-Authentifizierung.
Konsolenfehler:
Ferndesk: identify requires a jwt— Der Parameter jwt fehlt.Ferndesk: identify failed - invalid jwt— Der JWT-Token ist fehlerhaft formatiert oder die Signaturprüfung ist fehlgeschlagen.Ferndesk: identify must be called from the same domain or 1-level subdomain— Eine Domainabweichung wurde erkannt.
Prefill
Sparen Sie Ihren Benutzern Zeit, indem Sie ihren Namen und ihre E-Mail-Adresse automatisch ausfüllen, damit sie diese nicht bei jedem Kontakt erneut eingeben müssen.
Ferndesk('prefill', { name: 'Jane Doe', email: '[email protected]', subject: 'Billing Issue', message: 'Details here...' })Wenn Ihre Benutzer bereits eingeloggt sind, warum sollten sie das Kontaktformular von Grund auf ausfüllen müssen? Die Prefill-Methode trägt ihre Informationen automatisch ein und erleichtert ihnen so, schnell Hilfe zu erhalten.
Parameter: Objekt mit optionalen String-Feldern:
name(string, optional): Name des Benutzersemail(string, optional): E-Mail-Adresse des Benutzerssubject(string, optional): Betreffzeile des Ticketsmessage(string, optional): Nachrichtentext
Rückgabe: Keine.
Funktionsweise: Wenn der Benutzer das Kontaktformular öffnet, enthalten alle von Ihnen vorausgefüllten Felder bereits seine Informationen. Es werden nur leere Felder ausgefüllt, bereits eingegebene Inhalte werden nicht überschrieben. Sie können prefill aufrufen, bevor die Initialisierung abgeschlossen ist; die Daten werden dann in die Warteschlange gestellt.
Prefill funktioniert nur, wenn die Kontaktmethode Ihres Widgets auf „form“ (nicht „link“) eingestellt ist. Prüfen Sie Ihre Dashboard-Einstellungen unter Widget > Contact.
Beispiel – Daten eines eingeloggten Benutzers automatisch ausfüllen:
Ferndesk('init', { widgetId: 'your-widget-id' });
Ferndesk('prefill', {
name: user.fullName,
email: user.email
});
Ferndesk('open');Beispiel – Fehlerberichte vorausfüllen:
// On crash page
Ferndesk('prefill', {
subject: 'App Error',
message: 'Error: ' + error.message
});
Ferndesk('open');Rufen Sie prefill nach init, aber vor dem Öffnen des Widgets auf, um optimale Ergebnisse zu erzielen. Die vorausgefüllten Daten bleiben erhalten, auch wenn der Benutzer das Widget mehrmals öffnet und schließt. Nach dem Absenden des Formulars werden sie jedoch gelöscht.
Konsolenwarnungen:
Ferndesk: 'prefill' ignored because the widget has not been initialised— Rufen Sie zuerstinit()auf.
Methoden zur Inhaltsnavigation
OpenArticle
Einen bestimmten Artikel im Widget öffnen.
Ferndesk('openArticle', { shortId: 'help-123', presentation: 'widget' })Parameter:
shortId(string, erforderlich): Der letzte Teil der Artikel-ID.presentation(string, optional): Art der Artikelanzeige. Optionen:'widget'(Standard),'sidebar','modal','inline'.anchor(HTML element, optional): Für die Darstellung'inline'erforderlich. Das Element, in dessen Nähe der Artikel verankert werden soll.
Rückgabe: Keine.
Darstellungsmodi:
widget(Standard): Der Artikel wird im Haupt-Widget für Hilfe geöffnet.sidebar: Der Artikel wird vom rechten Rand als Seitenleiste eingeblendet.modal: Der Artikel wird in einem zentrierten, bildschirmfüllenden Overlay geöffnet.inline: Der Artikel wird in der Nähe des Verankerungselements eingeblendet (erfordert den Parameteranchor).
Beispiel – Artikel beim Klicken auf eine Schaltfläche modal öffnen:
document.getElementById('faq-button').addEventListener('click', () => {
Ferndesk('openArticle', { shortId: 'faq-pricing', presentation: 'modal' });
});Beispiel – Artikel inline neben einem Element öffnen:
const anchorElement = document.getElementById('billing-info');
Ferndesk('openArticle', {
shortId: 'billing-faq',
presentation: 'inline',
anchor: anchorElement
});Konsolenfehler:
Ferndesk: openArticle requires a shortId— shortId fehlt.Ferndesk: Inline floating article requires an anchor element—presentation: 'inline', aber kein anchor angegeben.Ferndesk: openArticle ignored because the widget has not been initialised—init()wurde noch nicht aufgerufen.
OpenCollection
Eine bestimmte Sammlung im Widget öffnen.
Ferndesk('openCollection', { shortId: 'getting-started' })Parameter:
shortId(string, erforderlich): Die kurze ID der Sammlung aus Ihrem Help Center.
Rückgabe: Keine.
Verhalten: Öffnet die Sammlung im Hilfe-Panel des Widgets und zeigt alle Artikel dieser Sammlung an.
Beispiel – Artikel zur Fehlerbehebung durchsuchen:
Ferndesk('openCollection', { shortId: 'xFqsqw' });Search
Die Widget-Suche ausfüllen und Ergebnisse anzeigen.
Ferndesk('search', { query: 'billing issues' })Parameter:
query(string, erforderlich): Die Suchanfrage. Darf nicht leer sein.
Rückgabe: Keine.
Verhalten: Öffnet das Widget und zeigt Suchergebnisse an, die der Anfrage entsprechen. Wenn keine passenden Ergebnisse vorhanden sind, wird „Keine Ergebnisse gefunden.“ angezeigt.
Beispiel – Suchen, wenn der Benutzer eine Tastenkombination drückt:
document.addEventListener('keydown', (e) => {
if (e.key === '?' && e.ctrlKey) {
Ferndesk('search', { query: 'download videos' });
}
});Konsolenfehler:
Ferndesk: search requires a non-empty query— Der Parameter query ist leer oder fehlt.
Changelog-Methoden
OpenChangelog
Einen Changelog im Widget öffnen.
Ferndesk('openChangelog')Ferndesk('openChangelog', { shortId: 'abc123' })Ferndesk('openChangelog', 'abc123')Parameter:
shortId(string, optional): Die kurze ID des Changelogs, die als Objekteigenschaft oder als einfacher String übergeben wird. Ohne diesen Parameter öffnet das Widget den standardmäßig sichtbaren Changelog des Besuchers.
Rückgabe: Keine.
Verhalten: Öffnet das Widget in der Changelog-Ansicht. Wenn kein sichtbarer Changelog vorhanden ist, führt der Befehl keine Aktion aus und protokolliert Ferndesk: This help center has no visible changelog..
GetChangelogStatus
Lesen, ob ein Changelog verfügbar ist und ungesehene Aktualisierungen enthält.
Ferndesk('getChangelogStatus')Rückgabe: { available: boolean, unseen: boolean } oder null, bevor das Widget den Status gemeldet hat. available ist true, wenn ein Changelog für den aktuellen Besucher sichtbar ist; unseen ist true, wenn ein angekündigter Eintrag neuer ist als der zuletzt vom Besucher gesehene Stand.
Datenattribute für Inline-Auslöser
Zusätzlich zu den SDK-Methoden können Sie HTML-Datenattribute verwenden, um Widget-Aktionen ohne JavaScript auszulösen:
data-ferndesk-article
Beim Klicken einen Artikel im Widget-Modus öffnen.
<button data-ferndesk-article="help-123">Learn More</button>Beim Klicken auf diese Schaltfläche wird der Artikel mit der ID „help-123“ im Haupt-Widget-Panel geöffnet.
data-ferndesk-article-modal
Beim Klicken einen Artikel im Modal-Modus öffnen.
<a href="#" data-ferndesk-article-modal="pricing-faq">View Pricing FAQs</a>Beim Klicken auf diesen Link wird der Artikel in einem zentrierten modalen Overlay geöffnet.
data-ferndesk-article-sidebar
Beim Klicken einen Artikel im Seitenleistenmodus öffnen.
<button data-ferndesk-article-sidebar="troubleshooting">Troubleshoot</button>Beim Klicken wird der Artikel in einer eingeblendeten Seitenleiste geöffnet.
data-ferndesk-article-inline
Beim Klicken einen Artikel inline, verankert am angeklickten Element, öffnen.
<button id="my-button" data-ferndesk-article-inline="quick-help">Quick Help</button>Beim Klicken auf diese Schaltfläche wird der Artikel inline in der Nähe der Schaltfläche geöffnet. Wenn kein Verankerungselement gefunden wird, gibt die Browserkonsole eine Warnung aus und wechselt in den Modal-Modus.
data-ferndesk-changelog
Beim Klicken einen Changelog öffnen.
<button data-ferndesk-changelog>What's new</button>Mit einem Wert ist dieser Wert die kurze ID des Changelogs; ohne Wert öffnet das Widget den Standard-Changelog des Besuchers. Wenn der Changelog-Status verfügbar ist und ungesehene Einträge enthält, zeigen passende Auslöser einen kleinen Punkt als Kennzeichnung.
Fehlerbehandlung und Protokollierung
Das SDK protokolliert Fehler und Warnungen in der Browserkonsole (für Endbenutzer nicht sichtbar). Zu den häufigsten Meldungen gehören:
Meldung | Ursache | Lösung |
|---|---|---|
| Fehlender widgetId-Parameter | Geben Sie Ihre Widget-ID im init-Aufruf an |
| Ungültige oder abgelaufene Widget-ID | Überprüfen Sie die ID im Dashboard und generieren Sie sie bei Bedarf neu |
| Das SDK-Skript wurde nicht geladen (z. B. durch einen Werbeblocker oder CSP blockiert) | Prüfen Sie die Netzwerkanfragen und setzen Sie die Ferndesk-Domain in der CSP auf die Allowlist |
| Leere oder fehlende Suchanfrage | Übergeben Sie für den query-Parameter einen nicht leeren String |
| Inline-Darstellung ohne anchor verwendet | Geben Sie im anchor-Parameter ein HTML-Element an |
| Eine Methode wurde vor Abschluss von init() aufgerufen | Stellen Sie sicher, dass init() vor anderen Methoden aufgerufen wird (oder warten Sie, bis das SDK geladen ist) |
| Eine nicht vorhandene Methode wurde aufgerufen | Prüfen Sie den Methodennamen und die Schreibweise anhand der SDK-Referenz |
Einhaltung der Content Security Policy (CSP)
Wenn Ihre Website eine strenge Content Security Policy verwendet, müssen Sie die Ferndesk-Domain möglicherweise auf die Allowlist setzen:
Beispiel für einen CSP-Header:
script-src 'self' https://static.ferndesk.com;Wenn das SDK-Skript durch die CSP blockiert wird, protokolliert die Konsole einen CSP-Verletzungsfehler. Fügen Sie https://static.ferndesk.com Ihrer script-src-Direktive hinzu, um das Skript zuzulassen.
Überlegungen zur Performance
Asynchrones Laden: Das SDK-Skript wird asynchron im Hintergrund geladen. Ihre Seite wird weiter geladen, während das SDK initialisiert wird.
Shadow-DOM-Isolierung: Das Widget verwendet das Shadow DOM, um Stile zu kapseln und Konflikte mit dem CSS Ihrer Website zu vermeiden.
Lazy Loading von Inhalten: Artikel und Suchergebnisse werden bei Bedarf geladen, nicht alle auf einmal.
Beispiele
Grundlegende Einrichtung
<html>
<body>
<!-- Your page content -->
<script src="https://static.ferndesk.com/dist/sdk.js"></script>
<script>
Ferndesk('init', { widgetId: 'your-widget-id' });
</script>
</body>
</html>Artikel beim Klicken auf eine Schaltfläche öffnen
<button id="help-btn">Get Help</button>
<script>
Ferndesk('init', { widgetId: 'your-widget-id' });
document.getElementById('help-btn').addEventListener('click', () => {
Ferndesk('openArticle', {
shortId: 'faq-overview',
presentation: 'modal'
});
});
</script>Bei Benutzereingabe suchen
<input id="search-input" type="text" placeholder="Search help..."/>
<script>
Ferndesk('init', { widgetId: 'your-widget-id' });
document.getElementById('search-input').addEventListener('keypress', (e) => {
if (e.key === 'Enter') {
Ferndesk('search', { query: e.target.value });
}
});
</script>Kontextbezogene Hilfe in einer React-App
import { useEffect, useState } from 'react';
export default function App() {
const [currentPage, setCurrentPage] = useState('home');
useEffect(() => {
// Initialize SDK
const script = document.createElement('script');
script.src = 'https://static.ferndesk.com/dist/sdk.js';
script.async = true;
document.body.appendChild(script);
script.onload = () => {
window.Ferndesk('init', { widgetId: 'your-widget-id' });
};
}, []);
useEffect(() => {
// Hide widget on checkout page, show elsewhere
if (currentPage === 'checkout') {
window.Ferndesk('hide');
} else {
window.Ferndesk('show');
}
}, [currentPage]);
return (
<div>
{/* Your page content */}
</div>
);
}Events
Abonnieren Sie Widget-Events, um mithilfe der Methode Ferndesk('on', event, handler) auf Benutzeraktionen auf Ihrer Website zu reagieren. Abonnements können vor der Initialisierung des Widgets in die Warteschlange gestellt werden und geben immer eine Funktion zum Abbestellen zurück.
On
Ein Widget-Event abonnieren.
const unsubscribe = Ferndesk('on', 'quickLinkClick', (event) => {
console.log('Link clicked:', event.label);
});Parameter:
event(string, erforderlich): Der Name des zu abonnierenden Events.handler(function, erforderlich): Die Callback-Funktion, die beim Auslösen des Events ausgeführt wird.
Rückgabe: Eine unsubscribe-Funktion. Ihr Aufruf entfernt den Listener. Wenn das SDK noch nicht geladen wurde, stellt die Funktion einen off-Aufruf in die Warteschlange, der automatisch ausgeführt wird, sobald das SDK bereit ist.
Sie können Ferndesk('on', ...) aufrufen, bevor init() abgeschlossen ist. Das SDK führt die in die Warteschlange gestellten Befehle nach dem Laden in der richtigen Reihenfolge erneut aus.
QuickLinkClick
Wird ausgelöst, wenn ein Besucher im Widget auf der Startansicht auf einen Schnelllink klickt.
Ferndesk('on', 'quickLinkClick', (event) => {
if (event.id === 'custom-route') {
event.preventDefault();
history.pushState(null, '', event.url);
}
});Payload:
id(string): Die Link-ID.label(string): Die Linkbezeichnung.url(string, optional): Das Ziel des Links.preventDefault()(function): Rufen Sie diese Funktion auf, um zu verhindern, dass das Widget zur Link-URL navigiert. Verwenden Sie sie, wenn Sie die Navigation selbst steuern möchten.defaultPrevented(boolean, schreibgeschützt):true, wenn ein HandlerpreventDefault()aufgerufen hat.
Verhalten: Wenn preventDefault() nicht aufgerufen wird, folgt das Widget dem normalen Linkverhalten (derselbe Tab oder ein neuer Tab, abhängig von der Einstellung In neuem Tab öffnen des Links). Modifizierte Klicks wie Strg-Klick, Umschalt-Klick und Mittelklick folgen immer dem Standardverhalten des Browsers.
ChangelogStatus
Wird ausgelöst, wenn sich die Verfügbarkeit oder der Status ungesehener Changelog-Einträge ändert.
Ferndesk('on', 'changelogStatus', ({ available, unseen }) => console.log(available, unseen))Payload:
available(boolean): Gibt an, ob ein Changelog für den aktuellen Besucher sichtbar ist.unseen(boolean): Gibt an, ob ein angekündigter Eintrag neuer ist als der zuletzt vom Besucher gesehene Stand.
Verhalten: Wird nach dem Start des Widgets und bei jeder Statusänderung ausgelöst; identische Statuswerte werden nicht erneut ausgegeben.
ChangelogOpen
Wird ausgelöst, wenn die Changelog-Ansicht geöffnet wird.
Ferndesk('on', 'changelogOpen', ({ shortId }) => console.log(shortId))Payload:
shortId(string oder null): Die kurze ID des geöffneten Changelogs.
Wie geht es weiter?
Erfahren Sie, wie Sie das Self-Service-Widget in Ihre Website einbetten.
In der Übersicht zum Self-Service-Widget finden Sie Details zu den Funktionen.