Sebelum memulai
Sebelum Anda dapat menyerap dan mengelola menu menggunakan Food Ordering AI Agent API, pertama:
Aktifkan Food Ordering AI Agent API:
gcloud services enable foodorderingaiagent.googleapis.com --project=PROJECTPastikan Anda memiliki izin IAM yang diperlukan. Berikan peran Identity and Access Management (IAM) berikut kepada pengguna atau akun layanan yang berinteraksi dengan API:
- Admin Agen Pemesanan Makanan (
roles/foodorderingaiagent.admin): Peran ini memberikan akses penuh untuk membuat, membaca, memperbarui, dan menghapus semua resource Agen AI Pemesanan Makanan, termasuk Merek, Toko, dan Menu.
Anda dapat memberikan peran IAM menggunakan konsol Google Cloud , alat command line
gcloud, atau IAM API. Untuk mengetahui informasi selengkapnya, lihat Memberikan peran IAM.Untuk memberikan peran menggunakan konsol Google Cloud :
- Di konsol Google Cloud , buka halaman IAM.
- Klik Tambahkan.
- Masukkan akun utama (email pengguna atau akun layanan).
- Pilih peran Admin Agen AI Pemesanan Makanan.
- Klik Simpan.
Tanpa izin yang sesuai, panggilan API untuk membuat atau mengubah Merek, Toko, atau Menu akan ditolak. Peran
Food Ordering Agent Viewertidak cukup untuk tugas yang dijelaskan dalam panduan ini, karena hanya memberikan akses hanya baca.- Admin Agen Pemesanan Makanan (
Ringkasan
Food Ordering AI Agent Menu API dirancang agar fleksibel dan dapat mengakomodasi berbagai struktur menu, mulai dari daftar singkat item mandiri hingga menu kompleks dengan pengubah bertingkat dan makanan kombinasi. API ini dibuat berdasarkan beberapa konsep utama:
- Menu: Penampung tingkat teratas untuk semua entitas yang dapat dipesan.
- Item: Merepresentasikan produk tingkat teratas yang dapat dipesan dari menu, seperti makanan, hidangan utama, atau produk apa pun yang dapat dipesan secara terpisah.
Itemdapat mereferensikanModifierGroup. - ModifierGroup: Kumpulan opsi
Modifieryang dapat diterapkan keItematauModifierlain (memungkinkan penyusunan). Contohnya termasuk "Pilih Sisi Anda", "Tambahkan Topping", atau "Pilih Rasa Minuman". - Pengubah: Setiap opsi dalam
ModifierGroup, seperti "Kentang Goreng", "Keju Ekstra", atau "Cola". Pengubah dapat menyesuaikan harga dan juga dapat memilikiModifierGroupbertingkatnya sendiri. - MenuCategory: Digunakan untuk mengelola
Itemke dalam bagian untuk ditampilkan dan dipahami (misalnya, "Appetizers", "Burgers", "Drinks").
Konsep dan struktur utama
Bagian ini menjelaskan komponen inti skema Food Ordering AI Agent Menu API dan cara penyusunannya. Memahami konsep ini sangat penting untuk memodelkan data menu Anda dengan benar.
Item
Setiap item berbeda dalam menu Anda harus ditentukan sebagai Item. Kolom utama meliputi:
id: ID unik dalam menu.display_name: Nama yang ditampilkan kepada pelanggan.base_price: Harga dasar item.modifier_groups: Referensi keModifierGroupyang dapat berlaku untuk item ini.category_ids: Referensi ke IDMenuCategoryyang menjadi bagian dari item ini.availability: Menentukan kapan item tersedia (misalnya, menurut status atau bagian hari). Jika tidak ditentukan, nilai defaultnya adalahSTATUS_AVAILABLE.
Pengubah dan ModifierGroups
Pengubah memungkinkan penyesuaian item.
ModifierGroupmenentukan serangkaian pilihan, termasuk batasan seperti pilihan minimum atau maksimum. Harus berisi minimal satuModifier.Modifiers mewakili opsi sebenarnya.price_adjustmentdapat memilikiprice_adjustmentdan dapat mereferensikanModifierGrouplain secara rekursif untuk penyesuaian bertingkat (misalnya,Item"Combo Makanan" dapat memilikiModifierGroup"Pilih Minuman Anda", danModifier"Soda" dalam grup tersebut dapat memilikiModifierGroup"Pilih Rasa").
Contoh 1: Topping
"Bacon Cheeseburger" Item dapat merujuk ke "Topping" ModifierGroup. ModifierGroup ini akan berisi Modifier seperti "Keju Ekstra", "Tanpa Bawang", dll.
Contoh 2: Makanan kombinasi (Combo)
Beberapa menu memiliki struktur kompleks yang terdiri dari beberapa pilihan bertingkat, seperti makanan kombinasi, atau "combo". Kombinasi dapat dimodelkan sebagai Item dengan beberapa ModifierGroup yang merepresentasikan komponen kombinasi. Misalnya, Item "Burger Combo", yang terdiri dari hidangan utama tetap yang dipaketkan dengan beberapa opsi untuk lauk dan minuman, dapat dimodelkan dengan:
ModifierGroupuntuk samping (misalnya, "Side choices").- Setiap opsi sisi dimodelkan sebagai
Modifier(misalnya, "Kentang Goreng", "Salad").- Setiap opsi minuman dapat mereferensikan
ModifierGroupbertingkat (misalnya, "Ice options", "Drink size") yang pada gilirannya mereferensikanModifiers (misalnya, "No Ice", "Large drink").
- Setiap opsi minuman dapat mereferensikan
- Setiap opsi sisi dimodelkan sebagai
ModifierGroupuntuk minuman (misalnya, "Minuman").- Setiap opsi minuman dimodelkan sebagai
Modifier.- Setiap opsi minuman dapat mereferensikan
ModifierGroupbertingkat (misalnya, "Opsi es", "Ukuran minuman") yang pada gilirannya mereferensikanModifiers (misalnya, "Tanpa Es", "Minuman besar").
- Setiap opsi minuman dapat mereferensikan
- Setiap opsi minuman dimodelkan sebagai
ModifierGroupuntuk topping pada hidangan utama. (mis., "Keju Ekstra", "Bacon").
Ketersediaan
Pesan Availability di Item dan Modifier memungkinkan Anda menentukan:
status:STATUS_AVAILABLE,STATUS_OUT_OF_STOCK, dll.daypart_availability: Menautkan ke ID bagian waktu tertentu jika item hanya tersedia selama waktu tertentu (misalnya, "Breakfast Menu").
Atribut integrasi
Pesan Item, Modifier, dan ModifierGroup berisi kolom integration_attributes. Kolom ini (ItemIntegrationAttributes, ModifierIntegrationAttributes, dll.) menyimpan google.protobuf.Struct yang disebut custom_integration_attributes. Anda dapat menggunakan ini untuk menyimpan data nilai kunci arbitrer, seperti:
- ID dari sistem Tempat Penjualan (POS) Anda.
- SKU atau kode internal lainnya.
- Metadata lain yang diperlukan untuk pemrosesan pesanan downstream atau integrasi POS.
Data ini diteruskan secara buram oleh agen AI.
Label
Anda dapat menggunakan kolom labels pada resource Menu untuk melampirkan metadata ke menu guna membantu integrasi dan proses debug.
Label adalah fitur praktis dan tidak memengaruhi perilaku agen AI.
Membuat Menu
Menu dimasukkan menggunakan panggilan RPC CreateMenu dalam MenuService.
Langkah
- Mengubah Data Anda: Konversi data menu yang ada (dari POS, API, atau sumber lain) ke dalam struktur yang ditentukan oleh pesan
google.cloud.foodorderingaiagent.v1beta.Menu. Hal ini melibatkan pemetaan item, pengubah, kategori, dan harga ke jenis pesan API yang sesuai. - Buat
CreateMenuRequest:- Tetapkan kolom
parent(misalnya,projects/PROJECT/locations/LOCATION). - Isi kolom
menudengan objekMenuyang telah diubah. - (Opsional) berikan
menu_id.
- Tetapkan kolom
- Panggil API: Kirim
CreateMenuRequestke endpointMenuService.CreateMenu. API akan membersihkan menu terlebih dahulu, lalu memvalidasinya, dan menampilkan objekMenuakhir. - Menangani Pembaruan Menu: Setiap kali data sumber menu diperbarui (misalnya, saat produk baru diperkenalkan, atau saat produk tidak tersedia),
Menubaru harus dibuat yang mencerminkan data sumber yang diperbarui, dengan mengikuti penanganan pembaruan menu.
Panduan untuk transformasi data
Logika spesifik untuk mentransformasi data menu Anda akan bergantung pada format dan struktur sistem sumber Anda (misalnya, POS API, skema database). Berikut pendekatan umumnya:
- Mengekspor Data: Dapatkan ekspor lengkap data menu Anda, termasuk semua item, pengubah, harga, dan hubungan.
- Memetakan Entitas:
- Identifikasi entity yang sesuai dalam skema Food Ordering AI Agent API untuk setiap elemen dalam data sumber Anda. Misalnya, "item menu" POS Anda kemungkinan akan dipetakan ke objek
Item. "Opsi pesanan" atau "add-on" akan dipetakan keModifierdanModifierGroup. - Membangun hubungan menggunakan ID. Misalnya, tautkan
ItemkeModifierGroupyang berlaku menggunakan kolom referensimodifier_groups.
- Identifikasi entity yang sesuai dalam skema Food Ordering AI Agent API untuk setiap elemen dalam data sumber Anda. Misalnya, "item menu" POS Anda kemungkinan akan dipetakan ke objek
- Menangani Struktur Bertingkat: Jika menu Anda memiliki pengubah bertingkat (misalnya, memilih rasa minuman untuk soda dalam makanan kombo), buat model ini dengan membuat
Modifiers merujuk keModifierGroups lain. - Isi Atribut: Isi kolom seperti
display_name,base_price,price_adjustment, danavailabilityberdasarkan data sumber Anda. - Sertakan ID POS: Yang terpenting, simpan ID POS atau sistem internal Anda untuk setiap item, pengubah, dan grup dalam kolom
custom_integration_attributes. Dengan begitu, Anda dapat menerjemahkanOrderyang dihasilkan oleh agen kembali ke representasi aplikasi Anda tentang pesanan akhir atau keranjang yang sedang dalam proses. - Pembuatan skrip: Anda mungkin perlu menulis skrip (misalnya, di Python, Node.js, Go) untuk mengambil data dari sumber, melakukan transformasi, dan memanggil metode
CreateMenu. Skrip ini akan menggunakan Google Cloud library klien untuk autentikasi dan interaksi API.
Alur Kerja Transformasi Konseptual:
Alur kerja ini menguraikan proses transformasi data menu dari sistem sumber ke format Food Ordering AI Agent API:
- Mengekstrak dan Memetakan Kategori:
- Identifikasi kategori atau bagian dalam data sumber Anda (misalnya, "Appetizers", "Entrees").
- Ubah setiap item menjadi objek
MenuCategorydenganiddandisplay_nameyang unik.
- Ekstrak dan Petakan Item:
- Identifikasi item yang dapat dijual di data sumber Anda.
- Ubah setiap objek menjadi objek
Item, dengan mengisiid,display_name,base_price, danavailability. - Petakan setiap
Itemke kategorinya menggunakan kolomcategory_ids. - Simpan ID sistem sumber (seperti PLU atau SKU) di
item.integration_attributes.custom_integration_attributes.
- Mengekstrak dan Memetakan Pengubah:
- Identifikasi penyesuaian, opsi, atau add-on item dalam data sumber Anda.
- Mengelompokkan opsi terkait (misalnya, "Side Options", "Drink Choices", "Extra Toppings") menjadi objek
ModifierGroup. Tentukan aturan pemilihan minimum dan maksimum pada setiapModifierGroup. - Mengubah setiap opsi individual (misalnya, "Kentang Goreng", "Cola", "Keju Ekstra") ke dalam objek
ModifierdalamModifierGroupyang sesuai. Isiprice_adjustmentjika ada. - Simpan ID sistem sumber di
modifier_group.integration_attributes.custom_integration_attributesdanmodifier.integration_attributes.custom_integration_attributes.
- Membangun Hubungan:
- Untuk setiap
Item, isi kolommodifier_groups-nya dengan referensi keiddariModifierGroupyang berlaku untuknya. - Jika
Modifiermemungkinkan penyesuaian lebih lanjut (misalnya, memilih rasa untuk pengubah "Soda"), isi kolommodifier_groups-nya untuk membuat pengubah bertingkat.
- Untuk setiap
- Menyusun dan Memasukkan:
- Gabungkan semua objek
MenuCategory,Item,ModifierGroup, danModifierke dalam daftar dalam satu pesanMenu. - Panggil RPC
CreateMenudengan pesanMenuyang telah dirakit sepenuhnya sebagai input.
- Gabungkan semua objek
Menangani pembaruan menu
Menu bersifat tidak dapat diubah. Setelah dibuat menggunakan panggilan RPC CreateMenu, menu tidak dapat diubah. Untuk menyebarkan pembaruan menu ke dalam menu—seperti mengubah harga item, mengubah opsi, atau menyesuaikan ketersediaan—Anda harus membuat resource menu baru dengan memanggil CreateMenu lagi. Setiap versi menu Anda harus di-ingest sebagai resource Menu baru dengan menu_id unik.
Proses untuk menyerap versi baru menu sama dengan menyerap menu untuk pertama kalinya, dan melalui langkah-langkah pembersihan dan validasi yang sama. Saat menangani pesanan, perilaku agen akan selalu mencerminkan Menu yang baru saja dibuat yang terkait dengan Store yang dirujuk dalam konfigurasi sesi.
Pembersihan menu otomatis
CreateMenu API secara otomatis melakukan beberapa langkah pembersihan untuk memperbaiki masalah umum dan memastikan konten menu ditampilkan secara konsisten di seluruh API. Validasi diterapkan setelah pembersihan ini untuk menyederhanakan integrasi menu bagi klien:
- Ketersediaan default:
ItemdanModifiertanpaAvailability.Statuseksplisit ditetapkan keSTATUS_AVAILABLE. - Hapus entity yang tidak dirujuk:
ModifierdanModifierGroupyang tidak dirujuk secara transitif olehItemmana pun akan dihapus dari menu, karena tidak dapat dipesan. - Menghapus grup pengubah yang kosong:
ModifierGroupyang tidak berisimodifier_idsakan dihapus, dan semua referensi ke grup tersebut akan dihapus.
Validasi menu
Setelah pembersihan, API memvalidasi menu berdasarkan serangkaian aturan ketat untuk memastikan menu tersebut terbentuk dengan baik dan dapat digunakan secara andal oleh agen AI. Jika validasi gagal, panggilan CreateMenu akan menampilkan error yang menjelaskan masalahnya. Validasi utama meliputi:
- Kolom wajib diisi: Memastikan semua kolom wajib diisi seperti
id,display_name, danavailability.statusada. - ID Unik: Semua
Item,Modifier, danModifierGroupharus memiliki ID unik dalam menu. - Nama tampilan unik:
- Semua
Itemharus memilikidisplay_nameunik. - Dalam
ModifierGrouptertentu, semuaModifieryang ada di dalamnya harus memilikidisplay_nameunik.
- Semua
- Integritas referensi:
- Semua
modifier_group_idsyang direferensikan olehItematauModifierharus ada di menu. - Semua
modifier_idsyang dirujuk olehModifierGroupharus ada di menu. - Pengubah default yang ditentukan dalam
ModifierGroupReferenceharus ada dalamModifierGroupyang dirujuk. - Jika
Modifiermenggunakanitem_iduntuk mereferensikanItem,Itemtersebut harus ada.
- Semua
- Batasan grup pengubah:
ModifierGrouptidak boleh kosong.- Jumlah pilihan minimum atau maksimum dalam
ModifierGroups diperiksa konsistensi logisnya. - Tingkat
ItematauModifiermodifier_constraintsdivalidasi terhadap batasan jumlah pilihanModifierGroupyang dirujuk untuk memastikan bahwa batasan tersebut dapat dipenuhi.
- Kedalaman bertingkat: Kedalaman pengubah bertingkat dibatasi (misalnya,
Item->ModifierGroup->Modifier->ModifierGroup->Modifier...) hingga maksimum 5 level. - Validasi daypart: Jika daypart digunakan dalam
Availability, daypart tersebut harus ditentukan dalam resourceStoreterkait. - Referensi item pengubah:
Modifieryang mereferensikanItemmenggunakanitem_idtidak boleh memiliki kolom sepertidisplay_nameatauavailabilityyang ditetapkan, karena kolom ini diwarisi dariItemyang direferensikan.
Kegagalan pada salah satu aturan validasi ini akan mencegah menu dibuat atau diperbarui. Pesan error akan memberikan detail tentang entitas mana yang menyebabkan pelanggaran.
Referensi API
Untuk mengetahui detail lengkap tentang semua pesan dan kolom, lihat Referensi RPC Food Ordering AI Agent API.
Praktik terbaik
- ID Unik: Pastikan semua kolom
iddalam cakupanMenu(untukItem,Modifier,ModifierGroup,MenuCategory) bersifat unik. - Nama yang Jelas: Gunakan
display_names yang jelas dan mudah dipahami pelanggan. Berikandisplay_nameyang berbeda untuk produk yang berbeda secara semantik guna mengarahkan agen untuk membedakan dengan tepat. - Kombinasikan Model Secara Efektif: Modelkan makanan kombinasi sebagai
ItemdenganModifierGroupyang merepresentasikan lauk, minuman, dan pilihan lainnya, seperti yang dijelaskan dalam makanan kombinasi. Hal ini memastikan agen dapat memandu pelanggan dengan benar melalui pilihan kombo. - Gunakan Atribut Integrasi: Simpan ID sistem internal atau POS yang diperlukan di
custom_integration_attributesuntuk memfasilitasi integrasi pesanan yang lancar. - Mengelola Ketersediaan: Pastikan status
Availabilityselalu terbaru. - Uji Secara Menyeluruh: Setelah penyerapan, uji pemahaman agen tentang menu dengan berbagai kombinasi pesanan.