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/v1/{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,
    "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

Obrigatório. A loja em que 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. Usado para determinar o cardápio a ser usado no pedido.

config.featureGate

object (FeatureGate)

Opcional. Os feature gates da sessão. Usado para ativar ou desativar recursos da sessã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 escuta será ativado para a sessão. Se ativado, o cliente precisa fornecer customerAudio e crewAudio no AudioInput, e o CES fará EAC e 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 determinista 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. Reflete http://google3/google/cloud/ces/v1main/session_service.proto?l=720

Corpo da resposta

Mensagem de resposta para FoodOrderingService.ProcessOrder. Contém funcionalmente 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 entrada de texto para o agente. Um cliente precisa usar entrada de texto ou áudio, não ambas.

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

string

Obrigatório. A expressã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 codificação de áudio PCM linear de 16 bits e 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 faixa que o cliente, e serviu como áudio de referência para 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)
  },
  "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.

crewInterjectionEvent

object (CrewInterjectionEvent)

O evento de interjeição da equipe.

updateOrderStateEvent

object (OrderStateUpdateEvent)

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

clientEscalationEvent

object (ClientEscalationEvent)

Um evento de encaminhamento do lado do cliente.

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. Isso indica que o cliente saiu do local. A sessão será encerrada após esse evento.

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

string

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

CrewInterjectionEvent

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

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

string

Opcional. O modo em que o membro da tripulação fez a intervenção, por exemplo, "headset", "pos".

OrderStateUpdateEvent

A solicitação de atualização do estado do pedido. Esse evento deve ser enviado quando o pedido for atualizado no lado do cliente, por exemplo, quando um item for 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 esta sessão.

ClientEscalationEvent

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

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

string

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

CallerHangupEvent

Esse tipo não tem campos.

Indica que o cliente encerrou a ligação antes do tempo (por exemplo, por não querer falar com uma 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 dos erros. Várias mensagens de erro podem ser fornecidas se vários problemas ocorrerem simultaneamente (por exemplo, vários itens estão fora de estoque) ou para fornecer uma análise mais detalhada 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 POS, que geralmente estão em 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 ou categorias de erro específicos 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)
  },
  "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 para a qual este é um 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.

orderPricesResponse

object (OrderPricesResponse)

O resultado da obtenção dos preços do pedido.

validateDeliveryAddressResponse

object (ValidateDeliveryAddressResponse)

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

orderStatusResponse

object (OrderStatusResponse)

O resultado da solicitação 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 será ativado no agente.

paymentInfo

object (PaymentInfo)

Opcional. As informações de pagamento do cliente. Não faz nada se "paymentFlowEnabled" for "false".

totalAmountDue

object (Money)

Opcional. O valor total devido do pedido.

orderPriceInfo

object (OrderPriceInfo)

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

PaymentInfo

Informações de pagamento do usuário.

Representação JSON
{
  "creditCardLastFourDigits": string,
  "creditCardCvv": string,
  "paymentMethod": enum (PaymentMethod)
}
Campos
creditCardLastFourDigits

string

Opcional. Os últimos quatro dígitos do cartão de crédito. Isso é usado para verificar o número do cartão de crédito na etapa de pagamento.

creditCardCvv

string

Opcional. CVV do cartão de crédito.

paymentMethod

enum (PaymentMethod)

Opcional. O tipo de forma de pagamento usada.

PaymentMethod

O tipo de forma de pagamento.

Tipos enumerados
PAYMENT_METHOD_UNSPECIFIED Forma de pagamento não especificada.
PAYMENT_METHOD_CREDIT_CARD Cartão de crédito.
PAYMENT_METHOD_CASH Dinheiro.

OrderPricesResponse

O resultado da obtenção dos preços do pedido.

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 solicitação do status do pedido.

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

boolean

Obrigatório. Indica 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 propriedades de pedidos 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,
  "featureGate": {
    object (FeatureGate)
  },
  "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 em que 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. Usado para determinar o cardápio a ser usado no pedido.

featureGate

object (FeatureGate)

Opcional. Os feature gates da sessão. Usado para ativar ou desativar recursos da sessã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 escuta será ativado para a sessão. Se ativado, o cliente precisa fornecer customerAudio e crewAudio no AudioInput, e o CES fará EAC e 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".

FeatureGate

Os feature gates da sessão. Usado para ativar ou desativar recursos da sessão.

Representação JSON
{
  "menuResponseEnabled": boolean,
  "updatedOrderStateEnabled": boolean,
  "enableOrderStatusRetrieval": boolean
}
Campos
menuResponseEnabled

boolean

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

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álises 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 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 é compatível com áudio e texto. Esse é o padrão.
TEXT A sessão é apenas 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 esta solicitação inicializa a sessão no modo unário. Quando definido, as variáveis de sessão iniciais (por exemplo, metadados e menus da loja) são injetadas no CES.
SUBSEQUENT Indica explicitamente uma rodada de conversa subsequente ou uma atualização no meio da sessão. Quando definido, as variáveis de sessão iniciais são omitidas para evitar a explosão de tokens de entrada.

BidiProcessOrderResponse

A mensagem de nível superior retornada do 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)
  }
  // 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 do 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. 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 de 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 conclusão do turno.

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 rodada atual e, em seguida, enviar uma mensagem final turnCompleted. O agente não vai iniciar novas interações. Por exemplo, uma sessão de duas interações 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 pendentes de resposta do agente e de estado do pedido
  • turnCompleted

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 do 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 uma ação do cliente.

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 começar o pedido de novo.

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

boolean

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

ClientExecutionRequest

Uma solicitação para o lado do cliente executar 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 esta 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, essa mensagem é enviada pelo agente quando o cliente indica que terminou de fazer 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 no pedido.

tipAmount

object (Money)

Opcional. O valor da gorjeta do pedido.

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 um consumo de fidelidade.

LoyaltyAmount

Representa o valor de fidelidade de um cliente.

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

string (int64 format)

Obrigatório. Os pontos de fidelidade.

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 receber os preços. 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 de texto do agente.

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

string

A resposta de 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 a serem 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 ser mostrado nas interfaces do usuário.

image

object (Image)

Imagem a ser mostrada 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 usada 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 a serem sugeridos ao cliente.

parentUid

string

O identificador exclusivo do item/modificador principal a que 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 a que este modificador será adicionado se a sugestão for aceita.

modifierGroupDisplayName

string

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

displayName

string

Nome legível por humanos para ser mostrado nas interfaces do usuário.

image

object (Image)

Imagem a ser mostrada 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 usada para integrações downstream.

alreadyIncluded

boolean

Indica se este 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 a serem 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 menu.

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 neste 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 nesse 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, independente da pontuação.

TurnCompleted

Esse tipo não tem campos.

Indica que o agente de IA de alimentos detectou o fim da conversa atual e não vai fornecer mais resultados para essa vez.

EndSession

Indica que o agente encerrou a sessão devido à conclusão bem-sucedida (por exemplo, o usuário diz "Tchau!" ) ou uma transferência para um agente.

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 da sessão.

reason

string

O motivo para encerrar a sessão.

posResponse

string

Opcional. A resposta do PDV ao fazer o check-in do pedido (opcional). É uma carga útil de string opaca que representa o status da transação do PDV.

agentResponse

string

Opcional. A mensagem final de resposta do agente a ser falada/mostrada ao usuário (opcional).

storeSchedule

object (Schedule)

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

EndType

Tipo de evento de encerramento da sessão.

Tipos enumerados
END_TYPE_UNSPECIFIED O tipo de fim não foi 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 com sucesso e nenhuma outra ação é necessária.
PAYMENT_FLOW_SUCCESS O fluxo de pagamento foi concluído, e você não precisa fazer mais nada.
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 finalizar a compra.
REQUESTED_ORDER_STATUS O cliente perguntou sobre o status do pedido.
STORE_CLOSED A loja está fechada.