Hinweise
Bevor Sie Menüs mit der Food Ordering AI Agent API aufnehmen und verwalten können, müssen Sie Folgendes tun:
Aktivieren Sie die Food Ordering AI Agent API:
gcloud services enable foodorderingaiagent.googleapis.com --project=PROJECTPrüfen Sie, ob Sie die erforderlichen IAM-Berechtigungen haben. Weisen Sie dem Nutzer oder Dienstkonto, das mit der API interagiert, die folgende IAM-Rolle (Identity and Access Management) zu:
- Food Ordering Agent Admin (
roles/foodorderingaiagent.admin): Diese Rolle bietet vollen Zugriff zum Erstellen, Lesen, Aktualisieren und Löschen aller Ressourcen des Food Ordering AI Agent, einschließlich Marken, Geschäfte und Menüs.
Sie können IAM-Rollen über die Google Cloud -Console, das
gcloud-Befehlszeilentool oder die IAM API zuweisen. Weitere Informationen finden Sie unter IAM-Rolle zuweisen.So weisen Sie die Rolle über die Google Cloud Console zu:
- Rufen Sie in der Google Cloud Console die Seite IAM auf.
- Klicken Sie auf Hinzufügen.
- Geben Sie das Hauptkonto (E-Mail-Adresse des Nutzers oder Dienstkontos) ein.
- Wählen Sie die Rolle Food Ordering AI Agent Admin aus.
- Klicken Sie auf Speichern.
Ohne die entsprechenden Berechtigungen werden API-Aufrufe zum Erstellen oder Ändern von Marken, Geschäften oder Menüs abgelehnt. Die Rolle
Food Ordering Agent Viewerreicht für die in dieser Anleitung beschriebenen Aufgaben nicht aus, da sie nur Lesezugriff gewährt.- Food Ordering Agent Admin (
Übersicht
Die Food Ordering AI Agent Menu API ist flexibel und kann verschiedene Menüstrukturen verarbeiten, von kurzen Listen mit einzelnen Artikeln bis hin zu komplexen Menüs mit verschachtelten Modifikatoren und Kombi-Menüs. Die API basiert auf einigen wichtigen Konzepten:
- Menü:Der Container der obersten Ebene für alle bestellbaren Einheiten.
- Artikel:Stellt ein bestellbares Produkt der obersten Ebene aus dem Menü dar, z. B. ein Gericht, eine Vorspeise oder ein beliebiges Produkt, das einzeln bestellt werden kann.
Items können aufModifierGroups verweisen. - ModifierGroup:Eine Sammlung von
Modifier-Optionen, die auf einItemoder ein anderesModifierangewendet werden können (ermöglicht das Verschachteln). Beispiele sind „Wähle deine Seite“, „Belag hinzufügen“ oder „Getränk auswählen“. - Modifikator:Eine einzelne Option innerhalb eines
ModifierGroup, z. B. „Pommes“, „Extra Käse“ oder „Cola“. Mit Modifikatoren kann der Preis angepasst werden. Sie können auch eigene verschachtelteModifierGroup-Elemente haben. - MenuCategory:Wird verwendet, um
Items in Abschnitte für die Anzeige und das Verständnis zu unterteilen (z.B. „Vorspeisen“, „Burger“, „Getränke“).
Wichtige Konzepte und Struktur
In diesem Abschnitt werden die Kernkomponenten des Schemas der Food Ordering AI Agent Menu API und ihre Struktur beschrieben. Es ist wichtig, diese Konzepte zu verstehen, um Ihre Menüdaten richtig zu modellieren.
Elemente
Jeder einzelne Artikel auf Ihrer Speisekarte sollte als Item definiert werden. Wichtige Felder:
id: Eine eindeutige Kennung im Menü.display_name: Der Name, der Kunden angezeigt wird.base_price: Der Grundpreis des Artikels.modifier_groups: Verweise aufModifierGroups, die auf diesen Artikel angewendet werden können.category_ids: Verweise aufMenuCategory-IDs, zu denen dieses Element gehört.availability: Gibt an, wann der Artikel verfügbar ist (z.B. nach Status oder Tageszeit). Wenn keine Angabe gemacht wird, ist der StandardwertSTATUS_AVAILABLE.
Modifikatoren und ModifierGroups
Mit Modifikatoren lassen sich Elemente anpassen.
ModifierGroups definieren eine Reihe von Auswahlmöglichkeiten, einschließlich Einschränkungen wie Mindest- oder Höchstauswahl. Muss mindestens einModifierenthalten.Modifiers stehen für die tatsächlichen Optionen. Sie können einprice_adjustmenthaben und rekursiv auf andereModifierGroupverweisen, um verschachtelte Anpassungen zu ermöglichen (z.B. kann einItem„Menü-Kombi“ einModifierGroup„Getränk auswählen“ haben und dasModifier„Soda“ in dieser Gruppe kann einModifierGroup„Geschmack auswählen“ haben).
Beispiel 1: Beläge
Ein „Bacon Cheeseburger“ Item kann sich auf „Belag“ ModifierGroup beziehen. Dieses ModifierGroup würde Modifiers wie „Extra Käse“ oder „Keine Zwiebeln“ enthalten.
Beispiel 2: Kombinationsmenüs
Einige Menüs haben komplexe Strukturen mit mehreren verschachtelten Auswahlmöglichkeiten, z. B. Kombimenüs. Kombinationen können als Item mit mehreren ModifierGroups modelliert werden, die die Komponenten der Kombination darstellen. Ein „Burger-Menü“ Item, das aus einem festen Hauptgericht in Kombination mit mehreren Optionen für Beilage und Getränk besteht, könnte so modelliert werden:
- Ein
ModifierGroupfür die Seite (z.B. „Side choices“).- Jede Seitenoption wird als
Modifiermodelliert (z.B. „Pommes“, „Salat“).- Jede Getränkeoption kann auf verschachtelte
ModifierGroup-Elemente verweisen (z.B. „Ice options“ (Eisoptionen), „Drink size“ (Getränkegröße), die wiederum aufModifiers verweisen (z.B. „No Ice“ (Kein Eis), „Large drink“ (Großes Getränk)).
- Jede Getränkeoption kann auf verschachtelte
- Jede Seitenoption wird als
- Eine
ModifierGroupfür das Getränk (z.B. „Drinks“).- Jede Getränkeoption wird als
Modifiermodelliert.- Jede Getränkeoption kann auf verschachtelte
ModifierGroup-Elemente verweisen (z.B. „Eisoptionen“, „Getränkegröße“), die wiederum aufModifierverweisen (z.B. „Kein Eis“, „Großes Getränk“).
- Jede Getränkeoption kann auf verschachtelte
- Jede Getränkeoption wird als
- Ein
ModifierGroupfür die Beilagen zum Hauptgericht. (z. B. mit der „Extra Cheese“ (Extra Käse), „Bacon“ (Speck).
Verfügbarkeit
Mit der Availability-Nachricht für Item und Modifier können Sie Folgendes angeben:
status:STATUS_AVAILABLE,STATUS_OUT_OF_STOCKusw.daypart_availability: Links zu bestimmten Tageszeit-IDs, wenn der Artikel nur zu bestimmten Zeiten verfügbar ist (z.B. „Frühstücksmenü“).
Integrationsattribute
Item-, Modifier- und ModifierGroup-Nachrichten enthalten das Feld integration_attributes. Dieses Feld (ItemIntegrationAttributes, ModifierIntegrationAttributes usw.) enthält ein google.protobuf.Struct namens custom_integration_attributes. Damit können Sie beliebige Schlüssel/Wert-Daten speichern, z. B.:
- IDs aus Ihrem Kassensystem.
- Artikelnummern oder andere interne Codes.
- Alle anderen Metadaten, die für die nachgelagerte Auftragsverarbeitung oder POS-Integration erforderlich sind.
Diese Daten werden vom KI-Agenten transparent weitergeleitet.
Labels
Mit dem Feld labels in der Menu-Ressource können Sie Menüs Metadaten hinzufügen, um die Integration und das Debugging zu erleichtern.
Labels sind eine praktische Funktion und haben keine Auswirkungen auf das Verhalten des KI-Agents.
Menü erstellen
Menüs werden mit dem RPC-Aufruf CreateMenu in der MenuService aufgenommen.
Schritte
- Daten transformieren:Konvertieren Sie Ihre vorhandenen Menüdaten (aus Ihrem Kassensystem, Ihrer API oder einer anderen Quelle) in die Struktur, die in der
google.cloud.foodorderingaiagent.v1beta.Menu-Nachricht definiert ist. Dazu müssen Sie Ihre Artikel, Modifikatoren, Kategorien und Preise den entsprechenden API-Nachrichtentypen zuordnen. CreateMenuRequesterstellen:- Legen Sie das Feld
parentfest (z.B.projects/PROJECT/locations/LOCATION). - Füllen Sie das Feld
menumit Ihrem transformiertenMenu-Objekt. - Geben Sie optional eine
menu_idan.
- Legen Sie das Feld
- API aufrufen:Senden Sie
CreateMenuRequestan den EndpunktMenuService.CreateMenu. Die API bereinigt zuerst das Menü, validiert es und gibt dann das endgültigeMenu-Objekt zurück. - Menüaktualisierungen verarbeiten:Bei jeder Aktualisierung der Menüquelldaten (z. B. wenn ein neues Produkt eingeführt wird oder ein Produkt nicht mehr verfügbar ist) sollte ein neues
Menuerstellt werden, das die aktualisierten Quelldaten widerspiegelt. Dabei ist die Verarbeitung von Menüaktualisierungen zu beachten.
Leitfaden zur Datentransformation
Die genaue Logik für die Transformation Ihrer Menüdaten hängt vom Format und der Struktur Ihres Quellsystems ab (z.B. POS API, Datenbankschema). So gehen Sie im Allgemeinen vor:
- Daten exportieren:Sie erhalten einen vollständigen Export Ihrer Menüdaten, einschließlich aller Artikel, Modifikatoren, Preise und Beziehungen.
- Kartenentitäten:
- Ermitteln Sie für jedes Element in Ihren Quelldaten die entsprechenden Entitäten im API-Schema des KI-Agents für die Essensbestellung. Die „Speisen und Getränke“ Ihres Kassensystems werden wahrscheinlich
Item-Objekten zugeordnet. „Bestelloptionen“ oder „Add-ons“ werdenModifierundModifierGroupzugeordnet. - Beziehungen mithilfe von IDs herstellen Verknüpfen Sie beispielsweise
Itemmit den entsprechendenModifierGroupmithilfe des Referenzfeldsmodifier_groups.
- Ermitteln Sie für jedes Element in Ihren Quelldaten die entsprechenden Entitäten im API-Schema des KI-Agents für die Essensbestellung. Die „Speisen und Getränke“ Ihres Kassensystems werden wahrscheinlich
- Verschachtelte Strukturen verarbeiten:Wenn Ihr Menü verschachtelte Modifizierer enthält (z.B. die Auswahl eines Getränkearomas für ein Kombimenü), modellieren Sie dies, indem Sie
Modifiers verwenden, die auf andereModifierGroups verweisen. - Attribute einfügen:Füllen Sie Felder wie
display_name,base_price,price_adjustmentundavailabilityanhand Ihrer Quelldaten aus. - POS-IDs einfügen:Speichern Sie die internen POS- oder System-IDs für jedes Element, jede Änderung und jede Gruppe im Feld
custom_integration_attributes. So können Sie die von dem Agenten erstellteOrderin die Darstellung einer endgültigen Bestellung oder eines Warenkorbs in Ihrer Anwendung übersetzen. - Scripting:Sie müssen wahrscheinlich ein Skript (z.B. in Python, Node.js oder Go) schreiben, um Daten aus Ihrer Quelle abzurufen, die Transformation durchzuführen und die Methode
CreateMenuaufzurufen. Dieses Skript verwendet die Google Cloud -Clientbibliotheken für die Authentifizierung und API-Interaktion.
Workflow für die konzeptionelle Transformation:
In diesem Workflow wird beschrieben, wie Menüdaten aus einem Quellsystem in das Format der Food Ordering AI Agent API umgewandelt werden:
- Kategorien extrahieren und zuordnen:
- Kategorien oder Abschnitte in Ihren Quelldaten identifizieren (z.B. „Vorspeisen“, „Hauptgerichte“).
- Wandeln Sie jedes in ein
MenuCategory-Objekt mit einem eindeutigenidunddisplay_nameum.
- Elemente extrahieren und zuordnen:
- Verkaufsfähige Artikel in Ihren Quelldaten identifizieren
- Wandeln Sie jedes in ein
Item-Objekt um und füllen Sieid,display_name,base_priceundavailabilityaus. - Ordnen Sie jede
Itemmithilfe des Feldscategory_idsden entsprechenden Kategorien zu. - Speichern Sie Quellsystem-IDs (z. B. PLU oder Artikelnummer) in
item.integration_attributes.custom_integration_attributes.
- Modifikatoren extrahieren und zuordnen:
- Identifizieren Sie Anpassungen, Optionen oder Add-ons für Artikel in Ihren Quelldaten.
- Verwandte Optionen gruppieren (z.B. „Side Options“, „Drink Choices“, „Extra Toppings“) in
ModifierGroup-Objekte. Definieren Sie für jedeModifierGroupRegeln für die Mindest- und Höchstauswahl. - Jede einzelne Option transformieren (z.B. „Pommes“, „Cola“, „Extra Käse“ in
Modifier-Objekte innerhalb der entsprechendenModifierGroup. Füllen Sieprice_adjustmentaus, falls zutreffend. - Speichern Sie Quellsystem-IDs in
modifier_group.integration_attributes.custom_integration_attributesundmodifier.integration_attributes.custom_integration_attributes.
- Beziehungen aufbauen:
- Füllen Sie für jedes
Itemdas Feldmodifier_groupsmit Verweisen auf dieid-Elemente derModifierGroup-Elemente aus, die darauf zutreffen. - Wenn für ein
Modifierweitere Anpassungen möglich sind, z.B. die Auswahl einer Geschmacksrichtung für den Modifikator „Soda“, füllen Sie das Feldmodifier_groupsaus, um verschachtelte Modifikatoren zu erstellen.
- Füllen Sie für jedes
- Zusammenstellen und aufnehmen:
- Kombinieren Sie alle
MenuCategory-,Item-,ModifierGroup- undModifier-Objekte in den Listen in einer einzelnenMenu-Nachricht. - Rufen Sie den
CreateMenu-RPC mit der vollständig zusammengestelltenMenu-Nachricht als Eingabe auf.
- Kombinieren Sie alle
Umgang mit Speisekarten-Updates
Das Menü ist unveränderlich. Nachdem ein Menü mit dem CreateMenu-RPC-Aufruf erstellt wurde, kann es nicht mehr geändert werden. Wenn Sie Menüaktualisierungen in ein Menü übernehmen möchten, z. B. um Artikelpreise zu ändern, Optionen zu bearbeiten oder die Verfügbarkeit anzupassen, müssen Sie eine neue Menüressource erstellen, indem Sie CreateMenu noch einmal aufrufen. Jede Version Ihres Menüs muss als neue Menu-Ressource mit einer eindeutigen menu_id aufgenommen werden.
Der Prozess für die Aufnahme einer neuen Version eines Menüs ist identisch mit der ersten Aufnahme des Menüs und durchläuft dieselben Schritte für Bereinigung und Validierung. Bei der Bearbeitung von Bestellungen spiegelt das Verhalten des Kundenservicemitarbeiters immer die zuletzt erstellte Menu wider, die mit der in der Konfiguration der Sitzung referenzierten Store verknüpft ist.
Automatische Bereinigung des Menüs
Die CreateMenu API führt automatisch mehrere Bereinigungsschritte aus, um häufige Probleme zu beheben und sicherzustellen, dass Menüinhalte in der gesamten API einheitlich dargestellt werden. Die Validierungen werden nach diesen Bereinigungen angewendet, um die Menüintegration für Clients zu vereinfachen:
- Standardverfügbarkeit:
Items undModifiers ohne expliziteAvailability.Statuswerden aufSTATUS_AVAILABLEfestgelegt. - Nicht referenzierte Entitäten entfernen:
Modifiers undModifierGroups, auf die nicht transitiv von einemItemverwiesen wird, werden aus dem Menü entfernt, da sie nicht bestellt werden können. - Leere Modifikatorgruppen entfernen:
ModifierGroups, die keinemodifier_idsenthalten, werden entfernt und alle Verweise darauf werden gelöscht.
Menüvalidierung
Nach der Bereinigung validiert die API das Menü anhand strenger Regeln, um sicherzustellen, dass es wohlgeformt ist und zuverlässig vom KI-Agenten verwendet werden kann. Wenn die Validierung fehlschlägt, wird beim CreateMenu-Aufruf ein Fehler mit Details zu den Problemen zurückgegeben. Wichtige Validierungen:
- Pflichtfelder:Prüft, ob alle Pflichtfelder wie
id,display_nameundavailability.statusvorhanden sind. - Eindeutige IDs:Alle
Items,Modifiers undModifierGroups müssen im Menü eindeutige IDs haben. - Eindeutige Anzeigenamen:
- Alle
Itemmüssen eindeutigedisplay_namehaben. - Innerhalb eines bestimmten
ModifierGroupmüssen alle enthaltenenModifiers eindeutigedisplay_names haben.
- Alle
- Referenzintegrität:
- Alle
modifier_group_ids, auf die vonItemoderModifierverwiesen wird, müssen im Menü vorhanden sein. - Alle
modifier_ids, auf die vonModifierGroups verwiesen wird, müssen im Menü vorhanden sein. - Die in
ModifierGroupReferenceangegebenen Standardmodifizierer müssen in der referenziertenModifierGroupvorhanden sein. - Wenn in einer
Modifiermititem_idauf eineItemverwiesen wird, muss dieseItemvorhanden sein.
- Alle
- Einschränkungen für Modifikatorgruppen:
ModifierGroupdarf nicht leer sein.- Die Mindest- oder Höchstanzahl der Auswahlen innerhalb von
ModifierGroupwird auf logische Konsistenz geprüft. Item- oderModifier-Ebenemodifier_constraintswerden anhand der Auswahlbeschränkungen der referenziertenModifierGroupvalidiert, um sicherzustellen, dass sie erfüllbar sind.
- Verschachtelungstiefe:Die Tiefe der verschachtelten Modifikatoren ist begrenzt (z.B.
Item->ModifierGroup->Modifier->ModifierGroup->Modifier… bis zu maximal 5 Ebenen. - Tageszeitsegment-Validierung:Wenn Tageszeitsegmente in
Availabilityverwendet werden, müssen sie in der zugehörigenStore-Ressource definiert sein. - Referenzen auf Modifikatorartikel:
Modifier, die mititem_idauf einItemverweisen, dürfen keine Felder wiedisplay_nameoderavailabilityhaben, da diese vom referenziertenItemübernommen werden.
Wenn eine dieser Validierungsregeln nicht erfüllt wird, kann das Menü nicht erstellt oder aktualisiert werden. Die Fehlermeldung enthält Details dazu, welche Einheiten den Verstoß verursachen.
API-Referenz
Vollständige Informationen zu allen Nachrichten und Feldern finden Sie in der RPC-Referenz für die Food Ordering AI Agent API.
Best Practices
- Eindeutige IDs:Achten Sie darauf, dass alle
id-Felder imMenu-Bereich (fürItem,Modifier,ModifierGroup,MenuCategory) eindeutig sind. - Aussagekräftige Namen:Verwenden Sie klare, kundenfreundliche
display_name. Geben Sie unterschiedlichedisplay_namefür semantisch unterschiedliche Produkte an, damit der Kundenservicemitarbeiter die Anfragen entsprechend disambiguieren kann. - Kombinationsmahlzeiten effektiv modellieren:Modellieren Sie Kombinationsmahlzeiten als
ItemmitModifierGroupals Beilagen, Getränke und andere Optionen, wie unter Kombinationsmahlzeiten beschrieben. So kann der Kundenservicemitarbeiter Kunden bei der Auswahl von Kombinationen richtig anleiten. - Integrationsattribute verwenden:Speichern Sie alle erforderlichen POS- oder internen Systemkennzeichnungen im
custom_integration_attributes, um eine nahtlose Auftragsintegration zu ermöglichen. - Verfügbarkeit verwalten:Halten Sie den Status
Availabilityauf dem neuesten Stand. - Gründlich testen:Testen Sie nach der Aufnahme, wie gut der Agent das Menü mit verschiedenen Bestellkombinationen versteht.