Method: projects.locations.sessions.processOrder

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

string

Obligatorio. Es la sesión del pedido. Formato: projects/{project}/locations/{location}/sessions/{session}

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 (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.
}
Campos
config.store

string

Obligatorio. Es la tienda para la que se realiza el pedido. Formato: projects/{project}/locations/{location}/brands/{brand}/stores/{store}

config.laneId

string

Es opcional. Es el ID de un carril específico de la tienda con acceso vehicular.

config.enableEchoCancellation

boolean

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

string

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

object (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

object (ClientAppInfo)

Es opcional. Es la información sobre el entorno del dispositivo y la aplicación cliente.

config.mode

enum (SessionMode)

Es opcional. Es el modo de la sesión.

config.channelType

enum (ChannelType)

Es opcional. Es el tipo de canal que se usa para la comunicación con el agente.

config.enableListenOnlyDualChannel

boolean

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

string (Timestamp format)

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: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

turnType

enum (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

object (TextInput)

Es la entrada de texto del cliente.

audioInput

object (AudioInput)

Es la entrada de audio del cliente.

eventInput

object (EventInput)

Es la entrada del evento del cliente.

clientExecutionResult

object (ClientExecutionResult)

Es el resultado de una solicitud de ejecución del cliente.

blobInput

object (Blob)

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 (BidiProcessOrderResponse)
    }
  ]
}
Campos
responses[]

object (BidiProcessOrderResponse)

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

string

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

string (bytes format)

Obligatorio. Son los datos de audio del cliente.

Es una cadena codificada en Base64.

crewAudio

string (bytes format)

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 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.
}
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

object (DriveOffEvent)

Es el evento de conducción.

crewInterjectionEvent

object (CrewInterjectionEvent)

Es el evento de interrupción del equipo.

updateOrderStateEvent

object (OrderStateUpdateEvent)

Es una actualización del estado del pedido del cliente.

clientEscalationEvent

object (ClientEscalationEvent)

Es un evento de derivación del cliente.

callerHangupEvent

object (CallerHangupEvent)

Es opcional. Es un evento de corte de llamada.

posErrorInput

object (PosErrorEvent)

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

string

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

string

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 (Order)
  }
}
Campos
order

object (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

string

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[]

string

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[]

string

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 UpdatedOrderState.OrderItem.uid.

affectedExternalIds[]

string

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 ItemIntegrationAttributes o ModifierIntegrationAttributes).

metadata

map (key: string, value: string)

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 "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

ClientExecutionResult

Es el resultado de una solicitud de ejecución del cliente.

Representación 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.
}
Campos
executionId

string

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

object (FinalizeOrderResponse)

Es el resultado de la finalización del pedido.

orderPricesResponse

object (OrderPricesResponse)

Es el resultado de obtener los precios del pedido.

validateDeliveryAddressResponse

object (ValidateDeliveryAddressResponse)

Es el resultado de la validación de la dirección de entrega.

orderStatusResponse

object (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 (PaymentInfo)
  },
  "totalAmountDue": {
    object (Money)
  },
  "orderPriceInfo": {
    object (OrderPriceInfo)
  }
}
Campos
paymentFlowEnabled

boolean

Es opcional. Indica si se debe habilitar el flujo de procesamiento de pagos en el agente.

paymentInfo

object (PaymentInfo)

Es opcional. Es la información de pago del cliente. No se realiza ninguna operación si paymentFlowEnabled es falso.

totalAmountDue

object (Money)

Es opcional. Es el importe total adeudado del pedido.

orderPriceInfo

object (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 (PaymentMethod)
}
Campos
creditCardLastFourDigits

string

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

string

Es opcional. Es el CVV de la tarjeta de crédito.

paymentMethod

enum (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 (OrderPriceInfo)
  }
}
Campos
success

boolean

Obligatorio. Indica si se recuperaron correctamente los precios del pedido.

orderPriceInfo

object (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 (ValidationStatus)
}
Campos
success

boolean

Obligatorio. Indica si la validación se completó sin errores.

validationStatus

enum (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

boolean

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

string

Obligatorio. Es el tipo de MIME estándar de IANA de los datos de origen.

data

string (bytes format)

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 (FeatureGate)
  },
  "clientAppInfo": {
    object (ClientAppInfo)
  },
  "mode": enum (SessionMode),
  "channelType": enum (ChannelType),
  "enableListenOnlyDualChannel": boolean,
  "testSessionStartTime": string
}
Campos
session

string

Obligatorio. Es la sesión del pedido. Formato: projects/{project}/locations/{location}/sessions/{session}

store

string

Obligatorio. Es la tienda para la que se realiza el pedido. Formato: projects/{project}/locations/{location}/brands/{brand}/stores/{store}

laneId

string

Es opcional. Es el ID de un carril específico de la tienda con acceso vehicular.

enableEchoCancellation

boolean

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

string

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

object (FeatureGate)

Es opcional. Son los interruptores de funciones de la sesión. Se usa para habilitar o inhabilitar funciones para la sesión.

clientAppInfo

object (ClientAppInfo)

Es opcional. Es la información sobre el entorno del dispositivo y la aplicación cliente.

mode

enum (SessionMode)

Es opcional. Es el modo de la sesión.

channelType

enum (ChannelType)

Es opcional. Es el tipo de canal que se usa para la comunicación con el agente.

enableListenOnlyDualChannel

boolean

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

string (Timestamp format)

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: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" o "2014-10-02T15:01:23+05:30".

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

boolean

Es opcional. Devuelve los datos del menú al cliente en BidiProcessOrderResponse si se configura.

updatedOrderStateEnabled

boolean

Es opcional. Si se configura, se devuelve updatedOrderState en lugar de legacyOrderStateResponse.

enableOrderStatusRetrieval

boolean

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

string

Es opcional. Modelo del dispositivo del cliente (p.ej., "iPhone 13", "Pixel 7", "Kiosk v2").

osVersion

string

Es opcional. Es la versión del sistema operativo del cliente (p.ej., "iOS 16.1", "Android 13").

sdkVersion

string

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 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.
}
Campos
Campo de unión response. Es la respuesta del agente. response puede ser solo uno de los parámetros siguientes:
agentAudio

object (AgentAudio)

Es la respuesta de audio del agente.

speechRecognition

object (SpeechRecognition)

Es el resultado del reconocimiento de voz del agente.

legacyOrderStateResponse

object (Struct format)

Es la respuesta del estado del pedido heredado para una sesión.

interruptionSignal

object (InterruptionSignal)

Se detectó una señal de interrupción en la entrada de audio.

agentEvent

object (AgentEvent)

Es el evento del agente.

clientExecutionRequest

object (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

object (UpdatedOrderState)

Indica una actualización del estado del pedido. Incluye el estado completo del pedido.

agentText

object (AgentText)

Es la respuesta de texto del agente.

suggestedOptions

object (SuggestedOptions)

Son las opciones que se le sugieren al cliente.

sentimentMeasurement

object (SentimentMeasurement)

Es la puntuación de opinión en tiempo real que se midió para este turno.

turnCompleted

object (TurnCompleted)

Mensaje de turno completado.

endSession

object (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:

  • Turno 1
  • entrada del cliente 1
  • … mensajes de respuesta del agente y de estado del pedido
  • turnCompleted
  • Turno 2
  • entrada del cliente 2
  • … mensajes de respuesta del agente y de estado del pedido
  • endSession
  • … mensajes de estado del pedido y respuesta del agente pendientes
  • turnCompleted

AgentAudio

Es la respuesta de audio del agente.

Representación JSON
{
  "agentAudio": string
}
Campos
agentAudio

string (bytes format)

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

string

Texto transcrito de la entrada de audio en el idioma detectado.

languageCode

string

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

boolean

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 event can be only one of the following:
  "restartOrder": {
    object (RestartOrder)
  }
  // End of list of possible types for union field event.
}
Campos
Campo de unión event. Es el evento del agente. event puede ser solo uno de los parámetros siguientes:
restartOrder

object (RestartOrder)

El cliente solicita reiniciar el pedido.

RestartOrder

El cliente solicita reiniciar el pedido.

Representación JSON
{
  "confirmationStep": boolean
}
Campos
confirmationStep

boolean

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 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.
}
Campos
executionId

string

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

object (FinalizeOrderRequest)

Es una solicitud para finalizar el pedido.

submitOrderRequest

object (SubmitOrderRequest)

Es una solicitud para enviar el pedido.

orderPricesRequest

object (OrderPricesRequest)

Es una solicitud para obtener los precios del pedido.

validateDeliveryAddressRequest

object (ValidateDeliveryAddressRequest)

Es una solicitud para validar la dirección de entrega.

orderStatusRequest

object (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 (PaymentInfo)
  },
  "loyaltyInfo": {
    object (LoyaltyInfo)
  },
  "tipAmount": {
    object (Money)
  }
}
Campos
paymentInfo

object (PaymentInfo)

Obligatorio. Es la información de pago del pedido.

loyaltyInfo

object (LoyaltyInfo)

Es opcional. Es la lealtad que se consumió para el pedido.

tipAmount

object (Money)

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 (LoyaltyAmount)
  }
}
Campos
loyaltyAmount

object (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

string (int64 format)

Obligatorio. Son los puntos de lealtad.

OrderPricesRequest

Es una solicitud para obtener los precios del pedido.

Representación JSON
{
  "order": {
    object (Order)
  }
}
Campos
order

object (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 (DeliveryAddress)
  }
}
Campos
deliveryAddress

object (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 (Order)
  },
  "changed": boolean
}
Campos
order

object (Order)

Es el estado actualizado del pedido asociado a esta sesión.

changed

boolean

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

string

Es la respuesta de texto del agente.

SuggestedOptions

Son las opciones que se le sugieren al cliente.

Representación 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.
}
Campos
suggestedModifierGroups

object (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

object (SuggestedItems)

Es una lista de elementos para sugerirle al cliente.

suggestedModifiers

object (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 (SuggestedItem)
    }
  ]
}
Campos
items[]

object (SuggestedItem)

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 (Image)
  },
  "basePrice": {
    object (Money)
  },
  "integrationAttributes": {
    object (ItemIntegrationAttributes)
  }
}
Campos
itemId

string

Es el ID del elemento del menú.

displayName

string

Nombre legible por humanos de este elemento que se mostrará en las interfaces de usuario.

image

object (Image)

Imagen que se mostrará para este elemento en la IU.

basePrice

object (Money)

Es el precio base del artículo. Esto puede verse afectado por los modificadores seleccionados. Es el precio por unidad del artículo.

integrationAttributes

object (ItemIntegrationAttributes)

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 (SuggestedModifier)
    }
  ],
  "parentUid": string
}
Campos
modifiers[]

object (SuggestedModifier)

Son los modificadores que se le sugieren al cliente.

parentUid

string

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 (Image)
  },
  "priceAdjustment": {
    object (Money)
  },
  "integrationAttributes": {
    object (ModifierIntegrationAttributes)
  },
  "alreadyIncluded": boolean
}
Campos
modifierId

string

ID del modificador en el menú.

modifierGroupId

string

ID del grupo de modificadores al que se debe agregar este modificador si se acepta la sugerencia.

modifierGroupDisplayName

string

Es el nombre visible del grupo de modificadores al que pertenece este modificador.

displayName

string

Nombre legible por humanos de este elemento que se mostrará en las interfaces de usuario.

image

object (Image)

Imagen que se mostrará para este elemento en la IU.

priceAdjustment

object (Money)

Es el ajuste de precio asociado a este modificador, si corresponde. Es el precio por unidad del modificador.

integrationAttributes

object (ModifierIntegrationAttributes)

Son los metadatos asociados a esta entidad que se usan para las integraciones posteriores.

alreadyIncluded

boolean

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 (SuggestedModGroup)
    }
  ]
}
Campos
modifierGroups[]

object (SuggestedModGroup)

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 (SuggestedModifier)
    }
  ],
  "maxSelectionCount": integer,
  "minSelectionCount": integer,
  "maxSelectionCountPerModifier": integer
}
Campos
modifierGroupId

string

ID del grupo de modificadores en el menú.

displayName

string

Es el nombre visible del grupo de modificadores.

modifiers[]

object (SuggestedModifier)

Son los modificadores de este grupo.

maxSelectionCount

integer

Es la cantidad máxima de modificadores que se pueden seleccionar en este grupo.

minSelectionCount

integer

Es la cantidad mínima de modificadores que se deben seleccionar de este grupo.

maxSelectionCountPerModifier

integer

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

number

Es opcional. Es la puntuación de sentimiento entre -1.0 (sentimiento negativo) y 1.0 (sentimiento positivo).

magnitude

number

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 (EndType),
  "reason": string,
  "posResponse": string,
  "agentResponse": string,
  "storeSchedule": {
    object (Schedule)
  }
}
Campos
type

enum (EndType)

Es el tipo de evento de finalización de sesión.

reason

string

Es el motivo por el que se finalizó la sesión.

posResponse

string

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

string

Es opcional. Es el mensaje de respuesta final del agente que se le mostrará o dirá al usuario (opcional).

storeSchedule

object (Schedule)

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.