Method: projects.locations.sessions.processOrder

Executa uma lógica de turno único para processar a entrada do usuário e retornar o resultado.

Solicitação HTTP

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

O URL usa a sintaxe de transcodificação gRPC.

Parâmetros de caminho

Parâmetros
config.session

string

Obrigatório. A sessão do pedido. Formato: projects/{project}/locations/{location}/sessions/{session}

Corpo da solicitação

O corpo da solicitação contém dados com a seguinte estrutura:

Representação 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.
}
Campos
config.store

string

Obrigatório. A loja para a qual o pedido está sendo feito. Formato: projects/{project}/locations/{location}/brands/{brand}/stores/{store}

config.laneId

string

Opcional. O ID de uma faixa de drive-thru específica.

config.enableEchoCancellation

boolean

Opcional. Define se o cancelamento de eco será ativado para a sessão. Se ativado, o cliente precisa fornecer o customerAudio e o crewAudio no AudioInput.

config.daypartId

string

Opcional. Período do dia do cardápio, incluindo café da manhã, almoço, jantar etc. Isso é usado para determinar o cardápio a ser usado no pedido.

config.userInfo

object (UserInfo)

Opcional. As informações pessoais do usuário final compartilhadas com o agente.

config.orderType
(deprecated)

enum (OrderType)

Opcional. Descontinuado: use initialOrder.fulfillment.fulfillment_type. O tipo de pedido a ser feito.

config.initialOrder

object (Order)

Opcional. O pedido inicial antes de iniciar a sessão do agente. Se fornecido, o agente o usará como o estado inicial do pedido.

config.featureGate

object (FeatureGate)

Opcional. Os feature gates da sessão. Isso é usado para ativar ou desativar recursos da sessão.

config.initialUtterance

string

Opcional. A fala inicial do cliente para iniciar a conversa. Se fornecido, o agente vai usar isso como a primeira fala do usuário e não vai começar com uma mensagem de saudação.

config.clientAppInfo

object (ClientAppInfo)

Opcional. As informações sobre o aplicativo cliente e o ambiente do dispositivo.

config.mode

enum (SessionMode)

Opcional. O modo da sessão.

config.channelType

enum (ChannelType)

Opcional. O tipo de canal usado para a comunicação do agente.

config.enableListenOnlyDualChannel

boolean

Opcional. Define se o canal duplo somente para ouvir será ativado na sessão. Se ativado, o cliente precisa fornecer o customerAudio e o crewAudio no AudioInput, e o CES vai fazer o EAC e a soma no servidor de processamento de mídia.

config.testSessionStartTime

string (Timestamp format)

Opcional. O horário de início da sessão, usado para fins de teste ou avaliação.

Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de Z, outros ajustes também são aceitos. Exemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

turnType

enum (TurnType)

Opcional. Indicador explícito da posição da solicitação no ciclo de vida da sessão. Permite que os clientes controlem de forma determinística quando as variáveis de configuração da sessão inicial são injetadas.

Campo de união input. A entrada do cliente. input pode ser apenas de um dos tipos a seguir:
textInput

object (TextInput)

A entrada de texto do cliente.

audioInput

object (AudioInput)

A entrada de áudio do cliente.

eventInput

object (EventInput)

A entrada de evento do cliente.

clientExecutionResult

object (ClientExecutionResult)

O resultado de uma solicitação de execução do cliente.

blobInput

object (Blob)

Entrada de dados binários genéricos. Espelha http://google3/google/cloud/ces/v1main/session_service.proto?l=720

Corpo da resposta

Mensagem de resposta para FoodOrderingService.ProcessOrder. Contém campos de BidiProcessOrderResponse, exceto os específicos de streaming.

Se bem-sucedido, o corpo da resposta incluirá dados com a estrutura a seguir:

Representação JSON
{
  "responses": [
    {
      object (BidiProcessOrderResponse)
    }
  ]
}
Campos
responses[]

object (BidiProcessOrderResponse)

Apenas saída. Lista de respostas do agente à solicitação, retornadas em ordem.

Escopos de autorização

Requer o seguinte escopo OAuth:

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

Para mais informações, consulte Authentication Overview.

TextInput

A entrada de texto do cliente. Em vez de áudio, o cliente pode enviar uma entrada de texto para o agente. Um cliente precisa usar entrada de texto ou de áudio, não ambas.

Representação JSON
{
  "text": string
}
Campos
text

string

Obrigatório. A declaração de texto do cliente.

AudioInput

A entrada de áudio do cliente. O áudio de entrada pode ter vários canais para o cliente, a equipe etc. Todos eles precisam estar sincronizados e no formato especificado na configuração. Não inclua cabeçalhos de áudio. Por padrão, o áudio precisa usar a codificação de áudio PCM linear de 16 bits e uma taxa de amostragem de 16.000 Hz. O total de bytes de todos os canais precisa ser menor que 25.600 bytes.

Representação JSON
{
  "customerAudio": string,
  "crewAudio": string
}
Campos
customerAudio

string (bytes format)

Obrigatório. Dados de áudio do cliente.

Uma string codificada em base64.

crewAudio

string (bytes format)

Opcional. Dados de áudio da equipe. Esse é um canal de áudio opcional para o membro da equipe na mesma pista que o cliente e serve como áudio de referência para o cancelamento de eco.

Uma string codificada em base64.

EventInput

A entrada de evento do cliente. Isso é usado para acionar eventos específicos no agente.

Representação 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.
}
Campos
Campo de união event. Próximo ID: 10. O evento a ser acionado. event pode ser apenas de um dos tipos a seguir:
driveOffEvent

object (DriveOffEvent)

O evento de saída do veículo.

crewInterjectionEvent

object (CrewInterjectionEvent)

O evento de interjeição da tripulação.

updateOrderStateEvent

object (OrderStateUpdateEvent)

Uma atualização do lado do cliente para o estado do pedido.

clientEscalationEvent

object (ClientEscalationEvent)

Um evento de encaminhamento do lado do cliente.

customizedInputEvent

object (CustomizedInputEvent)

Um evento de entrada personalizado.

callerHangupEvent

object (CallerHangupEvent)

Opcional. Um evento de desligamento do autor da chamada.

posErrorInput

object (PosErrorEvent)

Opcional. Um evento de erro de PDV.

DriveOffEvent

O evento de saída do veículo. Isso indica que o cliente saiu. A sessão será encerrada após esse evento.

Representação JSON
{
  "reason": string
}
Campos
reason

string

Opcional. O motivo da saída, por exemplo, "pedido concluído", "saída inesperada".

CrewInterjectionEvent

O evento de interjeição da gangue. Isso indica que um membro da equipe interrompeu a sessão. A sessão será encerrada após esse evento.

Representação JSON
{
  "mode": string
}
Campos
mode

string

Opcional. O modo como o membro da tripulação interveio, por exemplo, "headset", "pos".

OrderStateUpdateEvent

A solicitação de atualização do estado do pedido. Esse evento precisa ser enviado quando o pedido é atualizado no lado do cliente, por exemplo, quando um item é adicionado ou removido por uma interface de toque tradicional.

Representação JSON
{
  "order": {
    object (Order)
  }
}
Campos
order

object (Order)

Obrigatório. O estado atualizado do pedido associado a essa sessão.

ClientEscalationEvent

Indica que o cliente está encaminhando a sessão para um agente humano.

Representação JSON
{
  "reason": string
}
Campos
reason

string

Opcional. O motivo do encaminhamento do cliente, por exemplo, "payment-declined", "pos-error", "integration-error" etc.

CustomizedInputEvent

Esse campo permite que um cliente da Food AI envie um evento personalizado ao agente. Por padrão, é uma operação nula. Entre em contato com o suporte ao cliente para ativar esse recurso.

Representação JSON
{
  "input": {
    object
  }
}
Campos
input

object (Struct format)

Obrigatório. Entrada do cliente para o agente.

CallerHangupEvent

Esse tipo não tem campos.

Indica que o cliente desligou a chamada antes do tempo (por exemplo, aversão à IA).

PosErrorEvent

Falhas específicas do ponto de venda (PDV).

Representação JSON
{
  "errorMessages": [
    string
  ],
  "affectedItemUids": [
    string
  ],
  "affectedExternalIds": [
    string
  ],
  "metadata": {
    string: string,
    ...
  }
}
Campos
errorMessages[]

string

Opcional. Uma lista de descrições legíveis por humanos dos erros. É possível fornecer várias mensagens de erro se vários problemas ocorrerem simultaneamente (por exemplo, vários itens estão fora de estoque) ou para fornecer um detalhamento mais detalhado de uma única falha complexa. Essas mensagens podem ser usadas pelo agente para informar o cliente ou para fins de registro.

affectedItemUids[]

string

Opcional. UIDs de itens exclusivos gerados pelo agente de IA para pedidos de comida que causaram o erro. Corresponde a UpdatedOrderState.OrderItem.uid.

affectedExternalIds[]

string

Opcional. Lista de IDs externos (do menu) que causaram o erro. Precisa ser igual aos representantes reais no PDV, que geralmente estão nos atributos de integração em menu.proto (por exemplo, em ItemIntegrationAttributes ou ModifierIntegrationAttributes).

metadata

map (key: string, value: string)

Opcional. Metadados de formato livre para depuração ou sinalização específica da marca. Pode ser usado para transmitir códigos do erro ou categorias específicas da marca (por exemplo, {"BRAND_ERROR_CODE": "OUT_OF_STOCK"}).

Um objeto com uma lista de pares "key": value. Exemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

ClientExecutionResult

O resultado de uma solicitação de execução do cliente.

Representação 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.
}
Campos
executionId

string

Obrigatório. O ID da solicitação de execução que gerou este resultado.

Campo de união response. O resultado específico da execução. response pode ser apenas de um dos tipos a seguir:
finalizeOrderResponse

object (FinalizeOrderResponse)

O resultado da finalização do pedido.

submitOrderResponse

object (SubmitOrderResponse)

O resultado do envio do pedido.

orderPricesResponse

object (OrderPricesResponse)

O resultado de receber os preços dos pedidos.

validateDeliveryAddressResponse

object (ValidateDeliveryAddressResponse)

O resultado da validação do endereço de entrega.

orderStatusResponse

object (OrderStatusResponse)

O resultado da consulta do status do pedido.

FinalizeOrderResponse

O resultado da finalização do pedido.

Representação JSON
{
  "paymentFlowEnabled": boolean,
  "paymentInfo": {
    object (PaymentInfo)
  },
  "totalAmountDue": {
    object (Money)
  },
  "orderPriceInfo": {
    object (OrderPriceInfo)
  }
}
Campos
paymentFlowEnabled

boolean

Opcional. Se o fluxo de processamento de pagamentos deve ser ativado no agente.

paymentInfo

object (PaymentInfo)

Opcional. As informações de pagamento do cliente. Não operacional se paymentFlowEnabled for falso.

totalAmountDue

object (Money)

Opcional. O valor total devido pelo pedido.

orderPriceInfo

object (OrderPriceInfo)

Opcional. As informações detalhadas de preço do pedido.

SubmitOrderResponse

O resultado do envio do pedido.

Representação JSON
{
  "success": boolean,
  "estimatedReadyDuration": string
}
Campos
success

boolean

Obrigatório. Se o pedido foi enviado com sucesso.

estimatedReadyDuration

string (Duration format)

Opcional. A duração estimada até que o pedido esteja pronto.

Duração em segundos com até nove dígitos fracionários, terminando em "s". Exemplo: "3.5s".

OrderPricesResponse

O resultado de receber os preços dos pedidos.

Representação JSON
{
  "success": boolean,
  "orderPriceInfo": {
    object (OrderPriceInfo)
  }
}
Campos
success

boolean

Obrigatório. Se os preços do pedido foram recuperados.

orderPriceInfo

object (OrderPriceInfo)

Opcional. Preço total do pedido após todos os descontos, taxas, tributos etc.

ValidateDeliveryAddressResponse

O resultado da validação de um endereço de entrega.

Representação JSON
{
  "success": boolean,
  "validationStatus": enum (ValidationStatus)
}
Campos
success

boolean

Obrigatório. Se a validação foi concluída sem erros.

validationStatus

enum (ValidationStatus)

Obrigatório. O status de validação do endereço de entrega.

OrderStatusResponse

O resultado da consulta do status do pedido.

Representação JSON
{
  "success": boolean
}
Campos
success

boolean

Obrigatório. Se o status do pedido foi recuperado.

Blob

Representa uma entrada ou saída de blob na conversa.

Representação JSON
{
  "mimeType": string,
  "data": string
}
Campos
mimeType

string

Obrigatório. O tipo MIME padrão da IANA dos dados de origem.

data

string (bytes format)

Obrigatório. Bytes brutos do blob.

Uma string codificada em base64.

Configuração

A configuração de uma sessão e das propriedades de pedido de comida. No início de cada conexão, o cliente precisa enviar uma mensagem de configuração. Isso precisa acontecer antes de qualquer outra solicitação para iniciar a sessão. Se o cliente se desconectar, ele precisará repetir a mesma mensagem de configuração ao se reconectar.

Representação 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
}
Campos
session

string

Obrigatório. A sessão do pedido. Formato: projects/{project}/locations/{location}/sessions/{session}

store

string

Obrigatório. A loja para a qual o pedido está sendo feito. Formato: projects/{project}/locations/{location}/brands/{brand}/stores/{store}

laneId

string

Opcional. O ID de uma faixa de drive-thru específica.

enableEchoCancellation

boolean

Opcional. Define se o cancelamento de eco será ativado para a sessão. Se ativado, o cliente precisa fornecer o customerAudio e o crewAudio no AudioInput.

daypartId

string

Opcional. Período do dia do cardápio, incluindo café da manhã, almoço, jantar etc. Isso é usado para determinar o cardápio a ser usado no pedido.

userInfo

object (UserInfo)

Opcional. As informações pessoais do usuário final compartilhadas com o agente.

orderType
(deprecated)

enum (OrderType)

Opcional. Descontinuado: use initialOrder.fulfillment.fulfillment_type. O tipo de pedido a ser feito.

initialOrder

object (Order)

Opcional. O pedido inicial antes de iniciar a sessão do agente. Se fornecido, o agente o usará como o estado inicial do pedido.

featureGate

object (FeatureGate)

Opcional. Os feature gates da sessão. Isso é usado para ativar ou desativar recursos da sessão.

initialUtterance

string

Opcional. A fala inicial do cliente para iniciar a conversa. Se fornecido, o agente vai usar isso como a primeira fala do usuário e não vai começar com uma mensagem de saudação.

clientAppInfo

object (ClientAppInfo)

Opcional. As informações sobre o aplicativo cliente e o ambiente do dispositivo.

mode

enum (SessionMode)

Opcional. O modo da sessão.

channelType

enum (ChannelType)

Opcional. O tipo de canal usado para a comunicação do agente.

enableListenOnlyDualChannel

boolean

Opcional. Define se o canal duplo somente para ouvir será ativado na sessão. Se ativado, o cliente precisa fornecer o customerAudio e o crewAudio no AudioInput, e o CES vai fazer o EAC e a soma no servidor de processamento de mídia.

testSessionStartTime

string (Timestamp format)

Opcional. O horário de início da sessão, usado para fins de teste ou avaliação.

Usa o padrão RFC 3339, em que a saída gerada é sempre convertida em Z e tem 0, 3, 6 ou 9 dígitos fracionários. Além de Z, outros ajustes também são aceitos. Exemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

UserInfo

Informações pessoais do usuário final compartilhadas com o agente de IA de alimentação.

Representação JSON
{
  "preferredName": string,
  "paymentInfo": {
    object (PaymentInfo)
  },
  "deliveryAddress": string,
  "pastOrders": [
    {
      object (PastOrder)
    }
  ],
  "loyaltyInfo": {
    object (LoyaltyInfo)
  },
  "phoneNumber": string,
  "userId": string,
  "savedDeliveryAddress": {
    object (DeliveryAddress)
  }
}
Campos
preferredName

string

Opcional. O nome que o agente deve usar para se dirigir ao usuário. O cliente da IA de alimentos é responsável por selecionar o nome preferido com base no perfil do usuário e garantir que ele esteja alinhado com a convenção da marca, por exemplo, usar o nome ou o nome completo.

paymentInfo

object (PaymentInfo)

Opcional. As informações de pagamento do usuário.

deliveryAddress
(deprecated)

string

Opcional. Descontinuado: use savedDeliveryAddress. O endereço de entrega salvo do usuário.

pastOrders[]

object (PastOrder)

Opcional. O histórico de pedidos do usuário.

loyaltyInfo

object (LoyaltyInfo)

Opcional. As informações de fidelidade do usuário.

phoneNumber

string

Opcional. O número de telefone do usuário.

userId

string

Opcional. O identificador exclusivo do usuário no sistema do cliente.

savedDeliveryAddress

object (DeliveryAddress)

Opcional. O endereço de entrega salvo do usuário. Vai substituir o campo deliveryAddress de string atual.

PastOrder

O pedido anterior do usuário.

Representação JSON
{
  "order": {
    object (Order)
  }
}
Campos
order

object (Order)

Obrigatório. O pedido original da IA de comida.

LoyaltyInfo

Representa as informações de fidelidade de um cliente.

Representação JSON
{
  "loyaltyAmount": {
    object (LoyaltyAmount)
  }
}
Campos
loyaltyAmount

object (LoyaltyAmount)

Obrigatório. O valor da fidelidade. Pode ser um saldo de fidelidade ou fidelidade consumida.

OrderType

O tipo de pedido a ser feito.

Tipos enumerados
ORDER_TYPE_UNSPECIFIED O tipo de pedido não foi especificado.
ORDER_TYPE_DRIVE_THROUGH O pedido é para drive-thru.
ORDER_TYPE_CARRY_OUT O pedido é para viagem.
ORDER_TYPE_DELIVERY O pedido é para entrega.

FeatureGate

Os feature gates da sessão. Isso é usado para ativar ou desativar recursos da sessão.

Representação JSON
{
  "triggerOfferEngineOnDemand": boolean,
  "triggerLoyaltyOnDemand": boolean,
  "triggerOrderMediaAssistantOnDemand": boolean,
  "menuResponseEnabled": boolean,
  "revampedPaymentFlowEnabled": boolean,
  "updatedOrderStateEnabled": boolean,
  "enableOrderStatusRetrieval": boolean
}
Campos
triggerOfferEngineOnDemand

boolean

Opcional. Somente para um público limitado, se definido, o mecanismo de ofertas será opcional no fluxo de pagamento e só será acionado quando os usuários solicitarem.

triggerLoyaltyOnDemand

boolean

Opcional. Somente para público limitado, se definido, o programa de fidelidade será opcional no fluxo de pagamento e só será acionado quando os usuários solicitarem.

triggerOrderMediaAssistantOnDemand

boolean

Opcional. Apenas para público limitado, se definido, o assistente de mídia de pedido será opcional e só será acionado quando os usuários solicitarem.

menuResponseEnabled

boolean

Opcional. Retorna os dados do menu para o cliente em BidiProcessOrderResponse, se definido.

revampedPaymentFlowEnabled

boolean

Opcional. Somente para um público-alvo limitado, se definido, uma versão reformulada do fluxo de pagamento será usada.

updatedOrderStateEnabled

boolean

Opcional. Se definido, updatedOrderState será retornado em vez de legacyOrderStateResponse.

enableOrderStatusRetrieval

boolean

Opcional. Se definido, o agente vai oferecer suporte à recuperação do status do pedido.

ClientAppInfo

Informações sobre o aplicativo cliente e o ambiente do dispositivo. Isso é usado principalmente para geração de registros, análise e depuração.

Representação JSON
{
  "deviceModel": string,
  "osVersion": string,
  "sdkVersion": string
}
Campos
deviceModel

string

Opcional. O modelo do dispositivo do cliente (por exemplo, "iPhone 13", "Pixel 7", "Kiosk v2").

osVersion

string

Opcional. A versão do sistema operacional do cliente (por exemplo, "iOS 16.1", "Android 13").

sdkVersion

string

Opcional. A versão do SDK do cliente ou do software de aplicativo.

SessionMode

O modo da sessão.

Tipos enumerados
SESSION_MODE_UNSPECIFIED O modo de sessão não foi especificado.
HYBRID A sessão aceita áudio e texto. Esse é o padrão.
TEXT A sessão é somente de texto.

TurnType

Representa a posição do ciclo de vida de uma solicitação unária em uma sessão.

Tipos enumerados
TURN_TYPE_UNSPECIFIED Tipo de curva não especificado.
INITIALIZE Indica explicitamente que essa solicitação inicializa a sessão no modo unário. Quando definidas, as variáveis de sessão inicial (por exemplo, metadados e menus da loja) são injetadas no CES.
SUBSEQUENT Indica explicitamente uma conversa subsequente ou uma atualização no meio da sessão. Quando definido, as variáveis de sessão inicial são omitidas para evitar a explosão de tokens de entrada.

BidiProcessOrderResponse

A mensagem de nível superior retornada pelo método FoodOrderingService.BidiProcessOrder.

Representação 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.
}
Campos
Campo de união response. A resposta do agente. response pode ser apenas de um dos tipos a seguir:
agentAudio

object (AgentAudio)

A resposta em áudio do agente.

speechRecognition

object (SpeechRecognition)

O resultado do reconhecimento de fala do agente.

legacyOrderStateResponse

object (Struct format)

A resposta de estado do pedido legado para uma sessão.

interruptionSignal

object (InterruptionSignal)

Sinal de interrupção detectado na entrada de áudio.

agentEvent

object (AgentEvent)

Evento do agente.

clientExecutionRequest

object (ClientExecutionRequest)

A solicitação é encaminhada ao cliente para execução. Isso é usado para execução do lado do cliente, como adicionar um código ao pedido.

updatedOrderState

object (UpdatedOrderState)

Indica uma atualização no estado do pedido. Inclui o estado completo do pedido.

agentText

object (AgentText)

A resposta em texto do agente.

suggestedOptions

object (SuggestedOptions)

Opções para sugerir ao cliente.

sentimentMeasurement

object (SentimentMeasurement)

A pontuação de sentimento em tempo real medida para essa vez.

turnCompleted

object (TurnCompleted)

Mensagem de curva concluída.

endSession

object (EndSession)

Indica que a sessão está terminando e que esta será a última vez.

O agente vai terminar de enviar as respostas pendentes da vez atual e, em seguida, vai enviar uma mensagem turnCompleted final. O agente não vai iniciar novas interações. Por exemplo, uma sessão de 2 turnos será assim:

  • Turno 1
  • entrada do cliente 1
  • ... mensagens de resposta do agente e de estado do pedido
  • turnCompleted
  • Turno 2
  • entrada do cliente 2
  • ... mensagens de resposta do agente e de estado do pedido
  • endSession
  • ... mensagens de resposta do agente e estado do pedido pendentes
  • turnCompleted
recommendedOrders

object (RecommendedOrders)

Os pedidos recomendados pelo agente.

AgentAudio

A resposta em áudio do agente.

Representação JSON
{
  "agentAudio": string
}
Campos
agentAudio

string (bytes format)

Os dados de áudio do agente.

Uma string codificada em base64.

SpeechRecognition

O resultado do reconhecimento de fala do agente.

Representação JSON
{
  "transcript": string,
  "languageCode": string,
  "isFinal": boolean
}
Campos
transcript

string

Texto transcrito da entrada de áudio no idioma detectado.

languageCode

string

O código de idioma da transcrição. O código de idioma precisa estar no formato BCP-47, como "en-US".

isFinal

boolean

Indica se esta é a transcrição final da vez.

InterruptionSignal

Esse tipo não tem campos.

Indica que a resposta de áudio do agente foi interrompida (por exemplo, por uma interrupção do usuário final). O cliente precisa interromper a reprodução imediatamente.

AgentEvent

Data especial do agente que exige que o cliente entre em ação.

Representação 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ão event. O evento do agente. event pode ser apenas de um dos tipos a seguir:
restartOrder

object (RestartOrder)

O cliente pede para reiniciar o pedido.

RestartOrder

O cliente pede para reiniciar o pedido.

Representação JSON
{
  "confirmationStep": boolean
}
Campos
confirmationStep

boolean

O agente está pedindo ao cliente para confirmar a solicitação de reinicialização.

ClientExecutionRequest

Uma solicitação para que o lado do cliente execute um comando.

Representação 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

Obrigatório. Um ID exclusivo para essa solicitação de execução.

Campo de união request. A solicitação específica a ser executada. request pode ser apenas de um dos tipos a seguir:
finalizeOrderRequest

object (FinalizeOrderRequest)

Uma solicitação para finalizar o pedido.

submitOrderRequest

object (SubmitOrderRequest)

Uma solicitação para enviar o pedido.

orderPricesRequest

object (OrderPricesRequest)

Uma solicitação para receber os preços do pedido.

validateDeliveryAddressRequest

object (ValidateDeliveryAddressRequest)

Uma solicitação para validar o endereço de entrega.

orderStatusRequest

object (OrderStatusRequest)

Uma solicitação para receber o status do pedido.

FinalizeOrderRequest

Esse tipo não tem campos.

Uma solicitação para finalizar o pedido. Normalmente, isso é enviado pelo agente quando o cliente indica que terminou o pedido e quer pagar.

SubmitOrderRequest

Uma solicitação para enviar o pedido, com todas as informações de pagamento necessárias coletadas do cliente.

Representação JSON
{
  "paymentInfo": {
    object (PaymentInfo)
  },
  "loyaltyInfo": {
    object (LoyaltyInfo)
  },
  "tipAmount": {
    object (Money)
  }
}
Campos
paymentInfo

object (PaymentInfo)

Obrigatório. As informações de pagamento do pedido.

loyaltyInfo

object (LoyaltyInfo)

Opcional. A fidelidade consumida para o pedido.

tipAmount

object (Money)

Opcional. O valor da gorjeta do pedido.

OrderPricesRequest

Uma solicitação para receber os preços do pedido.

Representação JSON
{
  "order": {
    object (Order)
  }
}
Campos
order

object (Order)

Opcional. O pedido para o qual os preços serão mostrados. Se não for especificado, podemos presumir que a solicitação é para o pedido/carrinho atual na sessão.

ValidateDeliveryAddressRequest

Uma solicitação para validar um endereço de entrega coletado durante a sessão.

Representação JSON
{
  "deliveryAddress": {
    object (DeliveryAddress)
  }
}
Campos
deliveryAddress

object (DeliveryAddress)

Obrigatório. O endereço de entrega a ser validado.

OrderStatusRequest

Esse tipo não tem campos.

Uma solicitação para receber o status do pedido.

UpdatedOrderState

Evento retornado pelo agente que representa uma atualização no estado do pedido.

Representação JSON
{
  "order": {
    object (Order)
  },
  "changed": boolean
}
Campos
order

object (Order)

O estado atualizado do pedido associado a esta sessão.

changed

boolean

Apenas saída. Se o estado do pedido tem atualizações.

AgentText

A resposta em texto do agente.

Representação JSON
{
  "text": string
}
Campos
text

string

A resposta em texto do agente.

SuggestedOptions

Opções para sugerir ao cliente.

Representação 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)

Um grupo de modificadores sugeridos.

Campo de união suggested_options. As opções sugeridas. suggested_options pode ser apenas de um dos tipos a seguir:
suggestedItems

object (SuggestedItems)

Uma lista de itens para sugerir ao cliente.

suggestedModifiers

object (SuggestedModifiers)

Uma lista de modificadores para sugerir ao cliente.

SuggestedItems

Uma lista de itens para sugerir ao cliente.

Representação JSON
{
  "items": [
    {
      object (SuggestedItem)
    }
  ]
}
Campos
items[]

object (SuggestedItem)

Os itens que serão sugeridos ao cliente.

SuggestedItem

Um item para sugerir ao cliente.

Representação JSON
{
  "itemId": string,
  "displayName": string,
  "image": {
    object (Image)
  },
  "basePrice": {
    object (Money)
  },
  "integrationAttributes": {
    object (ItemIntegrationAttributes)
  }
}
Campos
itemId

string

ID do item no menu.

displayName

string

Nome legível por humanos para que esse item seja mostrado nas interfaces do usuário.

image

object (Image)

Imagem a ser exibida para este item na UI.

basePrice

object (Money)

O preço base do item. Isso pode ser afetado pelos modificadores selecionados. É o preço por unidade do item.

integrationAttributes

object (ItemIntegrationAttributes)

Metadados associados a essa entidade usados para integrações downstream.

SuggestedModifiers

Uma lista de modificadores para sugerir ao cliente.

Representação JSON
{
  "modifiers": [
    {
      object (SuggestedModifier)
    }
  ],
  "parentUid": string
}
Campos
modifiers[]

object (SuggestedModifier)

Os modificadores que serão sugeridos ao cliente.

parentUid

string

O identificador exclusivo do item/modificador pai ao qual os modificadores serão aplicados.

SuggestedModifier

Um modificador para sugerir ao cliente.

Representação JSON
{
  "modifierId": string,
  "modifierGroupId": string,
  "modifierGroupDisplayName": string,
  "displayName": string,
  "image": {
    object (Image)
  },
  "priceAdjustment": {
    object (Money)
  },
  "integrationAttributes": {
    object (ModifierIntegrationAttributes)
  },
  "alreadyIncluded": boolean
}
Campos
modifierId

string

ID do modificador no menu.

modifierGroupId

string

ID do grupo de modificadores ao qual esse modificador será adicionado se a sugestão for aceita.

modifierGroupDisplayName

string

Nome de exibição do grupo de modificadores a que esse modificador pertence.

displayName

string

Nome legível por humanos para que esse item seja mostrado nas interfaces do usuário.

image

object (Image)

Imagem a ser exibida para este item na UI.

priceAdjustment

object (Money)

O ajuste de preço associado a esse modificador, se houver. É o preço por unidade do modificador.

integrationAttributes

object (ModifierIntegrationAttributes)

Metadados associados a essa entidade usados para integrações downstream.

alreadyIncluded

boolean

Se esse modificador já está incluído no pedido.

SuggestedModifierGroups

Uma lista de grupos de modificadores para sugerir ao cliente.

Representação JSON
{
  "modifierGroups": [
    {
      object (SuggestedModGroup)
    }
  ]
}
Campos
modifierGroups[]

object (SuggestedModGroup)

Os grupos de modificadores que serão sugeridos ao cliente.

SuggestedModGroup

Um grupo de modificadores para sugerir ao cliente.

Representação JSON
{
  "modifierGroupId": string,
  "displayName": string,
  "modifiers": [
    {
      object (SuggestedModifier)
    }
  ],
  "maxSelectionCount": integer,
  "minSelectionCount": integer,
  "maxSelectionCountPerModifier": integer
}
Campos
modifierGroupId

string

ID do grupo de modificadores no cardápio.

displayName

string

O nome de exibição do grupo de modificadores.

modifiers[]

object (SuggestedModifier)

Os modificadores neste grupo.

maxSelectionCount

integer

O número máximo de modificadores que podem ser selecionados nesse grupo.

minSelectionCount

integer

O número mínimo de modificadores que precisam ser selecionados desse grupo.

maxSelectionCountPerModifier

integer

Limita o número de vezes que cada modificador pode ser aplicado dentro desse grupo.

SentimentMeasurement

A pontuação de sentimento em tempo real medida para essa vez.

Representação JSON
{
  "score": number,
  "magnitude": number
}
Campos
score

number

Opcional. Sentimento entre -1,0 (sentimento negativo) e 1,0 (sentimento positivo).

magnitude

number

Opcional. Magnitude do sentimento, independentemente da pontuação.

TurnCompleted

Esse tipo não tem campos.

Indica que o agente de IA de comida detectou o fim da conversa atual e não vai fornecer mais respostas para ela.

EndSession

Indica que o agente encerrou a sessão, seja por conclusão bem-sucedida (por exemplo, o usuário diz "Até logo!"), ) ou um encaminhamento para um supervisor.

Representação JSON
{
  "type": enum (EndType),
  "reason": string,
  "posResponse": string,
  "agentResponse": string,
  "storeSchedule": {
    object (Schedule)
  }
}
Campos
type

enum (EndType)

O tipo de evento de encerramento de sessão.

reason

string

O motivo para encerrar a sessão.

posResponse

string

Opcional. A resposta do PDV ao fazer check-in do pedido (opcional). É um payload de string opaco que representa o status da transação do PDV.

agentResponse

string

Opcional. A mensagem de resposta final do agente a ser falada/exibida para o usuário (opcional).

storeSchedule

object (Schedule)

Opcional. A programação da loja. Isso só é definido quando o tipo de término é STORE_CLOSED.

EndType

Tipo de evento de encerramento de sessão.

Tipos enumerados
END_TYPE_UNSPECIFIED O tipo de término não está especificado.
DRIVE_OFF O cliente foi embora.
AGENT_ESCALATION O agente encaminhou a sessão para um agente humano.
CREW_INTERJECTION Um membro da equipe interrompeu a sessão.
ORDER_COMPLETED O pedido foi concluído, e nenhuma outra ação é necessária.
PAYMENT_FLOW_SUCCESS O fluxo de pagamento foi concluído, e nenhuma outra ação é necessária.
PAYMENT_FLOW_FAILURE O fluxo de pagamento falhou.
CLIENT_ESCALATION O cliente encaminhou a sessão para um agente humano.
CALLER_HANGUP O cliente desligou a chamada antes do tempo.
REQUESTED_CHECKOUT O cliente pediu para fazer o checkout.
REQUESTED_ORDER_STATUS O cliente perguntou sobre o status do pedido.
STORE_CLOSED A loja está fechada.

RecommendedOrders

Uma lista de pedidos recomendados pelo agente ao usuário.

Representação JSON
{
  "recommendedOrders": [
    {
      object (RecommendedOrder)
    }
  ]
}
Campos
recommendedOrders[]

object (RecommendedOrder)

Os pedidos recomendados que serão mostrados ao usuário.

RecommendedOrder

Um pedido recomendado pelo agente ao usuário.

Representação JSON
{
  "order": {
    object (Order)
  }
}
Campos
order

object (Order)

A ordem recomendada para exibição ao usuário.