Method: projects.locations.sessions.processOrder

Esegue una logica di singolo turno per elaborare l'input utente e restituire il risultato.

Richiesta HTTP

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

L'URL utilizza la sintassi di transcodifica gRPC.

Parametri del percorso

Parametri
config.session

string

Obbligatorio. La sessione per l'ordine. Formato: projects/{project}/locations/{location}/sessions/{session}

Corpo della richiesta

Il corpo della richiesta contiene dati con la seguente struttura:

Rappresentazione JSON
{
  "config": {
    "session": string,
    "store": string,
    "laneId": string,
    "enableEchoCancellation": boolean,
    "daypartId": string,
    "userInfo": {
      "preferredName": string,
      "paymentInfo": {
        object (PaymentInfo)
      },
      "deliveryAddress": string,
      "pastOrders": [
        {
          object (PastOrder)
        }
      ],
      "loyaltyInfo": {
        object (LoyaltyInfo)
      },
      "phoneNumber": string,
      "userId": string,
      "savedDeliveryAddress": {
        object (DeliveryAddress)
      }
    },
    "orderType": enum (OrderType),
    "initialOrder": {
      "items": [
        {
          object (OrderItem)
        }
      ],
      "metadata": {
        object (OrderMetadata)
      },
      "fulfillment": {
        object (OrderFulfillment)
      },
      "priceInfo": {
        object (OrderPriceInfo)
      },
      "externalOrderId": string,
      "orderPayment": {
        object (OrderPayment)
      }
    },
    "featureGate": {
      "triggerOfferEngineOnDemand": boolean,
      "triggerLoyaltyOnDemand": boolean,
      "triggerOrderMediaAssistantOnDemand": boolean,
      "menuResponseEnabled": boolean,
      "revampedPaymentFlowEnabled": boolean,
      "updatedOrderStateEnabled": boolean,
      "enableOrderStatusRetrieval": boolean
    },
    "initialUtterance": string,
    "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.
}
Campi
config.store

string

Obbligatorio. Il negozio per cui viene effettuato l'ordine. Formato: projects/{project}/locations/{location}/brands/{brand}/stores/{store}

config.laneId

string

Facoltativo. L'ID di una corsia drive-through specifica.

config.enableEchoCancellation

boolean

Facoltativo. Indica se attivare cancellazione eco per la sessione. Se abilitato, il client deve fornire customerAudio e crewAudio in AudioInput.

config.daypartId

string

Facoltativo. La parte della giornata in cui viene consumato il pasto, ad esempio colazione, pranzo, cena e così via. Questo valore viene utilizzato per determinare il menu da utilizzare per l'ordine.

config.userInfo

object (UserInfo)

Facoltativo. Le informazioni personali dell'utente finale condivise con l'agente.

config.orderType
(deprecated)

enum (OrderType)

Facoltativo. Deprecato: utilizza initialOrder.fulfillment.fulfillment_type. Il tipo di ordine da effettuare.

config.initialOrder

object (Order)

Facoltativo. L'ordine iniziale prima di avviare la sessione dell'agente. Se fornito, l'agente lo utilizzerà come stato iniziale dell'ordine.

config.featureGate

object (FeatureGate)

Facoltativo. I gate di funzionalità per la sessione. Viene utilizzato per attivare o disattivare le funzionalità per la sessione.

config.initialUtterance

string

Facoltativo. L'espressione iniziale del cliente per avviare la conversazione. Se fornito, l'agente lo utilizzerà come prima espressione dell'utente e non inizierà con un messaggio di saluto.

config.clientAppInfo

object (ClientAppInfo)

Facoltativo. Le informazioni sull'applicazione client e sull'ambiente del dispositivo.

config.mode

enum (SessionMode)

Facoltativo. La modalità della sessione.

config.channelType

enum (ChannelType)

Facoltativo. Il tipo di canale utilizzato per la comunicazione con l'agente.

config.enableListenOnlyDualChannel

boolean

Facoltativo. Indica se attivare il doppio canale di ascolto per la sessione. Se abilitato, il client deve fornire customerAudio e crewAudio in AudioInput e CES eseguirà EAC e la somma sul server di elaborazione dei contenuti multimediali.

config.testSessionStartTime

string (Timestamp format)

Facoltativo. L'ora di inizio della sessione, utilizzata a scopo di test o valutazione.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

turnType

enum (TurnType)

Facoltativo. Indicatore esplicito della posizione della richiesta nel ciclo di vita della sessione. Consente ai client di controllare in modo deterministico quando vengono inserite le variabili di configurazione della sessione iniziale.

Campo unione input. L'input del client. input può essere solo uno dei seguenti tipi:
textInput

object (TextInput)

Il testo inserito dal cliente.

audioInput

object (AudioInput)

L'ingresso audio dal client.

eventInput

object (EventInput)

L'input dell'evento dal client.

clientExecutionResult

object (ClientExecutionResult)

Il risultato di una richiesta di esecuzione del client.

blobInput

object (Blob)

Input di dati binari generici. Mirror http://google3/google/cloud/ces/v1main/session_service.proto?l=720

Corpo della risposta

Messaggio di risposta per FoodOrderingService.ProcessOrder. Contiene funzionalmente i campi di BidiProcessOrderResponse meno quelli specifici per lo streaming.

In caso di esito positivo, il corpo della risposta contiene dati con la seguente struttura:

Rappresentazione JSON
{
  "responses": [
    {
      object (BidiProcessOrderResponse)
    }
  ]
}
Campi
responses[]

object (BidiProcessOrderResponse)

Solo output. Elenco delle risposte dell'agente alla richiesta, restituite in ordine.

Ambiti di autorizzazione

Richiede il seguente ambito OAuth:

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

Per saperne di più, consulta la Authentication Overview.

TextInput

Il testo inserito dal cliente. In alternativa all'audio, il cliente può inviare all'agente un input di testo. Un client deve utilizzare l'input di testo o audio, non entrambi.

Rappresentazione JSON
{
  "text": string
}
Campi
text

string

Obbligatorio. L'espressione di testo del cliente.

AudioInput

L'ingresso audio dal client. L'audio di input può avere più canali per il cliente, la troupe e così via. Tutti devono essere sincronizzati e nel formato specificato nella configurazione. Le intestazioni audio non devono essere incluse. Per impostazione predefinita, l'audio deve utilizzare la codifica audio PCM lineare a 16 bit e una frequenza di campionamento di 16.000 Hz. Il numero totale di byte di tutti i canali deve essere inferiore a 25.600 byte.

Rappresentazione JSON
{
  "customerAudio": string,
  "crewAudio": string
}
Campi
customerAudio

string (bytes format)

Obbligatorio. Dati audio del cliente.

Una stringa con codifica in base64.

crewAudio

string (bytes format)

Facoltativo. Dati audio dell'equipaggio. Si tratta di un canale audio facoltativo per il membro dell'equipaggio nella stessa corsia del cliente, che funge da audio di riferimento per la cancellazione eco dell'eco.

Una stringa con codifica in base64.

EventInput

L'input dell'evento dal client. Viene utilizzato per attivare eventi specifici all'interno dell'agente.

Rappresentazione JSON
{

  // Union field event can be only one of the following:
  "driveOffEvent": {
    object (DriveOffEvent)
  },
  "crewInterjectionEvent": {
    object (CrewInterjectionEvent)
  },
  "updateOrderStateEvent": {
    object (OrderStateUpdateEvent)
  },
  "clientEscalationEvent": {
    object (ClientEscalationEvent)
  },
  "customizedInputEvent": {
    object (CustomizedInputEvent)
  },
  "callerHangupEvent": {
    object (CallerHangupEvent)
  },
  "posErrorInput": {
    object (PosErrorEvent)
  }
  // End of list of possible types for union field event.
}
Campi
Campo unione event. ID successivo: 10 L'evento da attivare. event può essere solo uno dei seguenti tipi:
driveOffEvent

object (DriveOffEvent)

L'evento di partenza.

crewInterjectionEvent

object (CrewInterjectionEvent)

L'evento di interruzione dell'equipaggio.

updateOrderStateEvent

object (OrderStateUpdateEvent)

Un aggiornamento lato client dello stato dell'ordine.

clientEscalationEvent

object (ClientEscalationEvent)

Un evento di riassegnazione lato client.

customizedInputEvent

object (CustomizedInputEvent)

Un evento di input personalizzato.

callerHangupEvent

object (CallerHangupEvent)

Facoltativo. Un evento di interruzione della chiamata.

posErrorInput

object (PosErrorEvent)

Facoltativo. Un evento di errore POS.

DriveOffEvent

L'evento di partenza. Indica che il cliente è partito. La sessione verrà chiusa dopo questo evento.

Rappresentazione JSON
{
  "reason": string
}
Campi
reason

string

Facoltativo. Il motivo della partenza, ad esempio "ordine completato", "partenza imprevista".

CrewInterjectionEvent

L'evento di interruzione dell'equipaggio. Indica che un membro dell'equipaggio è intervenuto nella sessione. La sessione verrà chiusa dopo questo evento.

Rappresentazione JSON
{
  "mode": string
}
Campi
mode

string

Facoltativo. La modalità in cui è intervenuto il membro dell'equipaggio, ad esempio "cuffie", "pos".

OrderStateUpdateEvent

La richiesta di aggiornamento dello stato dell'ordine. Questo evento deve essere inviato quando l'ordine viene aggiornato lato client, ad esempio quando un articolo viene aggiunto o rimosso tramite un'interfaccia touch tradizionale.

Rappresentazione JSON
{
  "order": {
    object (Order)
  }
}
Campi
order

object (Order)

Obbligatorio. Lo stato aggiornato dell'ordine associato a questa sessione.

ClientEscalationEvent

Indica che il cliente sta riassegnando la sessione a un agente umano.

Rappresentazione JSON
{
  "reason": string
}
Campi
reason

string

Facoltativo. Il motivo del riassegnamento del cliente, ad esempio "payment-declined", "pos-error", "integration-error" e così via.

CustomizedInputEvent

Questo campo consente a un client Food AI di inviare un evento personalizzato all'agente. Per impostazione predefinita, non viene eseguita alcuna operazione. Contatta l'assistenza clienti per attivare questa funzionalità.

Rappresentazione JSON
{
  "input": {
    object
  }
}
Campi
input

object (Struct format)

Obbligatorio. Input del cliente all'agente.

CallerHangupEvent

Questo tipo non contiene campi.

Indica che il cliente ha interrotto la chiamata in anticipo (ad es. avversione all'AI).

PosErrorEvent

Errori specifici del point of sale (POS).

Rappresentazione JSON
{
  "errorMessages": [
    string
  ],
  "affectedItemUids": [
    string
  ],
  "affectedExternalIds": [
    string
  ],
  "metadata": {
    string: string,
    ...
  }
}
Campi
errorMessages[]

string

Facoltativo. Un elenco di descrizioni degli errori leggibili. Possono essere forniti più messaggi di errore se si verificano più problemi contemporaneamente (ad es. più articoli sono esauriti) o per fornire un'analisi più dettagliata di un singolo errore complesso. Questi messaggi possono essere utilizzati dall'agente per informare il cliente o per scopi di registrazione.

affectedItemUids[]

string

Facoltativo. UID univoci degli articoli generati dall'agente AI Ordinazione di cibo che ha causato l'errore. Corrisponde a UpdatedOrderState.OrderItem.uid.

affectedExternalIds[]

string

Facoltativo. Elenco degli ID esterni (dal menu) che hanno causato l'errore. Deve essere uguale ai rappresentanti effettivi nel POS, che di solito si trovano negli attributi di integrazione in menu.proto (ad es. in ItemIntegrationAttributes o ModifierIntegrationAttributes).

metadata

map (key: string, value: string)

Facoltativo. Metadati in formato libero per il debug o la segnalazione specifica del brand. Può essere utilizzato per trasmettere codici o categorie di errore specifici del brand (ad es. {"BRAND_ERROR_CODE": "OUT_OF_STOCK"}).

Un oggetto contenente un elenco di coppie "key": value. Esempio: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

ClientExecutionResult

Il risultato di una richiesta di esecuzione del client.

Rappresentazione JSON
{
  "executionId": string,

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

string

Obbligatorio. L'ID della richiesta di esecuzione per cui questo è un risultato.

Campo unione response. Il risultato specifico dell'esecuzione. response può essere solo uno dei seguenti tipi:
finalizeOrderResponse

object (FinalizeOrderResponse)

Il risultato della finalizzazione dell'ordine.

submitOrderResponse

object (SubmitOrderResponse)

Il risultato dell'invio dell'ordine.

orderPricesResponse

object (OrderPricesResponse)

Il risultato dell'ottenimento dei prezzi dell'ordine.

validateDeliveryAddressResponse

object (ValidateDeliveryAddressResponse)

Il risultato della convalida dell'indirizzo di consegna.

orderStatusResponse

object (OrderStatusResponse)

Il risultato dell'ottenimento dello stato dell'ordine.

FinalizeOrderResponse

Il risultato della finalizzazione dell'ordine.

Rappresentazione JSON
{
  "paymentFlowEnabled": boolean,
  "paymentInfo": {
    object (PaymentInfo)
  },
  "totalAmountDue": {
    object (Money)
  },
  "orderPriceInfo": {
    object (OrderPriceInfo)
  }
}
Campi
paymentFlowEnabled

boolean

Facoltativo. Indica se attivare il flusso di gestione dei pagamenti nell'agente.

paymentInfo

object (PaymentInfo)

Facoltativo. I dati di pagamento del cliente. Nessuna operazione se paymentFlowEnabled è false.

totalAmountDue

object (Money)

Facoltativo. L'importo totale dovuto per l'ordine.

orderPriceInfo

object (OrderPriceInfo)

Facoltativo. Le informazioni dettagliate sul prezzo dell'ordine.

SubmitOrderResponse

Il risultato dell'invio dell'ordine.

Rappresentazione JSON
{
  "success": boolean,
  "estimatedReadyDuration": string
}
Campi
success

boolean

Obbligatorio. Indica se l'ordine è stato inviato correttamente.

estimatedReadyDuration

string (Duration format)

Facoltativo. La durata stimata fino a quando l'ordine non sarà pronto.

Una durata in secondi con un massimo di nove cifre frazionarie, che termina con "s". Esempio: "3.5s".

OrderPricesResponse

Il risultato dell'ottenimento dei prezzi dell'ordine.

Rappresentazione JSON
{
  "success": boolean,
  "orderPriceInfo": {
    object (OrderPriceInfo)
  }
}
Campi
success

boolean

Obbligatorio. Indica se i prezzi dell'ordine sono stati recuperati correttamente.

orderPriceInfo

object (OrderPriceInfo)

Facoltativo. Prezzo totale dell'ordine dopo tutti gli sconti, le commissioni, le tasse e così via

ValidateDeliveryAddressResponse

Il risultato della convalida di un indirizzo di consegna.

Rappresentazione JSON
{
  "success": boolean,
  "validationStatus": enum (ValidationStatus)
}
Campi
success

boolean

Obbligatorio. Indica se la convalida è stata completata senza errori.

validationStatus

enum (ValidationStatus)

Obbligatorio. Lo stato di convalida dell'indirizzo di consegna.

OrderStatusResponse

Il risultato dell'ottenimento dello stato dell'ordine.

Rappresentazione JSON
{
  "success": boolean
}
Campi
success

boolean

Obbligatorio. Indica se lo stato dell'ordine è stato recuperato correttamente.

Blob

Rappresenta un input o un output blob nella conversazione.

Rappresentazione JSON
{
  "mimeType": string,
  "data": string
}
Campi
mimeType

string

Obbligatorio. Il tipo MIME standard IANA dei dati di origine.

data

string (bytes format)

Obbligatorio. Byte non elaborati del blob.

Una stringa con codifica in base64.

Configurazione

La configurazione di una sessione e delle proprietà di ordinazione di cibo. All'inizio di ogni connessione, il client deve prima inviare un messaggio di configurazione. Questa operazione deve essere eseguita prima di qualsiasi altra richiesta di avvio della sessione. Se il client si disconnette, deve ripetere lo stesso messaggio di configurazione quando si riconnette.

Rappresentazione JSON
{
  "session": string,
  "store": string,
  "laneId": string,
  "enableEchoCancellation": boolean,
  "daypartId": string,
  "userInfo": {
    object (UserInfo)
  },
  "orderType": enum (OrderType),
  "initialOrder": {
    object (Order)
  },
  "featureGate": {
    object (FeatureGate)
  },
  "initialUtterance": string,
  "clientAppInfo": {
    object (ClientAppInfo)
  },
  "mode": enum (SessionMode),
  "channelType": enum (ChannelType),
  "enableListenOnlyDualChannel": boolean,
  "testSessionStartTime": string
}
Campi
session

string

Obbligatorio. La sessione per l'ordine. Formato: projects/{project}/locations/{location}/sessions/{session}

store

string

Obbligatorio. Il negozio per cui viene effettuato l'ordine. Formato: projects/{project}/locations/{location}/brands/{brand}/stores/{store}

laneId

string

Facoltativo. L'ID di una corsia drive-through specifica.

enableEchoCancellation

boolean

Facoltativo. Indica se attivare cancellazione eco per la sessione. Se abilitato, il client deve fornire customerAudio e crewAudio in AudioInput.

daypartId

string

Facoltativo. La parte della giornata in cui viene consumato il pasto, ad esempio colazione, pranzo, cena e così via. Questo valore viene utilizzato per determinare il menu da utilizzare per l'ordine.

userInfo

object (UserInfo)

Facoltativo. Le informazioni personali dell'utente finale condivise con l'agente.

orderType
(deprecated)

enum (OrderType)

Facoltativo. Deprecato: utilizza initialOrder.fulfillment.fulfillment_type. Il tipo di ordine da effettuare.

initialOrder

object (Order)

Facoltativo. L'ordine iniziale prima di avviare la sessione dell'agente. Se fornito, l'agente lo utilizzerà come stato iniziale dell'ordine.

featureGate

object (FeatureGate)

Facoltativo. I gate di funzionalità per la sessione. Viene utilizzato per attivare o disattivare le funzionalità per la sessione.

initialUtterance

string

Facoltativo. L'espressione iniziale del cliente per avviare la conversazione. Se fornito, l'agente lo utilizzerà come prima espressione dell'utente e non inizierà con un messaggio di saluto.

clientAppInfo

object (ClientAppInfo)

Facoltativo. Le informazioni sull'applicazione client e sull'ambiente del dispositivo.

mode

enum (SessionMode)

Facoltativo. La modalità della sessione.

channelType

enum (ChannelType)

Facoltativo. Il tipo di canale utilizzato per la comunicazione con l'agente.

enableListenOnlyDualChannel

boolean

Facoltativo. Indica se attivare il doppio canale di ascolto per la sessione. Se abilitato, il client deve fornire customerAudio e crewAudio in AudioInput e CES eseguirà EAC e la somma sul server di elaborazione dei contenuti multimediali.

testSessionStartTime

string (Timestamp format)

Facoltativo. L'ora di inizio della sessione, utilizzata a scopo di test o valutazione.

Utilizza RFC 3339, in cui l'output generato è sempre con normalizzazione Z e utilizza 0, 3, 6 o 9 cifre frazionarie. Sono accettati anche offset diversi da "Z". Esempi: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

UserInfo

Informazioni personali dell'utente finale condivise con l'agente AI per il cibo.

Rappresentazione JSON
{
  "preferredName": string,
  "paymentInfo": {
    object (PaymentInfo)
  },
  "deliveryAddress": string,
  "pastOrders": [
    {
      object (PastOrder)
    }
  ],
  "loyaltyInfo": {
    object (LoyaltyInfo)
  },
  "phoneNumber": string,
  "userId": string,
  "savedDeliveryAddress": {
    object (DeliveryAddress)
  }
}
Campi
preferredName

string

Facoltativo. Il nome dell'utente che l'agente deve utilizzare per rivolgersi all'utente. Il client Food AI è responsabile della selezione del nome preferito in base al profilo dell'utente e si assicura che sia in linea con la convenzione del brand, ad esempio l'utilizzo del nome o del nome completo.

paymentInfo

object (PaymentInfo)

Facoltativo. I dati di pagamento dell'utente.

deliveryAddress
(deprecated)

string

Facoltativo. Deprecato: utilizza savedDeliveryAddress. L'indirizzo di consegna salvato dell'utente.

pastOrders[]

object (PastOrder)

Facoltativo. La cronologia degli ordini dell'utente.

loyaltyInfo

object (LoyaltyInfo)

Facoltativo. Le informazioni sul programma fedeltà dell'utente.

phoneNumber

string

Facoltativo. Il numero di telefono dell'utente.

userId

string

Facoltativo. L'identificatore univoco dell'utente nel sistema del cliente.

savedDeliveryAddress

object (DeliveryAddress)

Facoltativo. L'indirizzo di consegna salvato dell'utente. Sostituirà il campo stringa esistente deliveryAddress.

PastOrder

L'ordine precedente dell'utente.

Rappresentazione JSON
{
  "order": {
    object (Order)
  }
}
Campi
order

object (Order)

Obbligatorio. L'ordine originale di Food AI.

LoyaltyInfo

Rappresenta le informazioni sul programma fedeltà di un cliente.

Rappresentazione JSON
{
  "loyaltyAmount": {
    object (LoyaltyAmount)
  }
}
Campi
loyaltyAmount

object (LoyaltyAmount)

Obbligatorio. L'importo del programma fedeltà. Può trattarsi di un saldo fedeltà o di punti fedeltà consumati.

OrderType

Il tipo di ordine da effettuare.

Enum
ORDER_TYPE_UNSPECIFIED Il tipo di ordine non è specificato.
ORDER_TYPE_DRIVE_THROUGH L'ordine è per il servizio drive-through.
ORDER_TYPE_CARRY_OUT L'ordine è per l'asporto.
ORDER_TYPE_DELIVERY L'ordine è per la consegna.

FeatureGate

I gate di funzionalità per la sessione. Viene utilizzato per attivare o disattivare le funzionalità per la sessione.

Rappresentazione JSON
{
  "triggerOfferEngineOnDemand": boolean,
  "triggerLoyaltyOnDemand": boolean,
  "triggerOrderMediaAssistantOnDemand": boolean,
  "menuResponseEnabled": boolean,
  "revampedPaymentFlowEnabled": boolean,
  "updatedOrderStateEnabled": boolean,
  "enableOrderStatusRetrieval": boolean
}
Campi
triggerOfferEngineOnDemand

boolean

Facoltativo. Solo per il pubblico limitato, se impostato, il motore delle offerte sarà facoltativo nel flusso di pagamento e verrà attivato solo quando gli utenti lo richiedono.

triggerLoyaltyOnDemand

boolean

Facoltativo. Solo per un pubblico limitato, se impostato, il programma fedeltà sarà facoltativo nel flusso di pagamento e verrà attivato solo quando gli utenti lo richiedono.

triggerOrderMediaAssistantOnDemand

boolean

Facoltativo. Solo per il pubblico limitato, se impostato, l'assistente per l'ordine dei contenuti multimediali sarà facoltativo e verrà attivato solo quando gli utenti lo richiedono.

menuResponseEnabled

boolean

Facoltativo. Restituisce i dati del menu al client in BidiProcessOrderResponse, se impostato.

revampedPaymentFlowEnabled

boolean

Facoltativo. Solo per un pubblico limitato, se impostato, verrà utilizzata una versione rinnovata del flusso di pagamento.

updatedOrderStateEnabled

boolean

Facoltativo. Se impostato, viene restituito updatedOrderState anziché legacyOrderStateResponse.

enableOrderStatusRetrieval

boolean

Facoltativo. Se impostato, l'agente supporterà il recupero dello stato dell'ordine.

ClientAppInfo

Informazioni sull'applicazione client e sull'ambiente del dispositivo. Viene utilizzato principalmente per la registrazione, l'analisi e il debug.

Rappresentazione JSON
{
  "deviceModel": string,
  "osVersion": string,
  "sdkVersion": string
}
Campi
deviceModel

string

Facoltativo. Il modello del dispositivo del client (ad es. "iPhone 13", "Pixel 7", "Kiosk v2").

osVersion

string

Facoltativo. La versione del sistema operativo del client (ad es. "iOS 16.1", "Android 13").

sdkVersion

string

Facoltativo. La versione dell'SDK client o del software applicativo.

SessionMode

La modalità della sessione.

Enum
SESSION_MODE_UNSPECIFIED La modalità di sessione non è specificata.
HYBRID La sessione supporta sia l'audio che il testo. Questa è l'impostazione predefinita.
TEXT La sessione è solo testuale.

TurnType

Rappresenta la posizione del ciclo di vita di una richiesta unaria all'interno di una sessione.

Enum
TURN_TYPE_UNSPECIFIED Tipo di svolta non specificato.
INITIALIZE Indica esplicitamente che questa richiesta inizializza la sessione in modalità unaria. Se impostate, le variabili di sessione iniziali (ad es. metadati e menu del negozio) vengono inserite in CES.
SUBSEQUENT Indica esplicitamente un turno di conversazione successivo o un aggiornamento a metà sessione. Se impostate, le variabili di sessione iniziali vengono omesse per evitare l'esplosione dei token di input.

BidiProcessOrderResponse

Il messaggio di primo livello restituito dal metodo FoodOrderingService.BidiProcessOrder.

Rappresentazione 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)
  },
  "recommendedOrders": {
    object (RecommendedOrders)
  }
  // End of list of possible types for union field response.
}
Campi
Campo unione response. La risposta dell'agente. response può essere solo uno dei seguenti tipi:
agentAudio

object (AgentAudio)

La risposta audio dell'agente.

speechRecognition

object (SpeechRecognition)

Il risultato del riconoscimento vocale dell'agente.

legacyOrderStateResponse

object (Struct format)

La risposta relativa allo stato dell'ordine precedente per una sessione.

interruptionSignal

object (InterruptionSignal)

Segnale di interruzione rilevato dall'input audio.

agentEvent

object (AgentEvent)

Evento dell'agente.

clientExecutionRequest

object (ClientExecutionRequest)

La richiesta viene inoltrata al client per l'esecuzione. Viene utilizzato per l'esecuzione lato client, ad esempio per aggiungere un codice all'ordine.

updatedOrderState

object (UpdatedOrderState)

Indica un aggiornamento dello stato dell'ordine. Include lo stato completo dell'ordine.

agentText

object (AgentText)

La risposta di testo dell'agente.

suggestedOptions

object (SuggestedOptions)

Opzioni da suggerire al cliente.

sentimentMeasurement

object (SentimentMeasurement)

Il punteggio del sentiment in tempo reale misurato per questo turno.

turnCompleted

object (TurnCompleted)

Turno del messaggio Completato.

endSession

object (EndSession)

Indica che la sessione sta per terminare e che questo sarà l'ultimo turno.

L'agente terminerà l'invio di eventuali risposte in attesa per il turno corrente, quindi invierà un messaggio turnCompleted finale. L'agente non inizierà nuovi turni. Ad esempio, una sessione di 2 turni avrà il seguente aspetto:

  • Curva 1
  • input cliente 1
  • … messaggi di risposta dell'agente e sullo stato dell'ordine
  • turnCompleted
  • Turno 2
  • input del cliente 2
  • … messaggi di risposta dell'agente e sullo stato dell'ordine
  • endSession
  • … messaggi relativi alla risposta dell'agente e allo stato dell'ordine
  • turnCompleted
recommendedOrders

object (RecommendedOrders)

Gli ordini consigliati dall'agente.

AgentAudio

La risposta audio dell'agente.

Rappresentazione JSON
{
  "agentAudio": string
}
Campi
agentAudio

string (bytes format)

I dati audio dell'agente.

Una stringa con codifica in base64.

SpeechRecognition

Il risultato del riconoscimento vocale dell'agente.

Rappresentazione JSON
{
  "transcript": string,
  "languageCode": string,
  "isFinal": boolean
}
Campi
transcript

string

Testo trascritto dall'input audio nella lingua rilevata.

languageCode

string

Il codice lingua della trascrizione. Il codice lingua deve essere nel formato BCP-47, ad esempio "en-US".

isFinal

boolean

Indica se questa è la trascrizione finale del turno.

InterruptionSignal

Questo tipo non contiene campi.

Indica che la risposta audio dell'agente è stata interrotta (ad es. dall'interruzione dell'utente finale). Il client deve interrompere immediatamente la riproduzione.

AgentEvent

Evento speciale dell'agente che richiede un'azione da parte del cliente.

Rappresentazione JSON
{

  // Union field event can be only one of the following:
  "restartOrder": {
    object (RestartOrder)
  }
  // End of list of possible types for union field event.
}
Campi
Campo unione event. L'evento dell'agente. event può essere solo uno dei seguenti tipi:
restartOrder

object (RestartOrder)

Il cliente chiede di riavviare l'ordine.

RestartOrder

Il cliente chiede di ricominciare l'ordine.

Rappresentazione JSON
{
  "confirmationStep": boolean
}
Campi
confirmationStep

boolean

L'agente chiede al cliente di confermare la richiesta di riavvio.

ClientExecutionRequest

Una richiesta al lato client di eseguire un comando.

Rappresentazione 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.
}
Campi
executionId

string

Obbligatorio. Un ID univoco per questa richiesta di esecuzione.

Campo unione request. La richiesta specifica da eseguire. request può essere solo uno dei seguenti tipi:
finalizeOrderRequest

object (FinalizeOrderRequest)

Una richiesta per finalizzare l'ordine.

submitOrderRequest

object (SubmitOrderRequest)

Una richiesta di invio dell'ordine.

orderPricesRequest

object (OrderPricesRequest)

Una richiesta per ottenere i prezzi dell'ordine.

validateDeliveryAddressRequest

object (ValidateDeliveryAddressRequest)

Una richiesta di convalida dell'indirizzo di consegna.

orderStatusRequest

object (OrderStatusRequest)

Una richiesta per ottenere lo stato dell'ordine.

FinalizeOrderRequest

Questo tipo non contiene campi.

Una richiesta per finalizzare l'ordine. In genere viene inviato dall'agente quando il cliente indica di aver terminato l'ordine e vuole pagare.

SubmitOrderRequest

Una richiesta di invio dell'ordine, con tutti i dati di pagamento richiesti raccolti dal cliente.

Rappresentazione JSON
{
  "paymentInfo": {
    object (PaymentInfo)
  },
  "loyaltyInfo": {
    object (LoyaltyInfo)
  },
  "tipAmount": {
    object (Money)
  }
}
Campi
paymentInfo

object (PaymentInfo)

Obbligatorio. I dati di pagamento dell'ordine.

loyaltyInfo

object (LoyaltyInfo)

Facoltativo. I punti fedeltà consumati per l'ordine.

tipAmount

object (Money)

Facoltativo. L'importo della mancia per l'ordine.

OrderPricesRequest

Una richiesta per ottenere i prezzi dell'ordine.

Rappresentazione JSON
{
  "order": {
    object (Order)
  }
}
Campi
order

object (Order)

Facoltativo. L'ordine per cui ottenere i prezzi. Se non specificato, possiamo presumere che la richiesta riguardi l'ordine/il carrello esistente nella sessione.

ValidateDeliveryAddressRequest

Una richiesta di convalida di un indirizzo di consegna raccolto durante la sessione.

Rappresentazione JSON
{
  "deliveryAddress": {
    object (DeliveryAddress)
  }
}
Campi
deliveryAddress

object (DeliveryAddress)

Obbligatorio. L'indirizzo di consegna da convalidare.

OrderStatusRequest

Questo tipo non contiene campi.

Una richiesta per ottenere lo stato dell'ordine.

UpdatedOrderState

Evento restituito dall'agente che rappresenta un aggiornamento dello stato dell'ordine.

Rappresentazione JSON
{
  "order": {
    object (Order)
  },
  "changed": boolean
}
Campi
order

object (Order)

Lo stato aggiornato dell'ordine associato a questa sessione.

changed

boolean

Solo output. Se lo stato dell'ordine è stato aggiornato.

AgentText

La risposta di testo dell'agente.

Rappresentazione JSON
{
  "text": string
}
Campi
text

string

La risposta di testo dell'agente.

SuggestedOptions

Opzioni da suggerire al cliente.

Rappresentazione 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.
}
Campi
suggestedModifierGroups

object (SuggestedModifierGroups)

Un gruppo di modificatori suggeriti.

Campo unione suggested_options. Le opzioni suggerite. suggested_options può essere solo uno dei seguenti tipi:
suggestedItems

object (SuggestedItems)

Un elenco di articoli da suggerire al cliente.

suggestedModifiers

object (SuggestedModifiers)

Un elenco di modificatori da suggerire al cliente.

SuggestedItems

Un elenco di articoli da suggerire al cliente.

Rappresentazione JSON
{
  "items": [
    {
      object (SuggestedItem)
    }
  ]
}
Campi
items[]

object (SuggestedItem)

Gli articoli da suggerire al cliente.

SuggestedItem

Un articolo da suggerire al cliente.

Rappresentazione JSON
{
  "itemId": string,
  "displayName": string,
  "image": {
    object (Image)
  },
  "basePrice": {
    object (Money)
  },
  "integrationAttributes": {
    object (ItemIntegrationAttributes)
  }
}
Campi
itemId

string

ID dell'elemento nel menu.

displayName

string

Nome leggibile per questo modello da mostrare nelle interfacce utente.

image

object (Image)

Immagine da visualizzare per questo elemento nella UI.

basePrice

object (Money)

Il prezzo base dell'articolo. Questo valore potrebbe essere influenzato dai modificatori selezionati. È il prezzo per unità dell'articolo.

integrationAttributes

object (ItemIntegrationAttributes)

Metadati associati a questa entità utilizzati per le integrazioni downstream.

SuggestedModifiers

Un elenco di modificatori da suggerire al cliente.

Rappresentazione JSON
{
  "modifiers": [
    {
      object (SuggestedModifier)
    }
  ],
  "parentUid": string
}
Campi
modifiers[]

object (SuggestedModifier)

I modificatori da suggerire al cliente.

parentUid

string

L'identificatore univoco dell'elemento/modificatore principale a cui applicare i modificatori.

SuggestedModifier

Un modificatore da suggerire al cliente.

Rappresentazione JSON
{
  "modifierId": string,
  "modifierGroupId": string,
  "modifierGroupDisplayName": string,
  "displayName": string,
  "image": {
    object (Image)
  },
  "priceAdjustment": {
    object (Money)
  },
  "integrationAttributes": {
    object (ModifierIntegrationAttributes)
  },
  "alreadyIncluded": boolean
}
Campi
modifierId

string

L'ID del modificatore nel menu.

modifierGroupId

string

ID del gruppo di modificatori a cui deve essere aggiunto questo modificatore se il suggerimento viene accettato.

modifierGroupDisplayName

string

Il nome visualizzato del gruppo di modificatori a cui appartiene questo modificatore.

displayName

string

Nome leggibile per questo modello da mostrare nelle interfacce utente.

image

object (Image)

Immagine da visualizzare per questo elemento nella UI.

priceAdjustment

object (Money)

L'aggiustamento del prezzo associato a questo modificatore, se presente. È il prezzo per unità del modificatore.

integrationAttributes

object (ModifierIntegrationAttributes)

Metadati associati a questa entità utilizzati per le integrazioni downstream.

alreadyIncluded

boolean

Indica se questo modificatore è già incluso nell'ordine.

SuggestedModifierGroups

Un elenco di gruppi di modificatori da suggerire al cliente.

Rappresentazione JSON
{
  "modifierGroups": [
    {
      object (SuggestedModGroup)
    }
  ]
}
Campi
modifierGroups[]

object (SuggestedModGroup)

I gruppi di modificatori da suggerire al cliente.

SuggestedModGroup

Un gruppo di modificatori da suggerire al cliente.

Rappresentazione JSON
{
  "modifierGroupId": string,
  "displayName": string,
  "modifiers": [
    {
      object (SuggestedModifier)
    }
  ],
  "maxSelectionCount": integer,
  "minSelectionCount": integer,
  "maxSelectionCountPerModifier": integer
}
Campi
modifierGroupId

string

ID del gruppo di modificatori nel menu.

displayName

string

Il nome visualizzato del gruppo di modificatori.

modifiers[]

object (SuggestedModifier)

I modificatori in questo gruppo.

maxSelectionCount

integer

Il numero massimo di modificatori che possono essere selezionati da questo gruppo.

minSelectionCount

integer

Il numero minimo di modificatori che devono essere selezionati da questo gruppo.

maxSelectionCountPerModifier

integer

Limita il numero di volte in cui ogni modificatore può essere applicato all'interno di questo gruppo.

SentimentMeasurement

Il punteggio del sentiment in tempo reale misurato per questo turno.

Rappresentazione JSON
{
  "score": number,
  "magnitude": number
}
Campi
score

number

Facoltativo. Punteggio del sentiment compreso tra -1,0 (sentiment negativo) e 1,0 (sentiment positivo).

magnitude

number

Facoltativo. L'intensità del sentiment, indipendentemente dal punteggio.

TurnCompleted

Questo tipo non contiene campi.

Indica che l'agente AI per il cibo ha rilevato la fine del turno di conversazione corrente e non fornirà ulteriori output per questo turno.

EndSession

Indica che l'agente ha terminato la sessione, a causa del completamento riuscito (ad es.l'utente dice "Arrivederci"). ) o un riassegnazione a un agente.

Rappresentazione JSON
{
  "type": enum (EndType),
  "reason": string,
  "posResponse": string,
  "agentResponse": string,
  "storeSchedule": {
    object (Schedule)
  }
}
Campi
type

enum (EndType)

Il tipo di evento di fine sessione.

reason

string

Il motivo della fine della sessione.

posResponse

string

Facoltativo. La risposta del POS al check-in dell'ordine (facoltativo). Questo è un payload di stringa opaca che rappresenta lo stato della transazione POS.

agentResponse

string

Facoltativo. Il messaggio di risposta finale dell'agente da pronunciare/mostrare all'utente (facoltativo).

storeSchedule

object (Schedule)

Facoltativo. Il programma del negozio. È impostato solo quando il tipo di fine è STORE_CLOSED.

EndType

Tipo di evento di fine sessione.

Enum
END_TYPE_UNSPECIFIED Il tipo di fine non è specificato.
DRIVE_OFF Il cliente è partito.
AGENT_ESCALATION L'agente ha riassegnato la sessione a un agente umano.
CREW_INTERJECTION Un membro della troupe è intervenuto nella sessione.
ORDER_COMPLETED L'ordine è stato completato correttamente e non sono necessarie ulteriori azioni.
PAYMENT_FLOW_SUCCESS Il flusso di pagamento è andato a buon fine e non sono necessarie ulteriori azioni.
PAYMENT_FLOW_FAILURE Il flusso di pagamento non è andato a buon fine.
CLIENT_ESCALATION Il cliente ha riassegnato la sessione a un agente umano.
CALLER_HANGUP Il cliente ha interrotto la chiamata in anticipo.
REQUESTED_CHECKOUT Il cliente ha richiesto di effettuare il pagamento.
REQUESTED_ORDER_STATUS Il cliente ha chiesto informazioni sullo stato dell'ordine.
STORE_CLOSED Il negozio è chiuso.

RecommendedOrders

Un elenco di ordini consigliati dall'agente all'utente.

Rappresentazione JSON
{
  "recommendedOrders": [
    {
      object (RecommendedOrder)
    }
  ]
}
Campi
recommendedOrders[]

object (RecommendedOrder)

Gli ordini consigliati da mostrare all'utente.

RecommendedOrder

Un ordine consigliato dall'agente all'utente.

Rappresentazione JSON
{
  "order": {
    object (Order)
  }
}
Campi
order

object (Order)

L'ordine consigliato da mostrare all'utente.