Method: projects.locations.sessions.processOrder

מבצע לוגיקה של סבב יחיד כדי לעבד את הקלט של המשתמש ולהחזיר את התוצאה.

בקשת HTTP

POST https://foodorderingaiagent.googleapis.com/v1/{config.session=projects/*/locations/*/sessions/*}:processOrder

כתובת ה-URL כתובה בתחביר של gRPC Transcoding.

פרמטרים של הנתיב

פרמטרים
config.session

string

חובה. הסשן של ההזמנה. פורמט: projects/{project}/locations/{location}/sessions/{session}

גוף הבקשה

גוף הבקשה מכיל נתונים במבנה הבא:

ייצוג ב-JSON
{
  "config": {
    "session": string,
    "store": string,
    "laneId": string,
    "enableEchoCancellation": boolean,
    "daypartId": string,
    "featureGate": {
      "menuResponseEnabled": boolean,
      "updatedOrderStateEnabled": boolean,
      "enableOrderStatusRetrieval": boolean
    },
    "clientAppInfo": {
      "deviceModel": string,
      "osVersion": string,
      "sdkVersion": string
    },
    "mode": enum (SessionMode),
    "channelType": enum (ChannelType),
    "enableListenOnlyDualChannel": boolean,
    "testSessionStartTime": string
  },
  "turnType": enum (TurnType),

  // Union field input can be only one of the following:
  "textInput": {
    object (TextInput)
  },
  "audioInput": {
    object (AudioInput)
  },
  "eventInput": {
    object (EventInput)
  },
  "clientExecutionResult": {
    object (ClientExecutionResult)
  },
  "blobInput": {
    object (Blob)
  }
  // End of list of possible types for union field input.
}
שדות
config.store

string

חובה. החנות שבה מתבצעת ההזמנה. פורמט: projects/{project}/locations/{location}/brands/{brand}/stores/{store}

config.laneId

string

זה שינוי אופציונלי. המזהה של נתיב ספציפי לאיסוף מהרכב.

config.enableEchoCancellation

boolean

זה שינוי אופציונלי. אם להפעיל ביטול הד בסשן. אם האפשרות מופעלת, הלקוח צריך לספק את customerAudio ו-crewAudio ב-AudioInput.

config.daypartId

string

זה שינוי אופציונלי. החלק ביום שבו מוגש התפריט, כולל ארוחת בוקר, ארוחת צהריים, ארוחת ערב וכו'. המידע הזה משמש כדי לקבוע באיזה תפריט להשתמש בהזמנה.

config.featureGate

object (FeatureGate)

זה שינוי אופציונלי. ה-Feature Gates של הסשן. הוא משמש להפעלה או להשבתה של תכונות בסשן.

config.clientAppInfo

object (ClientAppInfo)

זה שינוי אופציונלי. מידע על אפליקציית הלקוח וסביבת המכשיר.

config.mode

enum (SessionMode)

זה שינוי אופציונלי. מצב הסשן.

config.channelType

enum (ChannelType)

זה שינוי אופציונלי. סוג הערוץ שמשמש לתקשורת עם הנציג.

config.enableListenOnlyDualChannel

boolean

זה שינוי אופציונלי. האם להפעיל ערוץ כפול להאזנה בלבד בסשן. אם ההגדרה מופעלת, הלקוח צריך לספק את customerAudio ו-crewAudio ב-AudioInput, ו-CES יבצע EAC וסיכום בשרת עיבוד המדיה.

config.testSessionStartTime

string (Timestamp format)

זה שינוי אופציונלי. שעת ההתחלה של הסשן, שמשמשת למטרות בדיקה או הערכה.

השימוש הוא ב-RFC 3339, שבו הפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות אחרי הנקודה העשרונית. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. לדוגמה: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

turnType

enum (TurnType)

זה שינוי אופציונלי. אינדיקטור מפורש של מיקום הבקשה במחזור החיים של הסשן. מאפשר ללקוחות לקבוע מתי משתני ההגדרה של הסשן הראשוני מוזרקים.

שדה של איחוד input. הקלט מהלקוח. הערך input יכול להיות רק אחד מהבאים:
textInput

object (TextInput)

קלט הטקסט מהלקוח.

audioInput

object (AudioInput)

קלט האודיו מהלקוח.

eventInput

object (EventInput)

האירוע שהוזן מהלקוח.

clientExecutionResult

object (ClientExecutionResult)

התוצאה של בקשת ביצוע של לקוח.

blobInput

object (Blob)

קלט של נתונים בינאריים כלליים. מראות http://google3/google/cloud/ces/v1main/session_service.proto?l=720

גוף התשובה

הודעת התשובה של FoodOrderingService.ProcessOrder. מכיל פונקציונלית שדות מ-BidiProcessOrderResponse, למעט שדות ספציפיים לסטרימינג.

אם הפעולה מצליחה, גוף התשובה מכיל נתונים במבנה הבא:

ייצוג ב-JSON
{
  "responses": [
    {
      object (BidiProcessOrderResponse)
    }
  ]
}
שדות
responses[]

object (BidiProcessOrderResponse)

פלט בלבד. רשימת התשובות של הסוכן לבקשה, שמוחזרות לפי הסדר.

היקפי הרשאות

נדרש היקף ההרשאות הבא של OAuth:

  • https://www.googleapis.com/auth/cloud-platform

ניתן למצוא מידע נוסף כאן: Authentication Overview.

TextInput

קלט הטקסט מהלקוח. במקום אודיו, הלקוח יכול לשלוח לנציג קלט טקסט. הלקוח צריך להשתמש בקלט טקסט או בקלט אודיו, לא בשניהם.

ייצוג ב-JSON
{
  "text": string
}
שדות
text

string

חובה. האמירה בטקסט מהלקוח.

AudioInput

קלט האודיו מהלקוח. יכול להיות שקלט האודיו יכלול כמה ערוצים ללקוח, לצוות וכו'. כולם צריכים להיות מסונכרנים ובפורמט שצוין בהגדרות האישיות. אין לכלול כותרות אודיו. כברירת מחדל, האודיו צריך להשתמש בקידוד אודיו PCM לינארי של 16 ביט ובתדירות דגימה של 16,000Hz. הגודל הכולל של כל הערוצים צריך להיות קטן מ-25,600 בייטים.

ייצוג ב-JSON
{
  "customerAudio": string,
  "crewAudio": string
}
שדות
customerAudio

string (bytes format)

חובה. נתוני אודיו של לקוחות.

מחרוזת בקידוד Base64.

crewAudio

string (bytes format)

זה שינוי אופציונלי. נתוני אודיו של הצוות. זהו ערוץ אודיו אופציונלי לאיש הצוות באותו מסלול כמו הלקוח, והוא שימש כאודיו לדוגמה לביטול הד.

מחרוזת בקידוד Base64.

EventInput

האירוע שהוזן מהלקוח. הוא משמש להפעלת אירועים ספציפיים בתוך הנציג.

ייצוג ב-JSON
{

  // Union field event can be only one of the following:
  "driveOffEvent": {
    object (DriveOffEvent)
  },
  "crewInterjectionEvent": {
    object (CrewInterjectionEvent)
  },
  "updateOrderStateEvent": {
    object (OrderStateUpdateEvent)
  },
  "clientEscalationEvent": {
    object (ClientEscalationEvent)
  },
  "callerHangupEvent": {
    object (CallerHangupEvent)
  },
  "posErrorInput": {
    object (PosErrorEvent)
  }
  // End of list of possible types for union field event.
}
שדות
שדה של איחוד event. המזהה הבא: 10 האירוע שיופעל. הערך event יכול להיות רק אחד מהבאים:
driveOffEvent

object (DriveOffEvent)

אירוע של נסיעה בלי לשלם.

crewInterjectionEvent

object (CrewInterjectionEvent)

אירוע של התפרצות לשיחה של הצוות.

updateOrderStateEvent

object (OrderStateUpdateEvent)

עדכון בצד הלקוח של מצב ההזמנה.

clientEscalationEvent

object (ClientEscalationEvent)

אירוע של העברה לטיפול ברמה גבוהה יותר בצד הלקוח.

callerHangupEvent

object (CallerHangupEvent)

זה שינוי אופציונלי. אירוע של ניתוק שיחה על ידי המתקשר.

posErrorInput

object (PosErrorEvent)

זה שינוי אופציונלי. אירוע שגיאה ב-POS.

DriveOffEvent

אירוע של נסיעה בלי לשלם. האירוע הזה מציין שהלקוח נסע מהמקום. הסשן ייסגר אחרי האירוע הזה.

ייצוג ב-JSON
{
  "reason": string
}
שדות
reason

string

זה שינוי אופציונלי. הסיבה לעזיבה, למשל "ההזמנה הושלמה", "עזיבה לא צפויה".

CrewInterjectionEvent

אירוע של התפרצות לשיחה של הצוות. זה מציין שחבר צוות התערב בסשן. הסשן ייסגר אחרי האירוע הזה.

ייצוג ב-JSON
{
  "mode": string
}
שדות
mode

string

זה שינוי אופציונלי. המצב שבו איש הצוות התערב, למשל "אוזניות", "pos".

OrderStateUpdateEvent

הבקשה לעדכון מצב ההזמנה. האירוע הזה צריך להישלח כשההזמנה מתעדכנת בצד הלקוח, למשל כשפריט נוסף או מוסר באמצעות ממשק מגע רגיל.

ייצוג ב-JSON
{
  "order": {
    object (Order)
  }
}
שדות
order

object (Order)

חובה. הסטטוס המעודכן של ההזמנה שמשויכת לסשן הזה.

ClientEscalationEvent

מציין שהלקוח מעביר את הסשן לנציג אנושי.

ייצוג ב-JSON
{
  "reason": string
}
שדות
reason

string

זה שינוי אופציונלי. הסיבה להעברת הלקוח לטיפול ברמה גבוהה יותר, למשל: "payment-declined",‏ "pos-error",‏ "integration-error" וכו'.

CallerHangupEvent

בסוג הזה אין שדות.

מציין שהלקוח ניתק את השיחה מוקדם מדי (למשל, בגלל סלידה מ-AI).

PosErrorEvent

כשלים ספציפיים לנקודת מכירה (POS).

ייצוג ב-JSON
{
  "errorMessages": [
    string
  ],
  "affectedItemUids": [
    string
  ],
  "affectedExternalIds": [
    string
  ],
  "metadata": {
    string: string,
    ...
  }
}
שדות
errorMessages[]

string

זה שינוי אופציונלי. רשימה של תיאורים קריאים לאנשים של השגיאות. אפשר לספק כמה הודעות שגיאה אם מתרחשות כמה בעיות בו-זמנית (למשל, כמה פריטים חסרים במלאי) או כדי לספק פירוט רב יותר של כשל מורכב אחד. הנציג יכול להשתמש בהודעות האלה כדי לעדכן את הלקוח או למטרות רישום ביומן.

affectedItemUids[]

string

זה שינוי אופציונלי. מזהי פריטים ייחודיים שנוצרו על ידי סוכן ה-AI להזמנה ממסעדות וגרמו לשגיאה. תואם ל-UpdatedOrderState.OrderItem.uid.

affectedExternalIds[]

string

זה שינוי אופציונלי. רשימה של מזהים חיצוניים (מהתפריט) שגרמו לשגיאה. הערך צריך להיות זהה לייצוגים בפועל בנקודת המכירה, שבדרך כלל נמצאים במאפייני השילוב ב-menu.proto (למשל, ב-ItemIntegrationAttributes או ב-ModifierIntegrationAttributes).

metadata

map (key: string, value: string)

זה שינוי אופציונלי. מטא-נתונים בפורמט חופשי לניפוי באגים או לאיתות ספציפי למותג. אפשר להשתמש בו כדי להעביר קטגוריות או קודי שגיאה ספציפיים למותג (למשל, {"BRAND_ERROR_CODE": "OUT_OF_STOCK"}).

אובייקט שמכיל רשימה של זוגות "key": value. לדוגמה: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

ClientExecutionResult

התוצאה של בקשת ביצוע של לקוח.

ייצוג ב-JSON
{
  "executionId": string,

  // Union field response can be only one of the following:
  "finalizeOrderResponse": {
    object (FinalizeOrderResponse)
  },
  "orderPricesResponse": {
    object (OrderPricesResponse)
  },
  "validateDeliveryAddressResponse": {
    object (ValidateDeliveryAddressResponse)
  },
  "orderStatusResponse": {
    object (OrderStatusResponse)
  }
  // End of list of possible types for union field response.
}
שדות
executionId

string

חובה. המזהה של בקשת ההרצה שהתוצאה הזו שייכת לה.

שדה של איחוד response. התוצאה הספציפית של ההרצה. הערך response יכול להיות רק אחד מהבאים:
finalizeOrderResponse

object (FinalizeOrderResponse)

התוצאה של סיום ההזמנה.

orderPricesResponse

object (OrderPricesResponse)

התוצאה של קבלת מחירי ההזמנה.

validateDeliveryAddressResponse

object (ValidateDeliveryAddressResponse)

תוצאת האימות של הכתובת למשלוח.

orderStatusResponse

object (OrderStatusResponse)

התוצאה של קבלת סטטוס ההזמנה.

FinalizeOrderResponse

התוצאה של סיום ההזמנה.

ייצוג ב-JSON
{
  "paymentFlowEnabled": boolean,
  "paymentInfo": {
    object (PaymentInfo)
  },
  "totalAmountDue": {
    object (Money)
  },
  "orderPriceInfo": {
    object (OrderPriceInfo)
  }
}
שדות
paymentFlowEnabled

boolean

זה שינוי אופציונלי. אם להפעיל את תהליך הטיפול בתשלומים בנציג.

paymentInfo

object (PaymentInfo)

זה שינוי אופציונלי. פרטי התשלום של הלקוח. אם הערך של paymentFlowEnabled הוא false, לא תתבצע פעולה.

totalAmountDue

object (Money)

זה שינוי אופציונלי. הסכום הכולל לתשלום על ההזמנה.

orderPriceInfo

object (OrderPriceInfo)

זה שינוי אופציונלי. פרטי המחיר של ההזמנה.

PaymentInfo

פרטי התשלום של המשתמש.

ייצוג ב-JSON
{
  "creditCardLastFourDigits": string,
  "creditCardCvv": string,
  "paymentMethod": enum (PaymentMethod)
}
שדות
creditCardLastFourDigits

string

זה שינוי אופציונלי. ארבע הספרות האחרונות של כרטיס האשראי. הוא משמש לאימות מספר כרטיס האשראי בשלב התשלום.

creditCardCvv

string

זה שינוי אופציונלי. קוד האימות (CVV) של כרטיס האשראי.

paymentMethod

enum (PaymentMethod)

זה שינוי אופציונלי. סוג אמצעי התשלום ששימש לביצוע העסקה.

PaymentMethod

סוג אמצעי התשלום.

טיפוסים בני מנייה (enum)
PAYMENT_METHOD_UNSPECIFIED אמצעי תשלום לא מוגדר.
PAYMENT_METHOD_CREDIT_CARD כרטיס אשראי.
PAYMENT_METHOD_CASH מזומן.

OrderPricesResponse

התוצאה של קבלת מחירי ההזמנה.

ייצוג ב-JSON
{
  "success": boolean,
  "orderPriceInfo": {
    object (OrderPriceInfo)
  }
}
שדות
success

boolean

חובה. אם מחירי ההזמנות אוחזרו בהצלחה.

orderPriceInfo

object (OrderPriceInfo)

זה שינוי אופציונלי. המחיר הכולל של ההזמנה אחרי כל ההנחות, העמלות, המיסים וכו'

ValidateDeliveryAddressResponse

התוצאה של אימות כתובת למשלוח.

ייצוג ב-JSON
{
  "success": boolean,
  "validationStatus": enum (ValidationStatus)
}
שדות
success

boolean

חובה. אם האימות הושלם בלי שגיאה או לא.

validationStatus

enum (ValidationStatus)

חובה. סטטוס האימות של הכתובת למשלוח.

OrderStatusResponse

התוצאה של קבלת סטטוס ההזמנה.

ייצוג ב-JSON
{
  "success": boolean
}
שדות
success

boolean

חובה. אם סטטוס ההזמנה אוחזר בהצלחה.

כתם

מייצג קלט או פלט של blob בשיחה.

ייצוג ב-JSON
{
  "mimeType": string,
  "data": string
}
שדות
mimeType

string

חובה. סוג ה-MIME הסטנדרטי של IANA של נתוני המקור.

data

string (bytes format)

חובה. בייטים גולמיים של ה-blob.

מחרוזת בקידוד Base64.

הגדרה

ההגדרות של סשן ומאפייני הזמנה ממסעדה. בתחילת כל חיבור, הלקוח צריך לשלוח קודם הודעת הגדרה. השלב הזה חייב להתבצע לפני כל בקשה אחרת להפעלת הסשן. אם הלקוח מתנתק, הוא צריך לחזור על אותה הודעת הגדרה כשהוא מתחבר מחדש.

ייצוג ב-JSON
{
  "session": string,
  "store": string,
  "laneId": string,
  "enableEchoCancellation": boolean,
  "daypartId": string,
  "featureGate": {
    object (FeatureGate)
  },
  "clientAppInfo": {
    object (ClientAppInfo)
  },
  "mode": enum (SessionMode),
  "channelType": enum (ChannelType),
  "enableListenOnlyDualChannel": boolean,
  "testSessionStartTime": string
}
שדות
session

string

חובה. הסשן של ההזמנה. פורמט: projects/{project}/locations/{location}/sessions/{session}

store

string

חובה. החנות שבה מתבצעת ההזמנה. פורמט: projects/{project}/locations/{location}/brands/{brand}/stores/{store}

laneId

string

זה שינוי אופציונלי. המזהה של נתיב ספציפי לאיסוף מהרכב.

enableEchoCancellation

boolean

זה שינוי אופציונלי. אם להפעיל ביטול הד בסשן. אם האפשרות מופעלת, הלקוח צריך לספק את customerAudio ו-crewAudio ב-AudioInput.

daypartId

string

זה שינוי אופציונלי. החלק ביום שבו מוגש התפריט, כולל ארוחת בוקר, ארוחת צהריים, ארוחת ערב וכו'. המידע הזה משמש כדי לקבוע באיזה תפריט להשתמש בהזמנה.

featureGate

object (FeatureGate)

זה שינוי אופציונלי. ה-Feature Gates של הסשן. הוא משמש להפעלה או להשבתה של תכונות בסשן.

clientAppInfo

object (ClientAppInfo)

זה שינוי אופציונלי. מידע על אפליקציית הלקוח וסביבת המכשיר.

mode

enum (SessionMode)

זה שינוי אופציונלי. מצב הסשן.

channelType

enum (ChannelType)

זה שינוי אופציונלי. סוג הערוץ שמשמש לתקשורת עם הנציג.

enableListenOnlyDualChannel

boolean

זה שינוי אופציונלי. האם להפעיל ערוץ כפול להאזנה בלבד בסשן. אם ההגדרה מופעלת, הלקוח צריך לספק את customerAudio ו-crewAudio ב-AudioInput, ו-CES יבצע EAC וסיכום בשרת עיבוד המדיה.

testSessionStartTime

string (Timestamp format)

זה שינוי אופציונלי. שעת ההתחלה של הסשן, שמשמשת למטרות בדיקה או הערכה.

השימוש הוא ב-RFC 3339, שבו הפלט שנוצר תמיד יהיה מנורמל ל-Z וישתמש ב-0, 3, 6 או 9 ספרות אחרי הנקודה העשרונית. אפשר להשתמש גם בהיסטים אחרים, לא רק ב-Z. לדוגמה: "2014-10-02T15:01:23Z", ‏ "2014-10-02T15:01:23.045123456Z" או "2014-10-02T15:01:23+05:30".

FeatureGate

ה-Feature Gates של הסשן. הוא משמש להפעלה או להשבתה של תכונות בסשן.

ייצוג ב-JSON
{
  "menuResponseEnabled": boolean,
  "updatedOrderStateEnabled": boolean,
  "enableOrderStatusRetrieval": boolean
}
שדות
menuResponseEnabled

boolean

זה שינוי אופציונלי. אם מוגדר, מחזיר את נתוני התפריט ללקוח ב-BidiProcessOrderResponse.

updatedOrderStateEnabled

boolean

זה שינוי אופציונלי. אם ההגדרה הזו מופעלת, המערכת מחזירה את updatedOrderState במקום את legacyOrderStateResponse.

enableOrderStatusRetrieval

boolean

זה שינוי אופציונלי. אם מגדירים את האפשרות הזו, הנציג יתמוך באחזור של סטטוס ההזמנה.

ClientAppInfo

מידע על אפליקציית הלקוח וסביבת המכשיר. הוא משמש בעיקר לרישום ביומן, לניתוח נתונים ולניפוי באגים.

ייצוג ב-JSON
{
  "deviceModel": string,
  "osVersion": string,
  "sdkVersion": string
}
שדות
deviceModel

string

זה שינוי אופציונלי. דגם המכשיר של הלקוח (למשל, "iPhone 13",‏ "Pixel 7",‏ "Kiosk v2").

osVersion

string

זה שינוי אופציונלי. גרסת מערכת ההפעלה של הלקוח (למשל, "iOS 16.1",‏ "Android 13").

sdkVersion

string

זה שינוי אופציונלי. גרסת ה-SDK של הלקוח או של האפליקציה.

SessionMode

מצב הסשן.

טיפוסים בני מנייה (enum)
SESSION_MODE_UNSPECIFIED מצב הסשן לא צוין.
HYBRID הסשן תומך גם באודיו וגם בטקסט. (זוהי ברירת המחדל)
TEXT הסשן הוא בטקסט בלבד.

TurnType

מייצג את המיקום במחזור החיים של בקשה אונרית בתוך סשן.

טיפוסים בני מנייה (enum)
TURN_TYPE_UNSPECIFIED סוג הפנייה לא צוין.
INITIALIZE מציין במפורש שהבקשה הזו מאתחלת את הסשן במצב אונרי. כשההגדרה הזו מופעלת, משתני הסשן הראשוניים (למשל, מטא-נתונים של החנות ותפריטים) מוזרקים ל-CES.
SUBSEQUENT מציין במפורש תור נוסף בשיחה או עדכון באמצע הסשן. כשההגדרה הזו מופעלת, המערכת משמיטה את משתני הסשן הראשוניים כדי למנוע מצב של יותר מדי אסימוני קלט.

BidiProcessOrderResponse

ההודעה ברמה העליונה שהוחזרה מה-method‏ FoodOrderingService.BidiProcessOrder.

ייצוג ב-JSON
{

  // Union field response can be only one of the following:
  "agentAudio": {
    object (AgentAudio)
  },
  "speechRecognition": {
    object (SpeechRecognition)
  },
  "legacyOrderStateResponse": {
    object
  },
  "interruptionSignal": {
    object (InterruptionSignal)
  },
  "agentEvent": {
    object (AgentEvent)
  },
  "clientExecutionRequest": {
    object (ClientExecutionRequest)
  },
  "updatedOrderState": {
    object (UpdatedOrderState)
  },
  "agentText": {
    object (AgentText)
  },
  "suggestedOptions": {
    object (SuggestedOptions)
  },
  "sentimentMeasurement": {
    object (SentimentMeasurement)
  },
  "turnCompleted": {
    object (TurnCompleted)
  },
  "endSession": {
    object (EndSession)
  }
  // End of list of possible types for union field response.
}
שדות
שדה של איחוד response. תשובת הסוכן. הערך response יכול להיות רק אחד מהבאים:
agentAudio

object (AgentAudio)

התשובה הקולית מהסוכן.

speechRecognition

object (SpeechRecognition)

תוצאת זיהוי הדיבור מהנציג.

legacyOrderStateResponse

object (Struct format)

התגובה של מצב ההזמנה הקודם בסשן.

interruptionSignal

object (InterruptionSignal)

זוהה אות הפרעה מקלט האודיו.

agentEvent

object (AgentEvent)

אירוע מהסוכן.

clientExecutionRequest

object (ClientExecutionRequest)

הבקשה מועברת ללקוח לביצוע. הוא משמש להפעלה בצד הלקוח, למשל הוספת קוד להזמנה.

updatedOrderState

object (UpdatedOrderState)

מציין עדכון במצב ההזמנה. כולל את המצב המלא של ההזמנה.

agentText

object (AgentText)

התשובה הכתובה מהסוכן.

suggestedOptions

object (SuggestedOptions)

אפשרויות להציע ללקוח.

sentimentMeasurement

object (SentimentMeasurement)

ציון הסנטימנט בזמן אמת שנמדד בתור הזה.

turnCompleted

object (TurnCompleted)

הודעה על סיום הפנייה.

endSession

object (EndSession)

מציין שהסשן מסתיים, ושהתור הזה יהיה האחרון.

הנציג יסיים לשלוח את כל התשובות שעדיין לא נשלחו בתור הנוכחי, ואז ישלח הודעת turnCompleted סופית. הנציג לא יתחיל תור חדש. לדוגמה, סשן של 2 תורות ייראה כך:

  • תור 1
  • קלט של לקוח 1
  • ‫... הודעות על תגובות של נציגים ועל סטטוס ההזמנה
  • turnCompleted
  • תור 2
  • קלט 2 של הלקוח
  • ‫... הודעות על תגובות של נציגים ועל סטטוס ההזמנה
  • endSession
  • ‫... הודעות על סטטוס ההזמנה והמתנה לתשובה מהנציג
  • turnCompleted

AgentAudio

התשובה הקולית מהסוכן.

ייצוג ב-JSON
{
  "agentAudio": string
}
שדות
agentAudio

string (bytes format)

נתוני האודיו מהסוכן.

מחרוזת בקידוד Base64.

SpeechRecognition

תוצאת זיהוי הדיבור מהנציג.

ייצוג ב-JSON
{
  "transcript": string,
  "languageCode": string,
  "isFinal": boolean
}
שדות
transcript

string

טקסט מתומלל מקלט האודיו בשפה שזוהתה.

languageCode

string

קוד השפה של התמליל. קוד השפה צריך להיות בפורמט BCP-47, למשל "en-US".

isFinal

boolean

מציין אם זה התמליל הסופי של התור.

InterruptionSignal

בסוג הזה אין שדות.

מציין שהתגובה הקולית של הנציג נקטעה (למשל, על ידי התפרצות של משתמש הקצה). הלקוח צריך להפסיק את ההפעלה באופן מיידי.

AgentEvent

אירוע מיוחד מהנציג שמחייב את הלקוח לבצע פעולה.

ייצוג ב-JSON
{

  // Union field event can be only one of the following:
  "restartOrder": {
    object (RestartOrder)
  }
  // End of list of possible types for union field event.
}
שדות
שדה של איחוד event. האירוע מהסוכן. הערך event יכול להיות רק אחד מהבאים:
restartOrder

object (RestartOrder)

הלקוח מבקש להפעיל מחדש את ההזמנה.

RestartOrder

הלקוח מבקש להתחיל את ההזמנה מחדש.

ייצוג ב-JSON
{
  "confirmationStep": boolean
}
שדות
confirmationStep

boolean

הנציג מבקש מהלקוח לאשר את הבקשה להפעלה מחדש.

ClientExecutionRequest

בקשה לצד הלקוח להריץ פקודה.

ייצוג ב-JSON
{
  "executionId": string,

  // Union field request can be only one of the following:
  "finalizeOrderRequest": {
    object (FinalizeOrderRequest)
  },
  "submitOrderRequest": {
    object (SubmitOrderRequest)
  },
  "orderPricesRequest": {
    object (OrderPricesRequest)
  },
  "validateDeliveryAddressRequest": {
    object (ValidateDeliveryAddressRequest)
  },
  "orderStatusRequest": {
    object (OrderStatusRequest)
  }
  // End of list of possible types for union field request.
}
שדות
executionId

string

חובה. מזהה ייחודי לבקשת ההפעלה הזו.

שדה של איחוד request. הבקשה הספציפית לביצוע. הערך request יכול להיות רק אחד מהבאים:
finalizeOrderRequest

object (FinalizeOrderRequest)

בקשה להשלמת ההזמנה.

submitOrderRequest

object (SubmitOrderRequest)

בקשה לשלוח את ההזמנה.

orderPricesRequest

object (OrderPricesRequest)

בקשה לקבלת מחירי ההזמנה.

validateDeliveryAddressRequest

object (ValidateDeliveryAddressRequest)

בקשה לאמת את הכתובת למשלוח.

orderStatusRequest

object (OrderStatusRequest)

בקשה לקבלת סטטוס ההזמנה.

FinalizeOrderRequest

בסוג הזה אין שדות.

בקשה להשלמת ההזמנה. בדרך כלל, הנציג שולח את ההודעה הזו כשהלקוח מציין שהוא סיים להזמין ורוצה לשלם.

SubmitOrderRequest

בקשה לשלוח את ההזמנה, עם כל פרטי התשלום הנדרשים שנאספו מהלקוח.

ייצוג ב-JSON
{
  "paymentInfo": {
    object (PaymentInfo)
  },
  "loyaltyInfo": {
    object (LoyaltyInfo)
  },
  "tipAmount": {
    object (Money)
  }
}
שדות
paymentInfo

object (PaymentInfo)

חובה. פרטי התשלום של ההזמנה.

loyaltyInfo

object (LoyaltyInfo)

זה שינוי אופציונלי. ההטבה שנוצלה בהזמנה.

tipAmount

object (Money)

זה שינוי אופציונלי. סכום הטיפ על ההזמנה.

LoyaltyInfo

מייצג את פרטי מועדון הלקוחות של הלקוח.

ייצוג ב-JSON
{
  "loyaltyAmount": {
    object (LoyaltyAmount)
  }
}
שדות
loyaltyAmount

object (LoyaltyAmount)

חובה. סכום הנאמנות. הערך יכול להיות יתרה במועדון הלקוחות או נקודות מועדון שנוצלו.

LoyaltyAmount

מייצג את סכום הנאמנות של הלקוח.

ייצוג ב-JSON
{
  "units": string
}
שדות
units

string (int64 format)

חובה. נקודות המועדון.

OrderPricesRequest

בקשה לקבלת מחירי ההזמנה.

ייצוג ב-JSON
{
  "order": {
    object (Order)
  }
}
שדות
order

object (Order)

זה שינוי אופציונלי. ההזמנה שרוצים לקבל את המחירים שלה. אם לא צוין מזהה, אפשר להניח שהבקשה היא להזמנה או לעגלת הקניות הקיימת בסשן.

ValidateDeliveryAddressRequest

בקשה לאמת כתובת למשלוח שנאספה במהלך הסשן.

ייצוג ב-JSON
{
  "deliveryAddress": {
    object (DeliveryAddress)
  }
}
שדות
deliveryAddress

object (DeliveryAddress)

חובה. הכתובת למשלוח שצריך לאמת.

OrderStatusRequest

בסוג הזה אין שדות.

בקשה לקבלת סטטוס ההזמנה.

UpdatedOrderState

אירוע שהוחזר על ידי הנציג ומייצג עדכון של מצב ההזמנה.

ייצוג ב-JSON
{
  "order": {
    object (Order)
  },
  "changed": boolean
}
שדות
order

object (Order)

הסטטוס המעודכן של ההזמנה שמשויכת לסשן הזה.

changed

boolean

פלט בלבד. אם יש עדכונים בסטטוס ההזמנה.

AgentText

התשובה הכתובה מהסוכן.

ייצוג ב-JSON
{
  "text": string
}
שדות
text

string

התשובה הכתובה מהסוכן.

SuggestedOptions

אפשרויות להציע ללקוח.

ייצוג ב-JSON
{
  "suggestedModifierGroups": {
    object (SuggestedModifierGroups)
  },

  // Union field suggested_options can be only one of the following:
  "suggestedItems": {
    object (SuggestedItems)
  },
  "suggestedModifiers": {
    object (SuggestedModifiers)
  }
  // End of list of possible types for union field suggested_options.
}
שדות
suggestedModifierGroups

object (SuggestedModifierGroups)

קבוצה של הצעות לשינויים.

שדה של איחוד suggested_options. האפשרויות המוצעות. הערך suggested_options יכול להיות רק אחד מהבאים:
suggestedItems

object (SuggestedItems)

רשימת פריטים להציע ללקוח.

suggestedModifiers

object (SuggestedModifiers)

רשימה של שינויים שאפשר להציע ללקוח.

SuggestedItems

רשימת פריטים להציע ללקוח.

ייצוג ב-JSON
{
  "items": [
    {
      object (SuggestedItem)
    }
  ]
}
שדות
items[]

object (SuggestedItem)

הפריטים שיוצעו ללקוח.

SuggestedItem

פריט שאפשר להציע ללקוח.

ייצוג ב-JSON
{
  "itemId": string,
  "displayName": string,
  "image": {
    object (Image)
  },
  "basePrice": {
    object (Money)
  },
  "integrationAttributes": {
    object (ItemIntegrationAttributes)
  }
}
שדות
itemId

string

מזהה הפריט בתפריט.

displayName

string

שם קריא לאנשים של הפריט הזה, שיוצג בממשקי משתמש.

image

object (Image)

התמונה שתוצג לפריט הזה בממשק המשתמש.

basePrice

object (Money)

מחיר הבסיס של הפריט. מאפייני השינוי שנבחרו עשויים להשפיע על כך. זה המחיר ליחידה של הפריט.

integrationAttributes

object (ItemIntegrationAttributes)

מטא-נתונים שמשויכים לישות הזו ומשמשים לשילובים במורד הזרם.

SuggestedModifiers

רשימה של שינויים שאפשר להציע ללקוח.

ייצוג ב-JSON
{
  "modifiers": [
    {
      object (SuggestedModifier)
    }
  ],
  "parentUid": string
}
שדות
modifiers[]

object (SuggestedModifier)

השינויים שיוצעו ללקוח.

parentUid

string

המזהה הייחודי של פריט ההורה או של משנה ההורה שעליו רוצים להחיל את המשנים.

SuggestedModifier

הצעה לשינוי שמוצגת ללקוח.

ייצוג ב-JSON
{
  "modifierId": string,
  "modifierGroupId": string,
  "modifierGroupDisplayName": string,
  "displayName": string,
  "image": {
    object (Image)
  },
  "priceAdjustment": {
    object (Money)
  },
  "integrationAttributes": {
    object (ModifierIntegrationAttributes)
  },
  "alreadyIncluded": boolean
}
שדות
modifierId

string

מזהה השינוי בתפריט.

modifierGroupId

string

המזהה של קבוצת השינויים שאליה צריך להוסיף את השינוי הזה אם ההצעה תתקבל.

modifierGroupDisplayName

string

השם המוצג של קבוצת השינויים שאליה שייך השינוי הזה.

displayName

string

שם קריא לאנשים של הפריט הזה, שיוצג בממשקי משתמש.

image

object (Image)

התמונה שתוצג לפריט הזה בממשק המשתמש.

priceAdjustment

object (Money)

התאמת המחיר שמשויכת לשינוי הזה, אם יש כזו. זה המחיר ליחידה של השינוי.

integrationAttributes

object (ModifierIntegrationAttributes)

מטא-נתונים שמשויכים לישות הזו ומשמשים לשילובים במורד הזרם.

alreadyIncluded

boolean

אם המגדיר הזה כבר כלול בהזמנה.

SuggestedModifierGroups

רשימה של קבוצות שינויים שאפשר להציע ללקוח.

ייצוג ב-JSON
{
  "modifierGroups": [
    {
      object (SuggestedModGroup)
    }
  ]
}
שדות
modifierGroups[]

object (SuggestedModGroup)

קבוצות השינויים שיוצעו ללקוח.

SuggestedModGroup

קבוצת שינויים שאפשר להציע ללקוח.

ייצוג ב-JSON
{
  "modifierGroupId": string,
  "displayName": string,
  "modifiers": [
    {
      object (SuggestedModifier)
    }
  ],
  "maxSelectionCount": integer,
  "minSelectionCount": integer,
  "maxSelectionCountPerModifier": integer
}
שדות
modifierGroupId

string

המזהה של קבוצת השינויים בתפריט.

displayName

string

השם המוצג של קבוצת השינויים.

modifiers[]

object (SuggestedModifier)

מקשי הצירוף בקבוצה הזו.

maxSelectionCount

integer

המספר המקסימלי של משתנים שאפשר לבחור מהקבוצה הזו.

minSelectionCount

integer

המספר המינימלי של מקשי צירוף שצריך לבחור מהקבוצה הזו.

maxSelectionCountPerModifier

integer

מגבילה את מספר הפעמים שאפשר להחיל כל משתנה בקבוצה הזו.

SentimentMeasurement

ציון הסנטימנט בזמן אמת שנמדד בתור הזה.

ייצוג ב-JSON
{
  "score": number,
  "magnitude": number
}
שדות
score

number

זה שינוי אופציונלי. ציון סנטימנט בין ‎-1.0 (סנטימנט שלילי) ל-1.0 (סנטימנט חיובי).

magnitude

number

זה שינוי אופציונלי. עוצמת הסנטימנט, בלי קשר לציון.

TurnCompleted

בסוג הזה אין שדות.

מציין שסוכן ה-AI לזיהוי אוכל זיהה את סוף התור הנוכחי בשיחה ולא יספק פלט נוסף בתור הזה.

EndSession

מציין שהסוכן סיים את הסשן, בגלל השלמה מוצלחת (למשל, המשתמש אומר "להתראות!" ) או העברה לנציג.

ייצוג ב-JSON
{
  "type": enum (EndType),
  "reason": string,
  "posResponse": string,
  "agentResponse": string,
  "storeSchedule": {
    object (Schedule)
  }
}
שדות
type

enum (EndType)

סוג האירוע של סיום הסשן.

reason

string

הסיבה לסיום הסשן.

posResponse

string

זה שינוי אופציונלי. התגובה של נקודת המכירה (POS) מהצ'ק-אין של ההזמנה (אופציונלי). זוהי מחרוזת מטען ייעודי (payload) אטומה שמייצגת את סטטוס העסקה בנקודת המכירה.

agentResponse

string

זה שינוי אופציונלי. הודעת התשובה הסופית של הנציג שתושמע או תוצג למשתמש (אופציונלי).

storeSchedule

object (Schedule)

זה שינוי אופציונלי. לוח הזמנים של החנות. השדה הזה מוגדר רק כשסוג הסיום הוא STORE_CLOSED.

EndType

סוג האירוע של סיום הסשן.

טיפוסים בני מנייה (enum)
END_TYPE_UNSPECIFIED סוג הסיום לא צוין.
DRIVE_OFF הלקוח נסע מהמקום.
AGENT_ESCALATION הסוכן העביר את הסשן לנציג אנושי.
CREW_INTERJECTION אחד מאנשי הצוות התערב בסשן.
ORDER_COMPLETED ההזמנה הושלמה בהצלחה ואין צורך בפעולה נוספת.
PAYMENT_FLOW_SUCCESS תהליך התשלום הושלם בהצלחה ואין צורך בפעולה נוספת.
PAYMENT_FLOW_FAILURE תהליך התשלום נכשל.
CLIENT_ESCALATION הלקוח העביר את הסשן לנציג אנושי.
CALLER_HANGUP הלקוח ניתק את השיחה לפני הזמן.
REQUESTED_CHECKOUT הלקוח ביקש לשלם.
REQUESTED_ORDER_STATUS הלקוח שאל לגבי סטטוס ההזמנה שלו.
STORE_CLOSED החנות סגורה.