Method: projects.locations.sessions.processOrder

사용자 입력을 처리하고 결과를 반환하는 단일 턴 로직을 실행합니다.

HTTP 요청

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

URL은 gRPC 트랜스코딩 문법을 사용합니다.

경로 매개변수

매개변수
config.session

string

필수 항목입니다. 주문의 세션입니다. 형식: projects/{project}/locations/{location}/sessions/{session}

요청 본문

요청 본문에는 다음과 같은 구조의 데이터가 포함됩니다.

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.
}
필드
config.store

string

필수 항목입니다. 주문이 접수되는 매장입니다. 형식: projects/{project}/locations/{location}/brands/{brand}/stores/{store}

config.laneId

string

선택사항입니다. 특정 드라이브 스루 차선의 ID입니다.

config.enableEchoCancellation

boolean

선택사항입니다. 세션에서 에코 제거를 사용 설정할지 여부입니다. 사용 설정된 경우 클라이언트는 AudioInput에 customerAudio와 crewAudio를 제공해야 합니다.

config.daypartId

string

선택사항입니다. 아침, 점심, 저녁 등을 포함한 음식 메뉴의 시간대입니다. 이는 주문에 사용할 메뉴를 결정하는 데 사용됩니다.

config.featureGate

object (FeatureGate)

선택사항입니다. 세션의 기능 게이트입니다. 세션의 기능을 사용 설정하거나 사용 중지하는 데 사용됩니다.

config.clientAppInfo

object (ClientAppInfo)

선택사항입니다. 클라이언트 애플리케이션 및 기기 환경에 관한 정보입니다.

config.mode

enum (SessionMode)

선택사항입니다. 세션의 모드입니다.

config.channelType

enum (ChannelType)

선택사항입니다. 상담사 커뮤니케이션에 사용되는 채널 유형입니다.

config.enableListenOnlyDualChannel

boolean

선택사항입니다. 세션에 대해 듣기 전용 이중 채널을 사용 설정할지 여부입니다. 사용 설정된 경우 클라이언트는 AudioInput에 customerAudio와 crewAudio를 제공해야 하며, CES는 미디어 처리 서버에서 EAC와 합계를 실행합니다.

config.testSessionStartTime

string (Timestamp format)

선택사항입니다. 테스트 또는 평가 목적으로 사용되는 세션의 시작 시간입니다.

생성된 출력은 항상 Z-정규화되고 소수점 이하 0, 3, 6 또는 9자리인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" 또는 "2014-10-02T15:01:23+05:30"입니다.

turnType

enum (TurnType)

선택사항입니다. 세션 수명 주기에서 요청의 위치를 명시적으로 나타냅니다. 클라이언트가 최초 세션 설정 변수가 삽입되는 시점을 결정적으로 제어할 수 있도록 허용합니다.

통합 필드 input. 클라이언트의 입력입니다. input은 다음 중 하나여야 합니다.
textInput

object (TextInput)

클라이언트의 텍스트 입력입니다.

audioInput

object (AudioInput)

클라이언트의 오디오 입력입니다.

eventInput

object (EventInput)

클라이언트의 이벤트 입력입니다.

clientExecutionResult

object (ClientExecutionResult)

클라이언트 실행 요청의 결과입니다.

blobInput

object (Blob)

일반 바이너리 데이터 입력입니다. http://google3/google/cloud/ces/v1main/session_service.proto?l=720을 미러링합니다.

응답 본문

FoodOrderingService.ProcessOrder의 응답 메시지입니다. 기능적으로 스트리밍 관련 필드를 제외한 BidiProcessOrderResponse의 필드를 포함합니다.

성공한 경우 응답 본문은 다음과 같은 구조의 데이터를 포함합니다.

JSON 표현
{
  "responses": [
    {
      object (BidiProcessOrderResponse)
    }
  ]
}
필드
responses[]

object (BidiProcessOrderResponse)

출력 전용입니다. 요청에 대한 에이전트 응답 목록입니다. 순서대로 반환됩니다.

승인 범위

다음 OAuth 범위가 필요합니다.

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

자세한 내용은 Authentication Overview를 참조하세요.

TextInput

클라이언트의 텍스트 입력입니다. 오디오 대신 클라이언트가 텍스트 입력을 에이전트에게 보낼 수도 있습니다. 클라이언트는 텍스트 또는 오디오 입력 중 하나만 사용해야 합니다.

JSON 표현
{
  "text": string
}
필드
text

string

필수 항목입니다. 클라이언트의 텍스트 발화입니다.

AudioInput

클라이언트의 오디오 입력입니다. 입력 오디오에는 고객, 승무원 등을 위한 여러 채널이 있을 수 있습니다. 이러한 채널은 모두 동기화되어야 하며 구성에 지정된 형식이어야 합니다. 오디오 헤더는 포함하면 안 됩니다. 기본적으로 오디오는 16비트 선형 PCM 오디오 인코딩과 16000Hz 샘플링 레이트를 사용해야 합니다. 모든 채널의 총 바이트 수는 25,600바이트 미만이어야 합니다.

JSON 표현
{
  "customerAudio": string,
  "crewAudio": string
}
필드
customerAudio

string (bytes format)

필수 항목입니다. 고객 오디오 데이터입니다.

base64 인코딩 문자열입니다.

crewAudio

string (bytes format)

선택사항입니다. 크루 오디오 데이터입니다. 이는 고객과 동일한 레인에 있는 상담사의 선택적 오디오 채널이며 에코 제거의 참조 오디오로 제공됩니다.

base64 인코딩 문자열입니다.

EventInput

클라이언트의 이벤트 입력입니다. 이는 에이전트 내에서 특정 이벤트를 트리거하는 데 사용됩니다.

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.
}
필드
통합 필드 event. 다음 ID: 10 트리거할 이벤트입니다. event은 다음 중 하나여야 합니다.
driveOffEvent

object (DriveOffEvent)

운전 종료 이벤트입니다.

crewInterjectionEvent

object (CrewInterjectionEvent)

크루 삽입 이벤트입니다.

updateOrderStateEvent

object (OrderStateUpdateEvent)

주문 상태에 대한 클라이언트 측 업데이트입니다.

clientEscalationEvent

object (ClientEscalationEvent)

클라이언트 측 에스컬레이션 이벤트입니다.

callerHangupEvent

object (CallerHangupEvent)

선택사항입니다. 호출자 전화 끊기 이벤트입니다.

posErrorInput

object (PosErrorEvent)

선택사항입니다. POS 오류 이벤트입니다.

DriveOffEvent

운전 종료 이벤트입니다. 고객이 운전하여 떠났음을 나타냅니다. 이 이벤트 후 세션이 종료됩니다.

JSON 표현
{
  "reason": string
}
필드
reason

string

선택사항입니다. 드라이브 오프 이유입니다(예: '주문 완료', '예상치 못한 드라이브 오프').

CrewInterjectionEvent

크루 삽입 이벤트입니다. 이는 크루 구성원이 세션에 개입했음을 나타냅니다. 이 이벤트 후 세션이 종료됩니다.

JSON 표현
{
  "mode": string
}
필드
mode

string

선택사항입니다. 크루 구성원이 끼어든 모드입니다(예: '헤드셋', 'pos').

OrderStateUpdateEvent

주문 상태 업데이트 요청입니다. 이 이벤트는 기존 터치 인터페이스를 통해 항목이 추가되거나 삭제되는 등 클라이언트 측에서 주문이 업데이트될 때 전송되어야 합니다.

JSON 표현
{
  "order": {
    object (Order)
  }
}
필드
order

object (Order)

필수 항목입니다. 이 세션과 연결된 주문의 업데이트된 상태입니다.

ClientEscalationEvent

클라이언트가 세션을 상담사에게 에스컬레이션하고 있음을 나타냅니다.

JSON 표현
{
  "reason": string
}
필드
reason

string

선택사항입니다. 클라이언트 에스컬레이션 이유입니다(예: 'payment-declined', 'pos-error', 'integration-error' 등).

CallerHangupEvent

이 유형에는 필드가 없습니다.

고객이 통화를 조기에 종료했음을 나타냅니다 (예: AI에 대한 거부감).

PosErrorEvent

판매 시점 (POS) 관련 오류입니다.

JSON 표현
{
  "errorMessages": [
    string
  ],
  "affectedItemUids": [
    string
  ],
  "affectedExternalIds": [
    string
  ],
  "metadata": {
    string: string,
    ...
  }
}
필드
errorMessages[]

string

선택사항입니다. 오류에 대한 사람이 읽을 수 있는 설명 목록입니다. 여러 문제가 동시에 발생하거나 (예: 여러 상품의 재고가 없음) 하나의 복잡한 실패를 더 자세히 분류하기 위해 여러 오류 메시지가 제공될 수 있습니다. 이러한 메시지는 상담사가 고객에게 알리거나 로깅 목적으로 사용할 수 있습니다.

affectedItemUids[]

string

선택사항입니다. 오류를 일으킨 음식 주문 AI 에이전트가 생성한 고유 상품 UID입니다. UpdatedOrderState.OrderItem.uid에 해당합니다.

affectedExternalIds[]

string

선택사항입니다. 오류를 일으킨 외부 ID 목록 (메뉴에서)입니다. POS의 실제 대표자와 같아야 합니다. 이는 일반적으로 menu.proto의 통합 속성 (예: ItemIntegrationAttributes 또는 ModifierIntegrationAttributes) 아래에 있습니다.

metadata

map (key: string, value: string)

선택사항입니다. 디버깅 또는 브랜드별 신호 전송을 위한 자유 형식 메타데이터입니다. 브랜드별 오류 코드 또는 카테고리를 전달하는 데 사용할 수 있습니다 (예: {"BRAND_ERROR_CODE": "OUT_OF_STOCK"}).

"key": value 쌍 목록을 포함하는 객체입니다. 예: { "name": "wrench", "mass": "1.3kg", "count": "3" }

ClientExecutionResult

클라이언트 실행 요청의 결과입니다.

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.
}
필드
executionId

string

필수 항목입니다. 이 결과가 속한 실행 요청의 ID입니다.

통합 필드 response. 실행의 구체적인 결과입니다. response은 다음 중 하나여야 합니다.
finalizeOrderResponse

object (FinalizeOrderResponse)

주문 완료 결과입니다.

orderPricesResponse

object (OrderPricesResponse)

주문 가격을 가져온 결과입니다.

validateDeliveryAddressResponse

object (ValidateDeliveryAddressResponse)

배송지 주소의 유효성 검사 결과입니다.

orderStatusResponse

object (OrderStatusResponse)

주문 상태를 가져온 결과입니다.

FinalizeOrderResponse

주문 완료 결과입니다.

JSON 표현
{
  "paymentFlowEnabled": boolean,
  "paymentInfo": {
    object (PaymentInfo)
  },
  "totalAmountDue": {
    object (Money)
  },
  "orderPriceInfo": {
    object (OrderPriceInfo)
  }
}
필드
paymentFlowEnabled

boolean

선택사항입니다. 상담사에서 결제 처리 흐름을 사용 설정할지 여부입니다.

paymentInfo

object (PaymentInfo)

선택사항입니다. 고객의 결제 정보입니다. paymentFlowEnabled가 false인 경우 작업이 없습니다.

totalAmountDue

object (Money)

선택사항입니다. 주문에 대해 결제해야 하는 총 금액입니다.

orderPriceInfo

object (OrderPriceInfo)

선택사항입니다. 주문의 자세한 가격 정보입니다.

PaymentInfo

사용자의 결제 정보입니다.

JSON 표현
{
  "creditCardLastFourDigits": string,
  "creditCardCvv": string,
  "paymentMethod": enum (PaymentMethod)
}
필드
creditCardLastFourDigits

string

선택사항입니다. 신용카드의 마지막 네 자리 숫자입니다. 결제 단계에서 신용카드 번호를 확인하는 데 사용됩니다.

creditCardCvv

string

선택사항입니다. 신용카드의 CVV입니다.

paymentMethod

enum (PaymentMethod)

선택사항입니다. 사용된 결제 수단 유형입니다.

PaymentMethod

결제 수단 유형입니다.

열거형
PAYMENT_METHOD_UNSPECIFIED 지정되지 않은 결제 수단입니다.
PAYMENT_METHOD_CREDIT_CARD 신용카드
PAYMENT_METHOD_CASH 현금

OrderPricesResponse

주문 가격을 가져온 결과입니다.

JSON 표현
{
  "success": boolean,
  "orderPriceInfo": {
    object (OrderPriceInfo)
  }
}
필드
success

boolean

필수 항목입니다. 주문 가격을 가져왔는지 여부입니다.

orderPriceInfo

object (OrderPriceInfo)

선택사항입니다. 모든 할인, 수수료, 세금 등을 적용한 후의 총 주문 가격

ValidateDeliveryAddressResponse

배송지 주소 유효성 검사의 결과입니다.

JSON 표현
{
  "success": boolean,
  "validationStatus": enum (ValidationStatus)
}
필드
success

boolean

필수 항목입니다. 오류 없이 검증이 완료되었는지 여부입니다.

validationStatus

enum (ValidationStatus)

필수 항목입니다. 배송지 주소의 유효성 검사 상태입니다.

OrderStatusResponse

주문 상태를 가져온 결과입니다.

JSON 표현
{
  "success": boolean
}
필드
success

boolean

필수 항목입니다. 주문 상태를 가져왔는지 여부입니다.

blob

대화의 blob 입력 또는 출력을 나타냅니다.

JSON 표현
{
  "mimeType": string,
  "data": string
}
필드
mimeType

string

필수 항목입니다. 소스 데이터의 IANA 표준 MIME 유형입니다.

data

string (bytes format)

필수 항목입니다. blob의 원시 바이트입니다.

base64 인코딩 문자열입니다.

구성

세션 및 음식 주문 속성의 구성입니다. 각 연결이 시작될 때 클라이언트는 먼저 구성 메시지를 전송해야 합니다. 세션을 시작하기 위한 다른 요청보다 먼저 이 요청이 발생해야 합니다. 클라이언트가 연결 해제되면 다시 연결할 때 동일한 구성 메시지를 반복해야 합니다.

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
}
필드
session

string

필수 항목입니다. 주문의 세션입니다. 형식: projects/{project}/locations/{location}/sessions/{session}

store

string

필수 항목입니다. 주문이 접수되는 매장입니다. 형식: projects/{project}/locations/{location}/brands/{brand}/stores/{store}

laneId

string

선택사항입니다. 특정 드라이브 스루 차선의 ID입니다.

enableEchoCancellation

boolean

선택사항입니다. 세션에서 에코 제거를 사용 설정할지 여부입니다. 사용 설정된 경우 클라이언트는 AudioInput에 customerAudio와 crewAudio를 제공해야 합니다.

daypartId

string

선택사항입니다. 아침, 점심, 저녁 등을 포함한 음식 메뉴의 시간대입니다. 이는 주문에 사용할 메뉴를 결정하는 데 사용됩니다.

featureGate

object (FeatureGate)

선택사항입니다. 세션의 기능 게이트입니다. 세션의 기능을 사용 설정하거나 사용 중지하는 데 사용됩니다.

clientAppInfo

object (ClientAppInfo)

선택사항입니다. 클라이언트 애플리케이션 및 기기 환경에 관한 정보입니다.

mode

enum (SessionMode)

선택사항입니다. 세션의 모드입니다.

channelType

enum (ChannelType)

선택사항입니다. 상담사 커뮤니케이션에 사용되는 채널 유형입니다.

enableListenOnlyDualChannel

boolean

선택사항입니다. 세션에 대해 듣기 전용 이중 채널을 사용 설정할지 여부입니다. 사용 설정된 경우 클라이언트는 AudioInput에 customerAudio와 crewAudio를 제공해야 하며, CES는 미디어 처리 서버에서 EAC와 합계를 실행합니다.

testSessionStartTime

string (Timestamp format)

선택사항입니다. 테스트 또는 평가 목적으로 사용되는 세션의 시작 시간입니다.

생성된 출력은 항상 Z-정규화되고 소수점 이하 0, 3, 6 또는 9자리인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" 또는 "2014-10-02T15:01:23+05:30"입니다.

FeatureGate

세션의 기능 게이트입니다. 세션의 기능을 사용 설정하거나 사용 중지하는 데 사용됩니다.

JSON 표현
{
  "menuResponseEnabled": boolean,
  "updatedOrderStateEnabled": boolean,
  "enableOrderStatusRetrieval": boolean
}
필드
menuResponseEnabled

boolean

선택사항입니다. 설정된 경우 BidiProcessOrderResponse에서 메뉴 데이터를 클라이언트에 반환합니다.

updatedOrderStateEnabled

boolean

선택사항입니다. 설정된 경우 legacyOrderStateResponse 대신 updatedOrderState가 반환됩니다.

enableOrderStatusRetrieval

boolean

선택사항입니다. 설정된 경우 에이전트가 주문 상태 검색을 지원합니다.

ClientAppInfo

클라이언트 애플리케이션 및 기기 환경에 관한 정보입니다. 이는 주로 로깅, 분석, 디버깅에 사용됩니다.

JSON 표현
{
  "deviceModel": string,
  "osVersion": string,
  "sdkVersion": string
}
필드
deviceModel

string

선택사항입니다. 클라이언트의 기기 모델입니다 (예: 'iPhone 13', 'Pixel 7', 'Kiosk v2').

osVersion

string

선택사항입니다. 클라이언트의 운영체제 버전입니다 (예: 'iOS 16.1', 'Android 13').

sdkVersion

string

선택사항입니다. 클라이언트 SDK 또는 애플리케이션 소프트웨어의 버전입니다.

SessionMode

세션의 모드입니다.

열거형
SESSION_MODE_UNSPECIFIED 세션 모드가 지정되지 않았습니다.
HYBRID 세션은 오디오와 텍스트를 모두 지원합니다. 전역 window는 기본 설정이며,
TEXT 세션은 텍스트 전용입니다.

TurnType

세션 내 단항 요청의 수명 주기 위치를 나타냅니다.

열거형
TURN_TYPE_UNSPECIFIED 지정되지 않은 회전 유형입니다.
INITIALIZE 이 요청이 단항 모드에서 세션을 초기화함을 명시적으로 나타냅니다. 설정되면 최초 세션 변수 (예: 스토어 메타데이터 및 메뉴)가 CES에 삽입됩니다.
SUBSEQUENT 후속 대화 차례 또는 세션 중 업데이트를 명시적으로 나타냅니다. 설정된 경우 입력 토큰 폭발을 방지하기 위해 최초 세션 변수가 생략됩니다.

BidiProcessOrderResponse

FoodOrderingService.BidiProcessOrder 메서드에서 반환된 최상위 메시지입니다.

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.
}
필드
통합 필드 response. 에이전트의 대답입니다. response은 다음 중 하나여야 합니다.
agentAudio

object (AgentAudio)

에이전트의 오디오 응답입니다.

speechRecognition

object (SpeechRecognition)

에이전트의 음성 인식 결과입니다.

legacyOrderStateResponse

object (Struct format)

세션의 기존 주문 상태 응답입니다.

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)

세션이 종료되고 있으며 이번이 마지막 턴임을 나타냅니다.

상담사는 현재 차례의 대기 중인 응답을 모두 전송한 후 최종 turnCompleted 메시지를 전송합니다. 에이전트가 새로운 턴을 시작하지 않습니다. 예를 들어 2턴 세션은 다음과 같습니다.

  • 1턴
  • 고객 입력 1
  • ... 에이전트 응답 및 주문 상태 메시지
  • turnCompleted
  • 2턴
  • 고객 입력 2
  • ... 에이전트 응답 및 주문 상태 메시지
  • endSession
  • ... 에이전트 응답 및 주문 상태 메시지 대기
  • turnCompleted

AgentAudio

에이전트의 오디오 응답입니다.

JSON 표현
{
  "agentAudio": string
}
필드
agentAudio

string (bytes format)

에이전트의 오디오 데이터입니다.

base64 인코딩 문자열입니다.

SpeechRecognition

에이전트의 음성 인식 결과입니다.

JSON 표현
{
  "transcript": string,
  "languageCode": string,
  "isFinal": boolean
}
필드
transcript

string

감지된 언어로 된 오디오 입력의 스크립트 텍스트입니다.

languageCode

string

스크립트의 언어 코드입니다. 언어 코드는 BCP-47 형식(예: 'en-US')이어야 합니다.

isFinal

boolean

이것이 턴의 최종 스크립트인지 여부를 나타냅니다.

InterruptionSignal

이 유형에는 필드가 없습니다.

에이전트의 오디오 응답이 중단되었음을 나타냅니다 (예: 최종 사용자의 끼어들기). 클라이언트는 즉시 재생을 중지해야 합니다.

AgentEvent

클라이언트가 조치를 취해야 하는 에이전트의 특별 이벤트입니다.

JSON 표현
{

  // Union field event can be only one of the following:
  "restartOrder": {
    object (RestartOrder)
  }
  // End of list of possible types for union field event.
}
필드
통합 필드 event. 상담사의 이벤트입니다. event은 다음 중 하나여야 합니다.
restartOrder

object (RestartOrder)

고객이 주문 재시작을 요청합니다.

RestartOrder

고객이 주문을 다시 시작하도록 요청합니다.

JSON 표현
{
  "confirmationStep": boolean
}
필드
confirmationStep

boolean

상담사가 고객에게 다시 시작 요청을 확인해 달라고 요청합니다.

ClientExecutionRequest

클라이언트 측에서 명령어를 실행하도록 요청합니다.

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.
}
필드
executionId

string

필수 항목입니다. 이 실행 요청의 고유 ID입니다.

통합 필드 request. 실행할 구체적인 요청입니다. request은 다음 중 하나여야 합니다.
finalizeOrderRequest

object (FinalizeOrderRequest)

주문을 확정하기 위한 요청입니다.

submitOrderRequest

object (SubmitOrderRequest)

주문을 제출하기 위한 요청입니다.

orderPricesRequest

object (OrderPricesRequest)

주문 가격을 가져오기 위한 요청입니다.

validateDeliveryAddressRequest

object (ValidateDeliveryAddressRequest)

배송지 주소의 유효성을 검사하는 요청입니다.

orderStatusRequest

object (OrderStatusRequest)

주문 상태를 가져오는 요청입니다.

FinalizeOrderRequest

이 유형에는 필드가 없습니다.

주문을 확정하기 위한 요청입니다. 이는 일반적으로 고객이 주문을 완료하고 결제하고 싶다고 표시할 때 상담사가 전송합니다.

SubmitOrderRequest

고객으로부터 수집된 모든 필수 결제 정보와 함께 주문을 제출하라는 요청입니다.

JSON 표현
{
  "paymentInfo": {
    object (PaymentInfo)
  },
  "loyaltyInfo": {
    object (LoyaltyInfo)
  },
  "tipAmount": {
    object (Money)
  }
}
필드
paymentInfo

object (PaymentInfo)

필수 항목입니다. 주문의 결제 정보입니다.

loyaltyInfo

object (LoyaltyInfo)

선택사항입니다. 주문에 사용된 포인트입니다.

tipAmount

object (Money)

선택사항입니다. 주문의 팁 금액입니다.

LoyaltyInfo

고객의 포인트 멤버십 정보를 나타냅니다.

JSON 표현
{
  "loyaltyAmount": {
    object (LoyaltyAmount)
  }
}
필드
loyaltyAmount

object (LoyaltyAmount)

필수 항목입니다. 포인트 금액입니다. 충성도 잔액 또는 충성도 사용액일 수 있습니다.

LoyaltyAmount

고객의 포인트 금액을 나타냅니다.

JSON 표현
{
  "units": string
}
필드
units

string (int64 format)

필수 항목입니다. 적립 포인트입니다.

OrderPricesRequest

주문 가격을 가져오기 위한 요청입니다.

JSON 표현
{
  "order": {
    object (Order)
  }
}
필드
order

object (Order)

선택사항입니다. 가격을 가져올 주문입니다. 지정되지 않은 경우 요청이 세션의 기존 주문/장바구니에 대한 것으로 가정할 수 있습니다.

ValidateDeliveryAddressRequest

세션 중에 수집된 배송 주소를 확인하기 위한 요청입니다.

JSON 표현
{
  "deliveryAddress": {
    object (DeliveryAddress)
  }
}
필드
deliveryAddress

object (DeliveryAddress)

필수 항목입니다. 유효성을 검사할 배송지 주소입니다.

OrderStatusRequest

이 유형에는 필드가 없습니다.

주문 상태를 가져오는 요청입니다.

UpdatedOrderState

주문 상태 업데이트를 나타내는 상담사가 반환한 이벤트입니다.

JSON 표현
{
  "order": {
    object (Order)
  },
  "changed": boolean
}
필드
order

object (Order)

이 세션과 연결된 주문의 업데이트된 상태입니다.

changed

boolean

출력 전용입니다. 주문 상태에 업데이트가 있는지 여부입니다.

AgentText

에이전트의 텍스트 응답입니다.

JSON 표현
{
  "text": string
}
필드
text

string

에이전트의 텍스트 응답입니다.

SuggestedOptions

고객에게 제안할 옵션입니다.

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.
}
필드
suggestedModifierGroups

object (SuggestedModifierGroups)

추천 수정자 그룹입니다.

통합 필드 suggested_options. 추천 옵션입니다. suggested_options은 다음 중 하나여야 합니다.
suggestedItems

object (SuggestedItems)

고객에게 추천할 상품 목록입니다.

suggestedModifiers

object (SuggestedModifiers)

고객에게 제안할 수정자 목록입니다.

SuggestedItems

고객에게 추천할 상품 목록입니다.

JSON 표현
{
  "items": [
    {
      object (SuggestedItem)
    }
  ]
}
필드
items[]

object (SuggestedItem)

고객에게 추천할 상품입니다.

SuggestedItem

고객에게 제안할 상품입니다.

JSON 표현
{
  "itemId": string,
  "displayName": string,
  "image": {
    object (Image)
  },
  "basePrice": {
    object (Money)
  },
  "integrationAttributes": {
    object (ItemIntegrationAttributes)
  }
}
필드
itemId

string

메뉴에 있는 상품의 ID입니다.

displayName

string

사용자 인터페이스에 표시될 이 템의 사람이 읽을 수 있는 이름입니다.

image

object (Image)

UI에 이 항목에 대해 표시할 이미지입니다.

basePrice

object (Money)

상품의 기본 가격입니다. 이는 선택한 수정자에 따라 달라질 수 있습니다. 상품의 단위당 가격입니다.

integrationAttributes

object (ItemIntegrationAttributes)

다운스트림 통합에 사용되는 이 항목과 관련된 메타데이터입니다.

SuggestedModifiers

고객에게 제안할 수정자 목록입니다.

JSON 표현
{
  "modifiers": [
    {
      object (SuggestedModifier)
    }
  ],
  "parentUid": string
}
필드
modifiers[]

object (SuggestedModifier)

고객에게 제안할 수정자입니다.

parentUid

string

수정자를 적용할 상위 항목/수정자의 고유 식별자입니다.

SuggestedModifier

고객에게 제안할 수정자입니다.

JSON 표현
{
  "modifierId": string,
  "modifierGroupId": string,
  "modifierGroupDisplayName": string,
  "displayName": string,
  "image": {
    object (Image)
  },
  "priceAdjustment": {
    object (Money)
  },
  "integrationAttributes": {
    object (ModifierIntegrationAttributes)
  },
  "alreadyIncluded": boolean
}
필드
modifierId

string

메뉴의 수정자 ID입니다.

modifierGroupId

string

제안이 수락될 경우 이 수정자가 추가되어야 하는 수정자 그룹의 ID입니다.

modifierGroupDisplayName

string

이 수정자가 속한 수정자 그룹의 표시 이름입니다.

displayName

string

사용자 인터페이스에 표시될 이 템의 사람이 읽을 수 있는 이름입니다.

image

object (Image)

UI에 이 항목에 대해 표시할 이미지입니다.

priceAdjustment

object (Money)

이 수정자와 연결된 가격 조정입니다(있는 경우). 수정자의 단위당 가격입니다.

integrationAttributes

object (ModifierIntegrationAttributes)

다운스트림 통합에 사용되는 이 항목과 관련된 메타데이터입니다.

alreadyIncluded

boolean

이 수정자가 주문에 이미 포함되어 있는지 여부입니다.

SuggestedModifierGroups

고객에게 제안할 한정자 그룹 목록입니다.

JSON 표현
{
  "modifierGroups": [
    {
      object (SuggestedModGroup)
    }
  ]
}
필드
modifierGroups[]

object (SuggestedModGroup)

고객에게 제안할 수정자 그룹입니다.

SuggestedModGroup

고객에게 제안할 수정자 그룹입니다.

JSON 표현
{
  "modifierGroupId": string,
  "displayName": string,
  "modifiers": [
    {
      object (SuggestedModifier)
    }
  ],
  "maxSelectionCount": integer,
  "minSelectionCount": integer,
  "maxSelectionCountPerModifier": integer
}
필드
modifierGroupId

string

메뉴의 수정자 그룹 ID입니다.

displayName

string

수정자 그룹의 표시 이름입니다.

modifiers[]

object (SuggestedModifier)

이 그룹의 수정자입니다.

maxSelectionCount

integer

이 그룹에서 선택할 수 있는 최대 수정자 수입니다.

minSelectionCount

integer

이 그룹에서 선택해야 하는 최소 수정자 수입니다.

maxSelectionCountPerModifier

integer

이 그룹 내에서 각 수정자를 적용할 수 있는 횟수를 제한합니다.

SentimentMeasurement

이 턴에 대해 측정된 실시간 감정 점수입니다.

JSON 표현
{
  "score": number,
  "magnitude": number
}
필드
score

number

선택사항입니다. 감정 점수로, -1.0(부정적인 감정)부터 1.0(긍정적인 감정)까지입니다.

magnitude

number

선택사항입니다. 점수와 관계없는 감정의 크기입니다.

TurnCompleted

이 유형에는 필드가 없습니다.

Food AI 에이전트가 현재 대화 턴의 끝을 감지했으며 이 턴에 더 이상 출력을 제공하지 않음을 나타냅니다.

EndSession

성공적으로 완료되어 (예: 사용자가 '안녕'이라고 말함) 상담사가 세션을 종료했음을 나타냅니다. ) 또는 상담사 에스컬레이션입니다.

JSON 표현
{
  "type": enum (EndType),
  "reason": string,
  "posResponse": string,
  "agentResponse": string,
  "storeSchedule": {
    object (Schedule)
  }
}
필드
type

enum (EndType)

세션 종료 이벤트의 유형입니다.

reason

string

세션을 종료한 이유입니다.

posResponse

string

선택사항입니다. 주문 체크인에서 반환된 POS 응답입니다 (선택사항). POS 거래 상태를 나타내는 불투명 문자열 페이로드입니다.

agentResponse

string

선택사항입니다. 사용자에게 말하거나 표시할 최종 에이전트 응답 메시지입니다 (선택사항).

storeSchedule

object (Schedule)

선택사항입니다. 매장 일정입니다. 종료 유형이 STORE_CLOSED인 경우에만 설정됩니다.

EndType

세션 종료 이벤트 유형입니다.

열거형
END_TYPE_UNSPECIFIED 종료 유형이 지정되지 않았습니다.
DRIVE_OFF 고객이 운전해서 떠났습니다.
AGENT_ESCALATION 상담사가 세션을 상담사에게 에스컬레이션했습니다.
CREW_INTERJECTION 크루 구성원이 세션에 개입했습니다.
ORDER_COMPLETED 주문이 완료되었으며 추가 조치가 필요하지 않습니다.
PAYMENT_FLOW_SUCCESS 결제 흐름이 성공적으로 완료되었으며 추가 조치가 필요하지 않습니다.
PAYMENT_FLOW_FAILURE 결제 흐름이 실패했습니다.
CLIENT_ESCALATION 클라이언트가 세션을 상담사에게 에스컬레이션했습니다.
CALLER_HANGUP 고객이 전화를 너무 일찍 끊었습니다.
REQUESTED_CHECKOUT 고객이 결제를 요청했습니다.
REQUESTED_ORDER_STATUS 고객이 주문 상태에 관해 문의했습니다.
STORE_CLOSED 스토어가 폐쇄되었습니다.