- Solicitud HTTP
- Parámetros de ruta
- Cuerpo de la solicitud
- Cuerpo de la respuesta
- Permisos de autorización
- TextInput
- AudioInput
- EventInput
- DriveOffEvent
- CrewInterjectionEvent
- OrderStateUpdateEvent
- ClientEscalationEvent
- CallerHangupEvent
- PosErrorEvent
- ClientExecutionResult
- FinalizeOrderResponse
- PaymentInfo
- PaymentMethod
- OrderPricesResponse
- ValidateDeliveryAddressResponse
- OrderStatusResponse
- BLOB
- Configuración
- FeatureGate
- ClientAppInfo
- SessionMode
- TurnType
- BidiProcessOrderResponse
- AgentAudio
- SpeechRecognition
- InterruptionSignal
- AgentEvent
- RestartOrder
- ClientExecutionRequest
- FinalizeOrderRequest
- SubmitOrderRequest
- LoyaltyInfo
- LoyaltyAmount
- OrderPricesRequest
- ValidateDeliveryAddressRequest
- OrderStatusRequest
- UpdatedOrderState
- AgentText
- SuggestedOptions
- SuggestedItems
- SuggestedItem
- SuggestedModifiers
- SuggestedModifier
- SuggestedModifierGroups
- SuggestedModGroup
- SentimentMeasurement
- TurnCompleted
- EndSession
- EndType
Realiza una sola lógica de turno para procesar la entrada del usuario y devolver el resultado.
Solicitud HTTP
POST https://foodorderingaiagent.googleapis.com/v1/{config.session=projects/*/locations/*/sessions/*}:processOrder
La URL usa la sintaxis de la transcodificación gRPC.
Parámetros de ruta
| Parámetros | |
|---|---|
config.session |
Obligatorio. Es la sesión del pedido. Formato: |
Cuerpo de la solicitud
El cuerpo de la solicitud contiene datos con la siguiente estructura:
| Representación 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 ( |
| Campos | |
|---|---|
config.store |
Obligatorio. Es la tienda para la que se realiza el pedido. Formato: |
config.laneId |
Es opcional. Es el ID de un carril específico de la tienda con acceso vehicular. |
config.enableEchoCancellation |
Es opcional. Indica si se debe habilitar la cancelación de eco para la sesión. Si está habilitado, el cliente debe proporcionar customerAudio y crewAudio en AudioInput. |
config.daypartId |
Es opcional. Es la parte del día del menú de comida, como desayuno, almuerzo, cena, etcétera. Se usa para determinar el menú que se usará para el pedido. |
config.featureGate |
Es opcional. Son los interruptores de funciones de la sesión. Se usa para habilitar o inhabilitar funciones para la sesión. |
config.clientAppInfo |
Es opcional. Es la información sobre el entorno del dispositivo y la aplicación cliente. |
config.mode |
Es opcional. Es el modo de la sesión. |
config.channelType |
Es opcional. Es el tipo de canal que se usa para la comunicación con el agente. |
config.enableListenOnlyDualChannel |
Es opcional. Indica si se debe habilitar el canal dual de solo escucha para la sesión. Si está habilitado, el cliente debe proporcionar customerAudio y crewAudio en AudioInput, y CES realizará la EAC y la suma en el servidor de procesamiento de medios. |
config.testSessionStartTime |
Es opcional. Es la hora de inicio de la sesión, que se usa con fines de prueba o evaluación. Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: |
turnType |
Es opcional. Es un indicador explícito de la posición de la solicitud en el ciclo de vida de la sesión. Permite que los clientes controlen de forma determinística cuándo se insertan las variables de configuración de la sesión inicial. |
Campo de unión input. Es la entrada del cliente. input puede ser solo uno de los parámetros siguientes: |
|
textInput |
Es la entrada de texto del cliente. |
audioInput |
Es la entrada de audio del cliente. |
eventInput |
Es la entrada del evento del cliente. |
clientExecutionResult |
Es el resultado de una solicitud de ejecución del cliente. |
blobInput |
Es una entrada de datos binarios genérica. Refleja http://google3/google/cloud/ces/v1main/session_service.proto?l=720 |
Cuerpo de la respuesta
Mensaje de respuesta para FoodOrderingService.ProcessOrder. Contiene funcionalmente campos de BidiProcessOrderResponse, excepto los específicos de la transmisión.
Si se ejecuta correctamente, el cuerpo de la respuesta contiene datos con la siguiente estructura:
| Representación JSON |
|---|
{
"responses": [
{
object ( |
| Campos | |
|---|---|
responses[] |
Solo salida. Es la lista de respuestas del agente a la solicitud, que se muestran en orden. |
Permisos de autorización
Requiere el siguiente permiso de OAuth:
https://www.googleapis.com/auth/cloud-platform
Para obtener más información, consulta Authentication Overview.
TextInput
Es la entrada de texto del cliente. En lugar de audio, el cliente también puede enviar entrada de texto al agente. Un cliente debe usar la entrada de texto o de audio, no ambas.
| Representación JSON |
|---|
{ "text": string } |
| Campos | |
|---|---|
text |
Obligatorio. Es el enunciado de texto del cliente. |
AudioInput
Es la entrada de audio del cliente. El audio de entrada puede tener varios canales para el cliente, el equipo, etcétera. Todos deben estar sincronizados y en el formato especificado en la configuración. No se deben incluir encabezados de audio. De forma predeterminada, el audio debe usar la codificación de audio PCM lineal de 16 bits y una frecuencia de muestreo de 16,000 Hz. La cantidad total de bytes de todos los canales debe ser inferior a 25,600 bytes.
| Representación JSON |
|---|
{ "customerAudio": string, "crewAudio": string } |
| Campos | |
|---|---|
customerAudio |
Obligatorio. Son los datos de audio del cliente. Es una cadena codificada en Base64. |
crewAudio |
Es opcional. Son los datos de audio del equipo. Este es un canal de audio opcional para el miembro del equipo en el mismo carril que el cliente, y se usa como audio de referencia para la cancelación de eco. Es una cadena codificada en Base64. |
EventInput
Es la entrada del evento del cliente. Se usa para activar eventos específicos dentro del agente.
| Representación JSON |
|---|
{ // Union field |
| Campos | |
|---|---|
Campo de unión event. ID siguiente: 10. Es el evento que se activará. event puede ser solo uno de los parámetros siguientes: |
|
driveOffEvent |
Es el evento de conducción. |
crewInterjectionEvent |
Es el evento de interrupción del equipo. |
updateOrderStateEvent |
Es una actualización del estado del pedido del cliente. |
clientEscalationEvent |
Es un evento de derivación del cliente. |
callerHangupEvent |
Es opcional. Es un evento de corte de llamada. |
posErrorInput |
Es opcional. Es un evento de error del POS. |
DriveOffEvent
Es el evento de conducción. Indica que el cliente se fue. La sesión se cerrará después de este evento.
| Representación JSON |
|---|
{ "reason": string } |
| Campos | |
|---|---|
reason |
Es opcional. Es el motivo por el que el vehículo se alejó, p.ej., "pedido completado" o "alejamiento inesperado". |
CrewInterjectionEvent
Es el evento de interrupción del equipo. Esto indica que un miembro del equipo interrumpió la sesión. La sesión se cerrará después de este evento.
| Representación JSON |
|---|
{ "mode": string } |
| Campos | |
|---|---|
mode |
Es opcional. Es el modo en el que intervino el miembro del equipo, p.ej., "auriculares", "pos". |
OrderStateUpdateEvent
Es la solicitud para actualizar el estado del pedido. Este evento se debe enviar cuando se actualiza el pedido en el cliente, p.ej., cuando se agrega o quita un elemento a través de una interfaz táctil tradicional.
| Representación JSON |
|---|
{
"order": {
object ( |
| Campos | |
|---|---|
order |
Obligatorio. Es el estado actualizado del pedido asociado a esta sesión. |
ClientEscalationEvent
Indica que el cliente está derivando la sesión a un agente humano.
| Representación JSON |
|---|
{ "reason": string } |
| Campos | |
|---|---|
reason |
Es opcional. Es el motivo de la derivación del cliente, p.ej., "pago-rechazado", "error-pos", "error-integración", etcétera. |
CallerHangupEvent
Este tipo no tiene campos.
Indica que el cliente cortó la llamada antes de tiempo (p.ej., aversión a la IA).
PosErrorEvent
Fallas específicas del punto de venta (PdV)
| Representación JSON |
|---|
{ "errorMessages": [ string ], "affectedItemUids": [ string ], "affectedExternalIds": [ string ], "metadata": { string: string, ... } } |
| Campos | |
|---|---|
errorMessages[] |
Es opcional. Es una lista de descripciones de los errores legibles por humanos. Se pueden proporcionar varios mensajes de error si se producen varios problemas de forma simultánea (p.ej., varios artículos están agotados) o para proporcionar un desglose más detallado de un solo error complejo. El agente puede usar estos mensajes para informar al cliente o para fines de registro. |
affectedItemUids[] |
Es opcional. Son los UID de elementos únicos que generó el agente de IA para pedidos de comida y que provocaron el error. Corresponde a |
affectedExternalIds[] |
Es opcional. Es la lista de IDs externos (del menú) que causaron el error. Debe ser igual a los representantes reales en el POS, que suelen estar en los atributos de integración en menu.proto (p.ej., en |
metadata |
Es opcional. Son metadatos de formato libre para la depuración o la señalización específica de la marca. Se puede usar para pasar códigos o categorías de error específicos de la marca (p.ej., {"BRAND_ERROR_CODE": "OUT_OF_STOCK"}). Un objeto que contiene una lista de pares |
ClientExecutionResult
Es el resultado de una solicitud de ejecución del cliente.
| Representación JSON |
|---|
{ "executionId": string, // Union field |
| Campos | |
|---|---|
executionId |
Obligatorio. Es el ID de la solicitud de ejecución para la que se muestra este resultado. |
Campo de unión response. Es el resultado específico de la ejecución. response puede ser solo uno de los parámetros siguientes: |
|
finalizeOrderResponse |
Es el resultado de la finalización del pedido. |
orderPricesResponse |
Es el resultado de obtener los precios del pedido. |
validateDeliveryAddressResponse |
Es el resultado de la validación de la dirección de entrega. |
orderStatusResponse |
Es el resultado de obtener el estado del pedido. |
FinalizeOrderResponse
Es el resultado de la finalización del pedido.
| Representación JSON |
|---|
{ "paymentFlowEnabled": boolean, "paymentInfo": { object ( |
| Campos | |
|---|---|
paymentFlowEnabled |
Es opcional. Indica si se debe habilitar el flujo de procesamiento de pagos en el agente. |
paymentInfo |
Es opcional. Es la información de pago del cliente. No se realiza ninguna operación si paymentFlowEnabled es falso. |
totalAmountDue |
Es opcional. Es el importe total adeudado del pedido. |
orderPriceInfo |
Es opcional. Es la información detallada del precio del pedido. |
PaymentInfo
Es la información de pago del usuario.
| Representación JSON |
|---|
{
"creditCardLastFourDigits": string,
"creditCardCvv": string,
"paymentMethod": enum ( |
| Campos | |
|---|---|
creditCardLastFourDigits |
Es opcional. Los últimos cuatro dígitos de la tarjeta de crédito Se usa para verificar el número de tarjeta de crédito en la etapa de pago. |
creditCardCvv |
Es opcional. Es el CVV de la tarjeta de crédito. |
paymentMethod |
Es opcional. Es el tipo de forma de pago que se usó. |
PaymentMethod
Es el tipo de forma de pago.
| Enums | |
|---|---|
PAYMENT_METHOD_UNSPECIFIED |
Forma de pago sin especificar. |
PAYMENT_METHOD_CREDIT_CARD |
Tarjeta de crédito |
PAYMENT_METHOD_CASH |
Efectivo |
OrderPricesResponse
Es el resultado de obtener los precios del pedido.
| Representación JSON |
|---|
{
"success": boolean,
"orderPriceInfo": {
object ( |
| Campos | |
|---|---|
success |
Obligatorio. Indica si se recuperaron correctamente los precios del pedido. |
orderPriceInfo |
Es opcional. Precio total del pedido después de aplicar todos los descuentos, comisiones, impuestos, etcétera |
ValidateDeliveryAddressResponse
Es el resultado de la validación de una dirección de entrega.
| Representación JSON |
|---|
{
"success": boolean,
"validationStatus": enum ( |
| Campos | |
|---|---|
success |
Obligatorio. Indica si la validación se completó sin errores. |
validationStatus |
Obligatorio. Es el estado de validación de la dirección de entrega. |
OrderStatusResponse
Es el resultado de obtener el estado del pedido.
| Representación JSON |
|---|
{ "success": boolean } |
| Campos | |
|---|---|
success |
Obligatorio. Indica si se recuperó correctamente el estado del pedido. |
BLOB
Representa una entrada o salida de BLOB en la conversación.
| Representación JSON |
|---|
{ "mimeType": string, "data": string } |
| Campos | |
|---|---|
mimeType |
Obligatorio. Es el tipo de MIME estándar de IANA de los datos de origen. |
data |
Obligatorio. Son los bytes sin procesar del BLOB. Es una cadena codificada en Base64. |
Configuración
Es la configuración de una sesión y las propiedades de pedidos de comida. Al comienzo de cada conexión, el cliente primero debe enviar un mensaje de configuración. Esto debe ocurrir antes de cualquier otra solicitud para iniciar la sesión. Si el cliente se desconecta, debe repetir el mismo mensaje de configuración cuando se vuelva a conectar.
| Representación JSON |
|---|
{ "session": string, "store": string, "laneId": string, "enableEchoCancellation": boolean, "daypartId": string, "featureGate": { object ( |
| Campos | |
|---|---|
session |
Obligatorio. Es la sesión del pedido. Formato: |
store |
Obligatorio. Es la tienda para la que se realiza el pedido. Formato: |
laneId |
Es opcional. Es el ID de un carril específico de la tienda con acceso vehicular. |
enableEchoCancellation |
Es opcional. Indica si se debe habilitar la cancelación de eco para la sesión. Si está habilitado, el cliente debe proporcionar customerAudio y crewAudio en AudioInput. |
daypartId |
Es opcional. Es la parte del día del menú de comida, como desayuno, almuerzo, cena, etcétera. Se usa para determinar el menú que se usará para el pedido. |
featureGate |
Es opcional. Son los interruptores de funciones de la sesión. Se usa para habilitar o inhabilitar funciones para la sesión. |
clientAppInfo |
Es opcional. Es la información sobre el entorno del dispositivo y la aplicación cliente. |
mode |
Es opcional. Es el modo de la sesión. |
channelType |
Es opcional. Es el tipo de canal que se usa para la comunicación con el agente. |
enableListenOnlyDualChannel |
Es opcional. Indica si se debe habilitar el canal dual de solo escucha para la sesión. Si está habilitado, el cliente debe proporcionar customerAudio y crewAudio en AudioInput, y CES realizará la EAC y la suma en el servidor de procesamiento de medios. |
testSessionStartTime |
Es opcional. Es la hora de inicio de la sesión, que se usa con fines de prueba o evaluación. Usa el formato RFC 3339, en el que el resultado generado siempre usará la normalización Z y los dígitos fraccionarios 0, 3, 6 o 9. También se aceptan otras compensaciones que no sean “Z”. Ejemplos: |
FeatureGate
Son los interruptores de funciones de la sesión. Se usa para habilitar o inhabilitar funciones para la sesión.
| Representación JSON |
|---|
{ "menuResponseEnabled": boolean, "updatedOrderStateEnabled": boolean, "enableOrderStatusRetrieval": boolean } |
| Campos | |
|---|---|
menuResponseEnabled |
Es opcional. Devuelve los datos del menú al cliente en BidiProcessOrderResponse si se configura. |
updatedOrderStateEnabled |
Es opcional. Si se configura, se devuelve updatedOrderState en lugar de legacyOrderStateResponse. |
enableOrderStatusRetrieval |
Es opcional. Si se configura, el agente admitirá la recuperación del estado del pedido. |
ClientAppInfo
Es información sobre el entorno del dispositivo y la aplicación cliente. Se usa principalmente para el registro, las estadísticas y la depuración.
| Representación JSON |
|---|
{ "deviceModel": string, "osVersion": string, "sdkVersion": string } |
| Campos | |
|---|---|
deviceModel |
Es opcional. Modelo del dispositivo del cliente (p.ej., "iPhone 13", "Pixel 7", "Kiosk v2"). |
osVersion |
Es opcional. Es la versión del sistema operativo del cliente (p.ej., "iOS 16.1", "Android 13"). |
sdkVersion |
Es opcional. Es la versión del SDK cliente o del software de la aplicación. |
SessionMode
Es el modo de la sesión.
| Enums | |
|---|---|
SESSION_MODE_UNSPECIFIED |
No se especificó el modo de sesión. |
HYBRID |
La sesión admite audio y texto. Esta es la opción predeterminada. |
TEXT |
La sesión es solo de texto. |
TurnType
Representa la posición del ciclo de vida de una solicitud unaria dentro de una sesión.
| Enums | |
|---|---|
TURN_TYPE_UNSPECIFIED |
Tipo de giro sin especificar. |
INITIALIZE |
Indica explícitamente que esta solicitud inicializa la sesión en modo unario. Cuando se configura, se insertan en CES las variables de sesión iniciales (p.ej., metadatos y menús de la tienda). |
SUBSEQUENT |
Indica explícitamente un turno de conversación posterior o una actualización durante la sesión. Cuando se configura, se omiten las variables de sesión iniciales para evitar la explosión de tokens de entrada. |
BidiProcessOrderResponse
Es el mensaje de nivel superior que muestra el método FoodOrderingService.BidiProcessOrder.
| Representación JSON |
|---|
{ // Union field |
| Campos | |
|---|---|
Campo de unión response. Es la respuesta del agente. response puede ser solo uno de los parámetros siguientes: |
|
agentAudio |
Es la respuesta de audio del agente. |
speechRecognition |
Es el resultado del reconocimiento de voz del agente. |
legacyOrderStateResponse |
Es la respuesta del estado del pedido heredado para una sesión. |
interruptionSignal |
Se detectó una señal de interrupción en la entrada de audio. |
agentEvent |
Es el evento del agente. |
clientExecutionRequest |
Es la solicitud que se reenvía al cliente para que la ejecute. Se usa para la ejecución del cliente, como agregar un código al pedido. |
updatedOrderState |
Indica una actualización del estado del pedido. Incluye el estado completo del pedido. |
agentText |
Es la respuesta de texto del agente. |
suggestedOptions |
Son las opciones que se le sugieren al cliente. |
sentimentMeasurement |
Es la puntuación de opinión en tiempo real que se midió para este turno. |
turnCompleted |
Mensaje de turno completado. |
endSession |
Indica que la sesión está finalizando y que este será el último turno. El agente terminará de enviar las respuestas pendientes del turno actual y, luego, enviará un mensaje final de turnCompleted. El agente no iniciará ningún turno nuevo. Por ejemplo, una sesión de 2 turnos se verá de la siguiente manera:
|
AgentAudio
Es la respuesta de audio del agente.
| Representación JSON |
|---|
{ "agentAudio": string } |
| Campos | |
|---|---|
agentAudio |
Son los datos de audio del agente. Es una cadena codificada en Base64. |
SpeechRecognition
Es el resultado del reconocimiento de voz del agente.
| Representación JSON |
|---|
{ "transcript": string, "languageCode": string, "isFinal": boolean } |
| Campos | |
|---|---|
transcript |
Texto transcrito de la entrada de audio en el idioma detectado. |
languageCode |
Es el código de idioma de la transcripción. El código de idioma debe estar en formato BCP-47, como "en-US". |
isFinal |
Indica si esta es la transcripción final del turno. |
InterruptionSignal
Este tipo no tiene campos.
Indica que se interrumpió la respuesta de audio del agente (p.ej., por una interrupción del usuario final). El cliente debe detener la reproducción de inmediato.
AgentEvent
Es un evento especial del agente que requiere que el cliente realice una acción.
| Representación JSON |
|---|
{ // Union field |
| Campos | |
|---|---|
Campo de unión event. Es el evento del agente. event puede ser solo uno de los parámetros siguientes: |
|
restartOrder |
El cliente solicita reiniciar el pedido. |
RestartOrder
El cliente solicita reiniciar el pedido.
| Representación JSON |
|---|
{ "confirmationStep": boolean } |
| Campos | |
|---|---|
confirmationStep |
El agente le pide al cliente que confirme la solicitud de reinicio. |
ClientExecutionRequest
Es una solicitud para que el cliente ejecute un comando.
| Representación JSON |
|---|
{ "executionId": string, // Union field |
| Campos | |
|---|---|
executionId |
Obligatorio. Es un ID único para esta solicitud de ejecución. |
Campo de unión request. Es la solicitud específica que se ejecutará. request puede ser solo uno de los parámetros siguientes: |
|
finalizeOrderRequest |
Es una solicitud para finalizar el pedido. |
submitOrderRequest |
Es una solicitud para enviar el pedido. |
orderPricesRequest |
Es una solicitud para obtener los precios del pedido. |
validateDeliveryAddressRequest |
Es una solicitud para validar la dirección de entrega. |
orderStatusRequest |
Es una solicitud para obtener el estado del pedido. |
FinalizeOrderRequest
Este tipo no tiene campos.
Es una solicitud para finalizar el pedido. Por lo general, el agente envía este mensaje cuando el cliente indica que terminó de hacer el pedido y quiere pagar.
SubmitOrderRequest
Es una solicitud para enviar el pedido, con toda la información de pago requerida recopilada del cliente.
| Representación JSON |
|---|
{ "paymentInfo": { object ( |
| Campos | |
|---|---|
paymentInfo |
Obligatorio. Es la información de pago del pedido. |
loyaltyInfo |
Es opcional. Es la lealtad que se consumió para el pedido. |
tipAmount |
Es opcional. Es el importe de la propina del pedido. |
LoyaltyInfo
Representa la información de lealtad de un cliente.
| Representación JSON |
|---|
{
"loyaltyAmount": {
object ( |
| Campos | |
|---|---|
loyaltyAmount |
Obligatorio. Es el importe de lealtad. Puede ser un saldo de lealtad o lealtad consumida. |
LoyaltyAmount
Representa el importe de lealtad de un cliente.
| Representación JSON |
|---|
{ "units": string } |
| Campos | |
|---|---|
units |
Obligatorio. Son los puntos de lealtad. |
OrderPricesRequest
Es una solicitud para obtener los precios del pedido.
| Representación JSON |
|---|
{
"order": {
object ( |
| Campos | |
|---|---|
order |
Es opcional. Es el pedido para el que se obtendrán los precios. Si no se especifica, podemos suponer que la solicitud es para el pedido o el carrito existentes en la sesión. |
ValidateDeliveryAddressRequest
Es una solicitud para validar una dirección de entrega recopilada durante la sesión.
| Representación JSON |
|---|
{
"deliveryAddress": {
object ( |
| Campos | |
|---|---|
deliveryAddress |
Obligatorio. Es la dirección de entrega que se validará. |
OrderStatusRequest
Este tipo no tiene campos.
Es una solicitud para obtener el estado del pedido.
UpdatedOrderState
Es el evento que devuelve el agente y que representa una actualización del estado del pedido.
| Representación JSON |
|---|
{
"order": {
object ( |
| Campos | |
|---|---|
order |
Es el estado actualizado del pedido asociado a esta sesión. |
changed |
Solo salida. Indica si el estado del pedido tiene actualizaciones. |
AgentText
Es la respuesta de texto del agente.
| Representación JSON |
|---|
{ "text": string } |
| Campos | |
|---|---|
text |
Es la respuesta de texto del agente. |
SuggestedOptions
Son las opciones que se le sugieren al cliente.
| Representación JSON |
|---|
{ "suggestedModifierGroups": { object ( |
| Campos | |
|---|---|
suggestedModifierGroups |
Es un grupo de modificadores sugeridos. |
Campo de unión suggested_options. Las opciones sugeridas. suggested_options puede ser solo uno de los parámetros siguientes: |
|
suggestedItems |
Es una lista de elementos para sugerirle al cliente. |
suggestedModifiers |
Es una lista de modificadores para sugerirle al cliente. |
SuggestedItems
Es una lista de elementos para sugerirle al cliente.
| Representación JSON |
|---|
{
"items": [
{
object ( |
| Campos | |
|---|---|
items[] |
Son los artículos que se le sugieren al cliente. |
SuggestedItem
Es un elemento para sugerirle al cliente.
| Representación JSON |
|---|
{ "itemId": string, "displayName": string, "image": { object ( |
| Campos | |
|---|---|
itemId |
Es el ID del elemento del menú. |
displayName |
Nombre legible por humanos de este elemento que se mostrará en las interfaces de usuario. |
image |
Imagen que se mostrará para este elemento en la IU. |
basePrice |
Es el precio base del artículo. Esto puede verse afectado por los modificadores seleccionados. Es el precio por unidad del artículo. |
integrationAttributes |
Son los metadatos asociados a esta entidad que se usan para las integraciones posteriores. |
SuggestedModifiers
Es una lista de modificadores para sugerirle al cliente.
| Representación JSON |
|---|
{
"modifiers": [
{
object ( |
| Campos | |
|---|---|
modifiers[] |
Son los modificadores que se le sugieren al cliente. |
parentUid |
Es el identificador único del elemento principal o modificador al que se aplicarán los modificadores. |
SuggestedModifier
Es un modificador para sugerirle al cliente.
| Representación JSON |
|---|
{ "modifierId": string, "modifierGroupId": string, "modifierGroupDisplayName": string, "displayName": string, "image": { object ( |
| Campos | |
|---|---|
modifierId |
ID del modificador en el menú. |
modifierGroupId |
ID del grupo de modificadores al que se debe agregar este modificador si se acepta la sugerencia. |
modifierGroupDisplayName |
Es el nombre visible del grupo de modificadores al que pertenece este modificador. |
displayName |
Nombre legible por humanos de este elemento que se mostrará en las interfaces de usuario. |
image |
Imagen que se mostrará para este elemento en la IU. |
priceAdjustment |
Es el ajuste de precio asociado a este modificador, si corresponde. Es el precio por unidad del modificador. |
integrationAttributes |
Son los metadatos asociados a esta entidad que se usan para las integraciones posteriores. |
alreadyIncluded |
Indica si este modificador ya está incluido en el pedido. |
SuggestedModifierGroups
Es una lista de grupos de modificadores para sugerirle al cliente.
| Representación JSON |
|---|
{
"modifierGroups": [
{
object ( |
| Campos | |
|---|---|
modifierGroups[] |
Son los grupos de modificadores que se sugieren al cliente. |
SuggestedModGroup
Es un grupo de modificadores para sugerirle al cliente.
| Representación JSON |
|---|
{
"modifierGroupId": string,
"displayName": string,
"modifiers": [
{
object ( |
| Campos | |
|---|---|
modifierGroupId |
ID del grupo de modificadores en el menú. |
displayName |
Es el nombre visible del grupo de modificadores. |
modifiers[] |
Son los modificadores de este grupo. |
maxSelectionCount |
Es la cantidad máxima de modificadores que se pueden seleccionar en este grupo. |
minSelectionCount |
Es la cantidad mínima de modificadores que se deben seleccionar de este grupo. |
maxSelectionCountPerModifier |
Limita la cantidad de veces que se puede aplicar cada modificador dentro de este grupo. |
SentimentMeasurement
Es la puntuación de opinión en tiempo real que se midió para este turno.
| Representación JSON |
|---|
{ "score": number, "magnitude": number } |
| Campos | |
|---|---|
score |
Es opcional. Es la puntuación de sentimiento entre -1.0 (sentimiento negativo) y 1.0 (sentimiento positivo). |
magnitude |
Es opcional. Es la magnitud del sentimiento, independientemente de la puntuación. |
TurnCompleted
Este tipo no tiene campos.
Indica que el agente de IA de comida detectó el final del turno de conversación actual y no proporcionará más resultados para este turno.
EndSession
Indica que el agente finalizó la sesión, ya sea porque se completó correctamente (p.ej., el usuario dice "¡Adiós!") ) o una derivación del agente.
| Representación JSON |
|---|
{ "type": enum ( |
| Campos | |
|---|---|
type |
Es el tipo de evento de finalización de sesión. |
reason |
Es el motivo por el que se finalizó la sesión. |
posResponse |
Es opcional. Es la respuesta del POS después de registrar el pedido (opcional). Es una carga útil de cadena opaca que representa el estado de la transacción en el POS. |
agentResponse |
Es opcional. Es el mensaje de respuesta final del agente que se le mostrará o dirá al usuario (opcional). |
storeSchedule |
Es opcional. Es el programa de la tienda. Este campo solo se establece cuando el tipo de finalización es STORE_CLOSED. |
EndType
Es el tipo de evento de finalización de sesión.
| Enums | |
|---|---|
END_TYPE_UNSPECIFIED |
No se especificó el tipo de finalización. |
DRIVE_OFF |
El cliente se fue en su automóvil. |
AGENT_ESCALATION |
El agente derivó la sesión a un agente humano. |
CREW_INTERJECTION |
Un miembro del equipo interrumpió la sesión. |
ORDER_COMPLETED |
El pedido se completó correctamente y no se requiere ninguna otra acción. |
PAYMENT_FLOW_SUCCESS |
El flujo de pago se completó correctamente y no es necesario realizar ninguna otra acción. |
PAYMENT_FLOW_FAILURE |
Se produjo un error en el flujo de pago. |
CLIENT_ESCALATION |
El cliente derivó la sesión a un agente humano. |
CALLER_HANGUP |
El cliente cortó la llamada antes de tiempo. |
REQUESTED_CHECKOUT |
El cliente solicitó completar la compra. |
REQUESTED_ORDER_STATUS |
El cliente preguntó sobre el estado de su pedido. |
STORE_CLOSED |
La tienda está cerrada. |