Allgemeine Informationen
Ein Chatbot für Online-Buchungen ist eine Reihe von Trichterfunktionen, mit denen Sie den Prozess der Terminplanung für Ihr Unternehmen automatisieren können.
Der Arbeitsablauf des Bots basiert auf der sequenziellen Ausführung von Funktionen: Empfangen von Daten zur Anzeige für den Kunden, dann Weiterleiten dieser Daten, um neue Funktionen auszulösen und neue Ergebnisse zu erhalten.
Während sich der Kunde durch den Trichter bewegt, sollten Sie in jeden nachfolgenden Block nur die Daten übergeben, die der Auswahl des Kunden entsprechen – verwenden Sie diese Daten, um die nächsten Funktionsaufrufe zu konfigurieren.
Dank der Möglichkeit, Zwischendaten abzurufen (z. B. Mitarbeiterpositionen und Dienstleistungskategorien) und zur Filterung von Mitarbeitern und Dienstleistungen weiterzuleiten, können Sie Ihren Trichter flexibel konfigurieren und dem Kunden die Kontrolle über die Schritte seines Fortschritts geben.
Alle in diesem Artikel beschriebenen Methoden geben ein Array von Wörterbüchern zurück.
Für die komfortable Arbeit mit ihnen empfehlen wir, die Abschnitte Arrays und Wörterbücher zu lesen.
Außerdem empfehlen wir für die Verwendung der Funktion zur Generierung von Benutzeraktionen (Dienstauswahl, Datum, Buchung) die tools_make_button_str_checker-Methode.
Nachfolgend finden Sie ein Diagramm des Arbeitsablaufs des Bots, wobei jeder Block des Diagramms einen bestimmten Funktionsaufruf darstellt und die Pfeile den Datenfluss von Block zu Block anzeigen. Die in diesen Flüssen übergebenen Informationen ermöglichen es Ihnen, angeforderte Daten zu filtern sowie eine Buchungszeit zu erstellen, zu stornieren oder zu ändern.

Ein detailliertes Konfigurationsdiagramm des Online-Buchungs-Chatbots mit den verwendeten Funktionen finden Sie im Abschnitt Bot-Implementierungsbeispiel dieses Artikels.
Abrufen von Filialinformationen
Um einen Online-Buchungstrichter zu erstellen und Informationen über Projektfilialen abzurufen, verwenden Sie die Funktion get_companies_for_booking.
Die Funktion gibt eine Liste zurück, die Daten für jede Filiale (jeden Trichter) enthält, die in ihren Einstellungen „Online-Buchung“ aktiviert hat.
Die Daten werden als Schlüssel-Wert-Paare bereitgestellt und enthalten die Filialkennung (id), den Namen (name) und die Adresse (address).
Die Funktion benötigt keine Parameter.
Anwendungsbeispiel:
Funktionsaufruf innerhalb eines Blocks:

Beispiel für zurückgegebene Daten:

Abrufen von Informationen über Positionen oder Dienstleistungskategorien
Die Funktion get_categories_for_booking(company_id) ermöglicht es Ihnen, eine Liste aller Arten von Spezialisten oder Dienstleistungskategorien für eine Filiale abzurufen.
Jedes Element in der zurückgegebenen Liste enthält eine Kennung (id), einen Namen (name) und eine Beschreibung (description) der Position oder Dienstleistungskategorie. Daten werden als „Schlüssel-Wert“-Paare dargestellt:
Parameter:
Anwendungsbeispiel:
Beispiel für einen Funktionsaufruf in einem Codeblock:

Abrufen von Informationen über Mitarbeiter
Wenn Sie Informationen über Filialmitarbeiter bereitstellen müssen, verwenden Sie die Funktion get_employees_for_booking.
Der Aufruf gibt eine Liste mit Daten zurück, die die Mitarbeiterkennung (id), den Namen (name), Informationen (information) und die Berufsbezeichnung (job_title) enthalten.
Sie können Mitarbeiter auch nach Dienstleistungsliste, Berufsbezeichnung oder Dienstleistungskategorie filtern. Übergeben Sie dazu einen zusätzlichen Parameter im Funktionsaufruf: service_ids, job_title_id oder service_category_id.
Parameterreihenfolge:
company_id -> service_ids -> job_title_id -> service_category_id
Parameter:
Hinweis:
Wenn Sie alle Mitarbeiter einer Filiale abrufen möchten, lassen Sie die Werte für service_ids, job_title_id und service_category_id leer.
- Aufrufbeispiel: get_employees_for_booking(14275391)
Um Mitarbeiter nach einer Liste von Dienstleistungs-IDs zu filtern, übergeben Sie die Liste als zweiten Parameter und lassen Sie job_title_id und service_category_id leer.
- Aufrufbeispiel: get_employees_for_booking(14275391, [844, 845])
Um Mitarbeiter nach Berufsbezeichnung zu filtern, übergeben Sie die ID an den Parameter job_title_id und lassen Sie service_ids und service_category_id leer.
- Aufrufbeispiel: get_employees_for_booking(14275391, “”, 1021)
Um Mitarbeiter zu erhalten, die Dienstleistungen einer bestimmten Kategorie anbieten, lassen Sie service_ids und job_title_id als leere Zeichenfolgen und übergeben Sie die ausgewählte Kategorie-ID an service_category_id.
- Aufrufbeispiel: get_employees_for_booking(14275391, “”, “”, 1019)
Anwendungsbeispiel:
Funktionsaufruf in einem Codeblock:

Beispiel für zurückgegebene Daten:

Abrufen von Informationen über Dienstleistungen
Um Informationen über die von der Filiale angebotenen Dienstleistungen zu erhalten, verwenden Sie die Funktion get_services_for_booking.
Als Ergebnis des Aufrufs gibt der Bot eine Liste mit Dienstleistungsdaten zurück. Jeder Dienstleistungseintrag enthält eine Kennung (id), einen Namen (title), eine Beschreibung (description), einen Preis (price) und die Dienstleistungsdauer in Minuten (duration).
Sie können die resultierende Liste nach Dienstleistungskategorie, nach Mitarbeiter oder gleichzeitig nach Dienstleistungskategorie und Mitarbeiter filtern. Übergeben Sie dazu die zusätzlichen Parameter service_category_id und/oder employee_id beim Aufruf der Funktion.
Parameterreihenfolge:
company_id -> service_category_id -> employee_id
Parameter:
Hinweis zum Abschnitt „Parameter“:
Wenn Sie alle Dienstleistungen einer Filiale abrufen möchten, lassen Sie die Werte service_category_id und employee_id leer.
- Aufrufbeispiel: get_services_for_booking(14275391)
Wenn Sie Dienstleistungen nach Kategorie und/oder Mitarbeiter filtern möchten, übergeben Sie die entsprechenden Kennungen an die Parameter service_category_id und employee_id. Um nur nach einem Parameter zu filtern, geben Sie für den anderen eine leere Zeichenfolge an.
Aufrufbeispiele:
- get_services_for_booking(14275391, 1018) - Filter nach Dienstleistungskategorie;
- get_services_for_booking(14275391, “”, 512978) - Filter nach Mitarbeiter;
- get_services_for_booking(14275391, 1018, 463665) - Filterung nach beiden Parametern;
Anwendungsbeispiel:
Aufruf der Funktion innerhalb eines Blocks:

Beispiel für zurückgegebene Daten:

Abrufen verfügbarer Buchungstermine
Nachdem der Kunde die Dienstleistungen für die Buchung ausgewählt hat, muss er eine Liste der verfügbaren Buchungstermine abrufen.
Um diese Liste zu generieren, verwenden Sie die Funktion get_dates_for_booking.
Die Funktion prüft auf verfügbare Zeitfenster und gibt eine Liste geeigneter Daten im Format „Tag.Monat.Jahr“ zurück.
Die Reihenfolge der Parameter ist wie folgt:
company_id -> service_ids -> employee_id -> days_limit
Parameter:
Anwendungsbeispiel:
Aufruf der Funktion innerhalb eines Blocks:

Beispiel für zurückgegebene Daten:

Abrufen verfügbarer Buchungszeitfenster
Um eine Liste verfügbarer Buchungszeitfenster zu erhalten, verwenden Sie die Funktion get_slots_for_booking.
Die Funktion prüft auf verfügbare Zeit am ausgewählten Datum und gibt eine Liste freier Zeitfenster im Format „Stunden:Minuten“ zurück, z. B. [“09:00”, “11:00”, “14:30”, “16:00”].
Die Reihenfolge der Parameter ist wie folgt:
company_id -> service_ids -> employee_id -> slot_interval
Parameter:
Anwendungsbeispiel:
Funktionsaufruf im Block:

Beispiel für zurückgegebene Daten:

Erstellen einer Buchung
Um eine Online-Buchung zu erstellen, verwenden Sie die Funktion create_booking.
Wenn die Buchung erfolgreich ist, gibt die Funktion Informationen über den Betriebsstatus (status) mit dem Wert True und die Buchungsdetails (booking) im Format „Schlüssel: Wert“ zurück.
Die neuen Buchungsdaten umfassen:
- Kennung (id),
- Datum (booking_date),
- Uhrzeit (booking_time),
- Dienstleistungsnamen (services),
- Buchungsdauer (service_duration),
- Gesamtkosten (total_cost),
- Name des zugewiesenen Mitarbeiters (employee_name) und seine Berufsbezeichnung (job_title),
- Filialname (company_name) und Filialadresse (company_address)
im Format „Schlüssel: Wert“.
Parameterreihenfolge:
company_id -> service_ids -> booking_date -> booking_time -> employee_id
Parameter:
Anwendungsbeispiel:
Funktionsaufruf im Block:

Beispiel einer erfolgreichen Buchungsantwort:

Wenn Sie Buchungen erstellen und anschließend erneut verfügbare Zeitfenster anfordern, werden Sie feststellen, dass die Listen kürzer geworden sind. Beispielsweise ist am 05.02.2024 das Zeitfenster 18:00 nicht mehr verfügbar (es war nur in Victorias Zeitplan frei), und für Paul Thompson können Buchungen für einen Herrenhaarschnitt und Bartstyling jetzt von 9:00 bis 14:00 vorgenommen werden, da die Gesamtdauer der Dienstleistungen 1 Stunde und 45 Minuten beträgt und Pavel bereits eine andere Buchung um 16:00 hat.

Abrufen von Informationen über bevorstehende Buchungen eines Kunden
Sie können die aktuellen Buchungen eines Kunden einsehen, indem Sie die Funktion get_bookings_info aufrufen.
Die Antwort gibt eine Liste der aktiven Buchungen zusammen mit detaillierten Informationen für jede Buchung zurück.
Buchungsinformationen werden im Format „Schlüssel: Wert“ bereitgestellt und umfassen:
- Buchungskennung (booking_id),
- Datum (booking_date),
- Uhrzeit (booking_time),
- Kennungen (service_ids) und Namen (service_names) der ausgewählten Dienstleistungen,
- Buchungsdauer (booking_duration),
- Gesamtkosten der Dienstleistungen (total_cost),
- Kennung (employee_id) und Name (employee_name) des zugewiesenen Mitarbeiters sowie seine Berufsbezeichnung (job_title),
- Filialkennung (company_id)
- Filialname (company_name) und Adresse (company_address).
Parameter:
Anwendungsbeispiel:
Funktionsaufruf im Block:

Beispiel für zurückgegebene Daten:

Ändern von Buchungsdatum und -uhrzeit
Ein Kunde kann das Buchungsdatum und die Buchungsuhrzeit selbstständig ändern. Dazu muss er auf den Trichterblock zugreifen, in dem die Funktion modify_booking_time aufgerufen wird.
Wenn der Vorgang erfolgreich ist, gibt die Funktion den Betriebsstatus (status) mit dem Wert True und eine Nachricht (message) „Buchungszeit geändert“ im Format „Schlüssel: Wert“ zurück.
Parameterreihenfolge:
order_id -> new_date -> new_time
Parameter:
Anwendungsbeispiel:
Funktionsaufruf im Block:

Bot-Antwort für einen erfolgreichen Vorgang:

Das zuvor belegte Zeitfenster 16:00 ist jetzt für Buchungen verfügbar, und eine neue Buchung für dieselben Dienstleistungen kann jetzt nur noch ab 11:00 erfolgen.

In den Buchungsinformationen des Kunden sehen Sie auch die aktualisierte Buchungszeit:

Stornieren einer Buchung
Ein Kunde kann eine bestehende Buchung selbstständig stornieren. Dazu muss er auf den Block zugreifen, in dem die Funktion cancel_booking aufgerufen wird.
Eine erfolgreiche Stornierung gibt den Betriebsstatus (status) mit dem Wert True und eine Nachricht (message) „Buchung gelöscht“ im Format „Schlüssel: Wert“ zurück.
Parameterreihenfolge:
pipeline_id -> order_id
Parameter:
Anwendungsbeispiel:
Funktionsaufruf im Block:

Bot-Antwort für eine erfolgreiche Stornierung:

Nach der Stornierung sind die Zeitfenster „09:00“ und „10:00“ wieder für Buchungen verfügbar:

Beispiel einer Bot-Implementierung
Chatbot-Einstellungen
Block Nr. 1. Start. Keine besonderen Aktionen erforderlich

Block Nr. 2. In diesem Block rufen wir die Daten ab, die dem Kunden bereitgestellt werden.
Beschreibung des Rechnerinhalts:
- comp_id - Dienstblockkennung, die im Bereich „Dienstleistungen“ zu finden ist;
- data - Informationen über die angebotenen Dienstleistungen
- res - Wörterbuch mit Daten, die zum Generieren von Schaltflächen und zum Festlegen von Bedingungen benötigt werden
- numbered_list - kann nützlich sein, wenn die Liste der Dienstleistungen in Textform dupliziert werden muss
- buttons - Array von Schaltflächen, die aus den Dienstleistungsdaten generiert wurden
- checker - Array von Dienstleistungsnamen, das zum Festlegen von Bedingungen für den Übergang zum nächsten Block verwendet wird

Block Nr. 3. Daten zur ausgewählten Dienstleistung abrufen und anzeigen.
title - im Array von Wörterbüchern data das Wörterbuch finden, in dem der Schlüssel title gleich question ist. Aus diesem Wörterbuch den Wert für denselben Schlüssel title abrufen
description - analog den Wert für den Schlüssel description abrufen
price - analog den Wert für den Schlüssel price abrufen
serv_id - analog den Wert für den Schlüssel id abrufen
b - ein Array von Zeichenfolgen erstellen, die als Schaltflächen unter der Nachricht angezeigt werden
res - aus dem Array b ein Array von Wörterbüchern wie im vorherigen Block erstellen
buttons - das Array zum Anzeigen der Schaltflächen abrufen
Jetzt haben wir Variablen, die den Namen, die Beschreibung und den Preis der vom Kunden ausgewählten Dienstleistung enthalten

Block Nr. 4. Verfügbare Buchungstermine anzeigen
print_dates - die Funktion verwenden, um verfügbare Buchungstermine für die ausgewählte Dienstleistung zu erhalten
print_dates - die Zeichenfolge „Zurück zur Dienstleistungsliste“ zum Array der Termine hinzufügen, wenn diese Schaltfläche zusammen mit den Terminen angezeigt werden soll

Für den Pfeil, der zum vorherigen Schritt zurückführt, eine höhere Priorität als für den Pfeil mit #{checker} festlegen, da #{checker} auch die Bedingung „Zurück zur Dienstleistungsliste“ enthält.

Block Nr. 5.
In Block Nr. 5 speichern wir das vom Kunden ausgewählte Datum. Dies muss in einem separaten Block erfolgen, da die Variable question in den folgenden Schritten bei der Rückkehr zu Block 6 nicht mehr das vom Kunden ausgewählte Datum enthält.

Block Nr. 6. Auswahl und Anzeige verfügbarer Buchungszeitfenster.
data - verfügbare Zeitfenster abrufen.
Die Logik ist dieselbe wie in Block Nr. 4 mit der Anzeige verfügbarer Daten. Es ist auch wichtig, daran zu denken, eine höhere Priorität für den Pfeil „Zurück zur Datumsauswahl“ festzulegen.

Block Nr. 7. Speichern der ausgewählten Zeit in einer Variable und Versuch, den Kunden zu buchen.
choosed_time - Zeit speichern
a - Versuch, den Kunden zu buchen
booking_result - Ergebnis der Funktionsausführung abrufen.
Das Ergebnis muss abgerufen werden, da mehrere Personen gleichzeitig versuchen könnten, sich für dieselbe Zeit anzumelden.

Block Nr. 7.1. Kunde konnte nicht gebucht werden.
Dieser Block wird nur für die Fehlermeldung benötigt. Nach dem Senden der Nachricht wird der Kunde zur Auswahl der Buchungszeit zurückgeführt.

Block Nr. 8. Buchung erfolgreich.
Dem Kunden mitteilen, dass er für die Dienstleistung gebucht ist, und eine Schaltfläche zur Zahlung anzeigen.

Beispiel für die Konfiguration von Schaltflächen.
Für die Konfiguration verwenden wir die Variablen, die wir in Block Nr. 3 erhalten haben:

Block Nr. 8.1.
In diesem Block bestätigen wir die erfolgreiche Zahlung. Den Übergang zum Block konfigurieren wir entsprechend dem verwendeten Zahlungssystem.

Block Nr. 8.2. Kunde hat die Dienstleistung nicht bezahlt. Stornierung der Buchung
Wenn der Kunde die Dienstleistung nicht rechtzeitig bezahlt hat, können wir die Buchung stornieren, falls erforderlich.
or_id - die Bestell-ID abrufen
cancel_status - nach Ausführung der Funktion die Antwort abrufen, ob die Stornierung erfolgreich war.

In diesem Beispiel gelangt der Kunde 5 Sekunden nach Erhalt des Zahlungslinks in den Stornierungsblock. In einer realen Situation können Sie die erforderliche Zeit einstellen. Vergessen Sie nicht, den Schalter „Stornieren, wenn Block verlassen wurde“ zu aktivieren.

Vollständiges Schema:

Demonstration


Callback zur Buchung
Nach der Buchung wird ein Callback – eine Benachrichtigung über die Buchung – in den Dialog mit dem Kunden gesendet, der wie folgt aussieht:

new_order_in_calendar - unveränderlicher Teil des Callbacks
[489046159] - order_id, die Kennung der Anfrage
Buchung hinzugefügt von Datum_und_Uhrzeit_der_Buchung
für 30 Minuten - Dauer der Dienstleistung
Objekt: Test 30 - für welches Objekt die Buchung hinzugefügt wurde
Das Aussehen des Callbacks selbst:
new_order_in_calendar: [489046159] Buchung hinzugefügt von 2025-06-01 14:00 bis 2025-06-01 14:30 für 30 Minuten. Objekt: Test 30
Sie können die Reaktion auf den Callback konfigurieren, indem Sie den Wert in der Bedingung des Blocks angeben:

Im Block können Sie die erforderliche Antwortnachricht an den Kunden festlegen.


