← Alle Beiträge
KI & Modelle

Vapi und n8n verbinden Telefonanrufe mit Tischreservierungen

Ein Sprachassistent erfasst den Buchungswunsch, n8n entscheidet über die Verfügbarkeit und WhatsApp übermittelt die bestätigten Reservierungsdaten.

8 Minuten Lesezeit
Im Beitrag n8n · PostgreSQL · Slack · Twilio · Docker · GitHub

Wenn während des Abendgeschäfts mehrere Gäste gleichzeitig anrufen, wird die telefonische Tischreservierung schnell zum Engpass. Eine konkrete Tool-Kombination verlagert die wiederkehrenden Teile des Gesprächs an einen Sprachassistenten: Vapi nimmt den Anruf entgegen, erfasst den Reservierungswunsch und ruft für die eigentliche Buchung einen n8n-Workflow auf. Nach erfolgreicher Prüfung kann eine Bestätigung über WhatsApp folgen.

Das Neue ist dabei kein eigenständiger Reservierungsdienst und auch kein angekündigter neuer n8n-Kernbaustein. Entscheidend ist die von Vapi dokumentierte n8n-Anbindung: Ein Vapi-Assistent kann während des Gesprächs ein n8n-Tool verwenden und strukturierte Angaben an die nachgelagerte Automatisierung übergeben. Dadurch lässt sich natürliche Sprache mit einer selbst verwalteten Reservierungslogik verbinden, ohne die Entscheidung über freie Tische dem Sprachmodell zu überlassen.

Das n8n-Tool verbindet Gespräch und Buchungslogik

Vapi beschreibt Tools als Erweiterungen, mit denen ein Sprachassistent externe Aktionen ausführen oder Daten abrufen kann. Neben vorbereiteten Integrationen lassen sich eigene Funktionen und HTTP-Endpunkte anbinden. Die spezielle n8n-Integration von Vapi überträgt dieses Prinzip auf einen n8n-Workflow: Der Assistent ruft das Tool im Gespräch auf und übergibt die dafür vorgesehenen Parameter.

Für eine Tischreservierung sind insbesondere Datum, Uhrzeit, Personenzahl und eine Kontaktmöglichkeit relevant. Angaben wie Name, besondere Wünsche oder bevorzugter Bereich können ergänzt werden, sofern das Restaurant sie tatsächlich benötigt. n8n übernimmt diese Werte als strukturierte Eingabe. Dort werden sie mit Öffnungszeiten, Zeitfenstern und dem vorhandenen Tischbestand abgeglichen.

Diese Trennung ist wesentlich: Vapi führt das Gespräch und erkennt die Absicht des Gastes. n8n verarbeitet die betrieblichen Regeln. Der Sprachassistent darf deshalb nicht allein aus einer plausibel klingenden Formulierung ableiten, dass ein Tisch frei ist. Seine Antwort muss auf dem Ergebnis des aufgerufenen Workflows beruhen.

Aus „heute Abend um acht“ werden eindeutige Felder

Im Gespräch formulieren Gäste selten wie in einem Buchungsformular. „Heute Abend gegen acht für vier Personen“ enthält zwar die wichtigsten Angaben, aber noch keine dauerhaft verwertbare Reservierung. Das relative Datum muss auf einen konkreten Kalendertag bezogen, die Uhrzeit vereinheitlicht und die Personenzahl als Zahl übergeben werden.

Für den Tool-Aufruf bietet sich ein kleines, stabiles Datenmodell an. Es enthält einen eindeutigen Standort, Datum und Uhrzeit in festgelegten Formaten, die Anzahl der Gäste sowie Name und Kontaktkanal. Optionale Wünsche sollten getrennt von den Pflichtfeldern übertragen werden. So kann n8n fehlende Angaben erkennen, ohne Freitext nachträglich erraten zu müssen.

Bei mehreren Restaurantstandorten gehört der Standort zu den Pflichtangaben. Bei unklaren Aussagen fragt der Assistent gezielt nach: „Meinen Sie heute, den 18. September, um 20 Uhr?“ Erst nach dieser Bestätigung wird das Tool aufgerufen. Diese Rückfrage verhindert vor allem Fehler bei relativen Zeitangaben, ähnlich klingenden Ortsnamen und Wünschen kurz nach Mitternacht.

Der Rückgabewert an Vapi sollte ebenso eindeutig sein. Praktisch sind klar unterscheidbare Zustände wie bestätigt, alternative Zeit verfügbar, ausgebucht oder Eingabe unvollständig. Dazu kommen die tatsächlich reservierte Uhrzeit und eine Buchungskennung. Der Assistent kann daraus eine passende Antwort formulieren, ohne interne Datenbankfelder oder technische Fehlermeldungen vorzulesen.

n8n prüft Bestand, Zeitfenster und Doppelbuchungen

Der Workflow beginnt mit den strukturierten Gesprächsdaten. Anschließend normalisiert n8n Datum, Uhrzeit und Telefonnummer und prüft, ob das gewünschte Zeitfenster grundsätzlich buchbar ist. Danach folgt die Abfrage der Reservierungsablage. Im beschriebenen Praxisaufbau dienen Airtable oder Postgres dazu, Tischbestand und verfügbare Zeitfenster zu speichern.

Die Auswahl eines Tisches sollte nicht nur nach der maximalen Sitzplatzzahl erfolgen. Ein Restaurant kann beispielsweise definieren, welche Tischgrößen für eine Gruppe zulässig sind, wie lange ein Zeitfenster blockiert wird und ob mehrere Tische kombiniert werden dürfen. Diese Regeln gehören in die Buchungslogik beziehungsweise Datenhaltung, nicht in einen frei formulierten Assistenten-Prompt.

Gibt es einen passenden Platz, schreibt n8n die Reservierung und gibt den bestätigten Datensatz zurück. Gibt es keinen Platz, kann der Workflow benachbarte Zeitfenster ermitteln und als Alternativen liefern. Vapi nennt dem Gast dann konkrete Möglichkeiten, statt das Gespräch mit einem pauschalen Hinweis auf die Auslastung zu beenden. Eine Alternative wird erst nach der Zustimmung des Gastes erneut zur Buchung übergeben.

Gegen Doppelbuchungen hilft eine atomare Vergabe des Platzes: Prüfung und Eintrag dürfen nicht als voneinander unabhängige Zusage behandelt werden. Treffen zwei Anrufe nahezu gleichzeitig ein, muss die Datenhaltung entscheiden, welcher Schreibvorgang erfolgreich ist. Der zweite Vorgang erhält anschließend eine Alternative. Das ist eine Aufgabe der Reservierungslogik und kein Problem, das durch eine besonders ausführliche Sprachanweisung gelöst wird.

Symbolbild
Symbolbild

WhatsApp bestätigt nur das gespeicherte Ergebnis

Nach dem erfolgreichen Eintrag kann n8n über die WhatsApp Cloud API eine Nachricht an den Gast auslösen. Sie sollte die bestätigten Angaben wiederholen: Restaurant beziehungsweise Standort, Datum, Uhrzeit, Personenzahl und Buchungskennung. Damit erhält der Gast eine überprüfbare Zusammenfassung, selbst wenn einzelne Details im Telefonat akustisch schwer verständlich waren.

Die Reihenfolge ist dabei eindeutig. Zuerst wird der freie Platz geprüft, danach wird die Reservierung gespeichert und erst anschließend wird die Bestätigung versendet. Eine verschickte Nachricht ist kein Ersatz für einen erfolgreichen Datenbankeintrag. Scheitert lediglich der Versand, bleibt die Buchung bestehen und der Kommunikationsfehler kann separat behandelt werden.

Der gleiche Kanal eignet sich für eine spätere Erinnerung oder einen Hinweis zur Änderung der Reservierung. Solche Nachrichten sollten immer auf den gespeicherten Buchungsdaten beruhen. Der Sprachassistent muss sie nicht aus dem Gespräch rekonstruieren. Auf diese Weise bleibt die Reservierungsablage der maßgebliche Datensatz, während Telefon und WhatsApp unterschiedliche Zugänge zu denselben Informationen bilden.

Interne Hinweise bleiben vom Gastdialog getrennt

Im Praxisaufbau wird zusätzlich Slack für Benachrichtigungen an Küche oder Serviceleitung eingesetzt. Das ist vor allem bei großen Gruppen, kurzfristigen Buchungen oder besonderen Anforderungen nützlich. n8n kann anhand der strukturierten Felder entscheiden, ob eine interne Meldung erforderlich ist. Eine gewöhnliche Reservierung muss dadurch nicht denselben Alarm auslösen wie eine große Gruppe mit wenig Vorlauf.

Auch hier lohnt sich eine klare Rollenverteilung. Die Nachricht an den Gast bestätigt das, was für ihn relevant ist. Die interne Meldung kann weitere betriebliche Angaben enthalten, etwa den Standort, das Zeitfenster und einen besonderen Wunsch. Technische Details aus dem Tool-Aufruf gehören in keine der beiden Nachrichten; sie werden für Protokollierung und Fehleranalyse getrennt erfasst.

Die Telefonie wird im beschriebenen Aufbau über Twilio SIP an Vapi weitergeleitet. Damit bleibt die Rufnummernanbindung ein eigener Teil der Architektur. Vapi bearbeitet den Dialog und den Tool-Aufruf, während n8n die angeschlossenen Systeme koordiniert. Ein Wechsel der Datenhaltung oder des internen Benachrichtigungskanals verändert deshalb nicht automatisch die Gesprächsführung.

Fehler brauchen konkrete Gesprächsantworten

Ein Sprachassistent wirkt nur dann verlässlich, wenn technische Zustände in verständliche Antworten übersetzt werden. Fehlt die Personenzahl, fragt Vapi genau diese Angabe nach. Ist das gewünschte Zeitfenster belegt, nennt der Assistent nur Alternativen, die n8n tatsächlich zurückgegeben hat. Bei einem technischen Abbruch darf er keine erfolgreiche Reservierung behaupten.

Für Zeitüberschreitungen und nicht erreichbare Systeme bietet sich eine neutrale Rückmeldung an: Die Reservierung konnte gerade nicht bestätigt werden. Je nach Betriebsmodell kann n8n den Fall anschließend als Rückrufwunsch speichern oder an einen Menschen weitergeben. Wichtig ist die sprachliche Genauigkeit. „Ich habe Ihre Anfrage aufgenommen“ und „Ihr Tisch ist reserviert“ beschreiben zwei unterschiedliche Zustände.

Auch wiederholte Tool-Aufrufe benötigen eine eindeutige Behandlung. Eine Buchungskennung oder ein anderer Idempotenzschlüssel verhindert, dass derselbe bestätigte Wunsch durch eine Wiederholung doppelt gespeichert wird. Das ist besonders relevant, wenn eine Verbindung kurz unterbrochen wird oder die Antwort des Workflows verspätet beim Assistenten eintrifft.

Protokolle sollten Gespräch, Tool-Aufruf und Buchung über eine gemeinsame Kennung verknüpfen, ohne unnötige Gesprächsinhalte in jedem System zu vervielfältigen. So lässt sich nachvollziehen, ob ein Fehler bei der Erfassung, der Verfügbarkeitsprüfung, dem Speichern oder dem Nachrichtenversand entstanden ist.

Selbst gehostetes n8n hält Regeln und Datenwege veränderbar

Der Praxisbericht setzt auf eine selbst gehostete n8n-Instanz in Docker. Der praktische Gewinn liegt in der Kontrolle über Verknüpfungen und Entscheidungslogik: Das Restaurant kann seine Datenhaltung, Zeitfenster, Benachrichtigungen und Sonderregeln selbst kombinieren. Vapi bleibt dabei die sprachliche Oberfläche und der Auslöser des n8n-Tools.

Diese Freiheit bringt mehrere getrennte Betriebsbereiche mit sich. Telefonie, Sprachverarbeitung, Automatisierung, Datenbank und Nachrichtenversand müssen jeweils erreichbar sein. Vapis Preisseite trennt die Nutzung der Plattform von zusätzlichen Kosten der eingebundenen Telefonie-, Modell-, Transkriptions- und Sprachanbieter. Die Gesamtkosten hängen deshalb von Gesprächsdauer und gewählter Anbieter-Konfiguration ab; eine einzige Pauschale bildet den gesamten Aufbau nicht ab.

Für den laufenden Betrieb ist eine sparsame Tool-Nutzung sinnvoll. Fehlende Pflichtangaben werden zunächst im Gespräch ergänzt, bevor n8n aufgerufen wird. Eine bestätigte Buchung benötigt dagegen eine eindeutige Antwort aus dem Workflow. So werden unnötige Aufrufe vermieden, während die entscheidende Zusage weiterhin aus der Reservierungslogik kommt.

Wer Vapi-Ressourcen serverseitig verwalten möchte, findet außerdem ein offizielles TypeScript-SDK. Es stellt typisierte Zugriffe auf die Vapi-API bereit. Für die hier beschriebene Reservierung ist das SDK jedoch nicht die Buchungslogik: Diese liegt weiterhin im n8n-Workflow und in der angebundenen Datenhaltung.

Geeignet für klar definierte Reservierungsregeln

Die Verbindung bietet sich an, wenn telefonische Anfragen häufig demselben Muster folgen und der verfügbare Bestand bereits strukturiert geführt wird. Besonders gut passt sie zu Restaurantgruppen, bei denen Standorte, Tischgrößen, Öffnungszeiten und Zeitfenster als eindeutige Regeln vorliegen. Dann kann n8n eine konkrete Entscheidung treffen und Vapi diese natürlich vermitteln.

Weniger geeignet ist eine automatische Zusage, wenn die Belegung nur in Köpfen, handschriftlichen Notizen oder mehreren unverbundenen Kalendern existiert. Der Sprachassistent kann fehlende Bestandsdaten nicht durch ein flüssiges Gespräch ersetzen. Die Qualität der Antwort hängt unmittelbar davon ab, ob n8n auf einen aktuellen, konsistenten Reservierungsbestand zugreifen kann.

Der stärkste Nutzen dieser Kombination ist deshalb nicht, dass eine KI telefoniert. Er liegt in der sauberen Grenze zwischen Sprache und Entscheidung: Vapi versteht und fragt nach, n8n wendet die Restaurantregeln an, die Datenhaltung reserviert den Platz und WhatsApp bestätigt genau dieses Ergebnis. Dadurch wird aus einem natürlich formulierten Wunsch eine nachvollziehbare Buchung, ohne dass das Sprachmodell selbst über freie Tische entscheidet.

Verwandt
Zur Bibliothek