- HTTP 요청
- 경로 파라미터
- 요청 본문
- 응답 본문
- 승인 범위
- TextInput
- AudioInput
- EventInput
- DriveOffEvent
- CrewInterjectionEvent
- OrderStateUpdateEvent
- ClientEscalationEvent
- CallerHangupEvent
- PosErrorEvent
- ClientExecutionResult
- FinalizeOrderResponse
- PaymentInfo
- PaymentMethod
- OrderPricesResponse
- ValidateDeliveryAddressResponse
- OrderStatusResponse
- Blob
- 구성
- FeatureGate
- ClientAppInfo
- SessionMode
- TurnType
- BidiProcessOrderResponse
- AgentAudio
- SpeechRecognition
- InterruptionSignal
- AgentEvent
- RestartOrder
- ClientExecutionRequest
- FinalizeOrderRequest
- SubmitOrderRequest
- LoyaltyInfo
- LoyaltyAmount
- OrderPricesRequest
- ValidateDeliveryAddressRequest
- OrderStatusRequest
- UpdatedOrderState
- AgentText
- SuggestedOptions
- SuggestedItems
- SuggestedItem
- SuggestedModifiers
- SuggestedModifier
- SuggestedModifierGroups
- SuggestedModGroup
- SentimentMeasurement
- TurnCompleted
- EndSession
- EndType
사용자 입력을 처리하고 결과를 반환하는 단일 턴 로직을 실행합니다.
HTTP 요청
POST https://foodorderingaiagent.googleapis.com/v1/{config.session=projects/*/locations/*/sessions/*}:processOrder
URL은 gRPC 트랜스코딩 문법을 사용합니다.
경로 매개변수
| 매개변수 | |
|---|---|
config.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 ( |
| 필드 | |
|---|---|
config.store |
필수 항목입니다. 주문이 접수되는 매장입니다. 형식: |
config.laneId |
선택사항입니다. 특정 드라이브 스루 차선의 ID입니다. |
config.enableEchoCancellation |
선택사항입니다. 세션에서 에코 제거를 사용 설정할지 여부입니다. 사용 설정된 경우 클라이언트는 AudioInput에 customerAudio와 crewAudio를 제공해야 합니다. |
config.daypartId |
선택사항입니다. 아침, 점심, 저녁 등을 포함한 음식 메뉴의 시간대입니다. 이는 주문에 사용할 메뉴를 결정하는 데 사용됩니다. |
config.featureGate |
선택사항입니다. 세션의 기능 게이트입니다. 세션의 기능을 사용 설정하거나 사용 중지하는 데 사용됩니다. |
config.clientAppInfo |
선택사항입니다. 클라이언트 애플리케이션 및 기기 환경에 관한 정보입니다. |
config.mode |
선택사항입니다. 세션의 모드입니다. |
config.channelType |
선택사항입니다. 상담사 커뮤니케이션에 사용되는 채널 유형입니다. |
config.enableListenOnlyDualChannel |
선택사항입니다. 세션에 대해 듣기 전용 이중 채널을 사용 설정할지 여부입니다. 사용 설정된 경우 클라이언트는 AudioInput에 customerAudio와 crewAudio를 제공해야 하며, CES는 미디어 처리 서버에서 EAC와 합계를 실행합니다. |
config.testSessionStartTime |
선택사항입니다. 테스트 또는 평가 목적으로 사용되는 세션의 시작 시간입니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 0, 3, 6 또는 9자리인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 |
turnType |
선택사항입니다. 세션 수명 주기에서 요청의 위치를 명시적으로 나타냅니다. 클라이언트가 최초 세션 설정 변수가 삽입되는 시점을 결정적으로 제어할 수 있도록 허용합니다. |
통합 필드 input. 클라이언트의 입력입니다. input은 다음 중 하나여야 합니다. |
|
textInput |
클라이언트의 텍스트 입력입니다. |
audioInput |
클라이언트의 오디오 입력입니다. |
eventInput |
클라이언트의 이벤트 입력입니다. |
clientExecutionResult |
클라이언트 실행 요청의 결과입니다. |
blobInput |
일반 바이너리 데이터 입력입니다. http://google3/google/cloud/ces/v1main/session_service.proto?l=720을 미러링합니다. |
응답 본문
FoodOrderingService.ProcessOrder의 응답 메시지입니다. 기능적으로 스트리밍 관련 필드를 제외한 BidiProcessOrderResponse의 필드를 포함합니다.
성공한 경우 응답 본문은 다음과 같은 구조의 데이터를 포함합니다.
| JSON 표현 |
|---|
{
"responses": [
{
object ( |
| 필드 | |
|---|---|
responses[] |
출력 전용입니다. 요청에 대한 에이전트 응답 목록입니다. 순서대로 반환됩니다. |
승인 범위
다음 OAuth 범위가 필요합니다.
https://www.googleapis.com/auth/cloud-platform
자세한 내용은 Authentication Overview를 참조하세요.
TextInput
클라이언트의 텍스트 입력입니다. 오디오 대신 클라이언트가 텍스트 입력을 에이전트에게 보낼 수도 있습니다. 클라이언트는 텍스트 또는 오디오 입력 중 하나만 사용해야 합니다.
| JSON 표현 |
|---|
{ "text": string } |
| 필드 | |
|---|---|
text |
필수 항목입니다. 클라이언트의 텍스트 발화입니다. |
AudioInput
클라이언트의 오디오 입력입니다. 입력 오디오에는 고객, 승무원 등을 위한 여러 채널이 있을 수 있습니다. 이러한 채널은 모두 동기화되어야 하며 구성에 지정된 형식이어야 합니다. 오디오 헤더는 포함하면 안 됩니다. 기본적으로 오디오는 16비트 선형 PCM 오디오 인코딩과 16000Hz 샘플링 레이트를 사용해야 합니다. 모든 채널의 총 바이트 수는 25,600바이트 미만이어야 합니다.
| JSON 표현 |
|---|
{ "customerAudio": string, "crewAudio": string } |
| 필드 | |
|---|---|
customerAudio |
필수 항목입니다. 고객 오디오 데이터입니다. base64 인코딩 문자열입니다. |
crewAudio |
선택사항입니다. 크루 오디오 데이터입니다. 이는 고객과 동일한 레인에 있는 상담사의 선택적 오디오 채널이며 에코 제거의 참조 오디오로 제공됩니다. base64 인코딩 문자열입니다. |
EventInput
클라이언트의 이벤트 입력입니다. 이는 에이전트 내에서 특정 이벤트를 트리거하는 데 사용됩니다.
| JSON 표현 |
|---|
{ // Union field |
| 필드 | |
|---|---|
통합 필드 event. 다음 ID: 10 트리거할 이벤트입니다. event은 다음 중 하나여야 합니다. |
|
driveOffEvent |
운전 종료 이벤트입니다. |
crewInterjectionEvent |
크루 삽입 이벤트입니다. |
updateOrderStateEvent |
주문 상태에 대한 클라이언트 측 업데이트입니다. |
clientEscalationEvent |
클라이언트 측 에스컬레이션 이벤트입니다. |
callerHangupEvent |
선택사항입니다. 호출자 전화 끊기 이벤트입니다. |
posErrorInput |
선택사항입니다. POS 오류 이벤트입니다. |
DriveOffEvent
운전 종료 이벤트입니다. 고객이 운전하여 떠났음을 나타냅니다. 이 이벤트 후 세션이 종료됩니다.
| JSON 표현 |
|---|
{ "reason": string } |
| 필드 | |
|---|---|
reason |
선택사항입니다. 드라이브 오프 이유입니다(예: '주문 완료', '예상치 못한 드라이브 오프'). |
CrewInterjectionEvent
크루 삽입 이벤트입니다. 이는 크루 구성원이 세션에 개입했음을 나타냅니다. 이 이벤트 후 세션이 종료됩니다.
| JSON 표현 |
|---|
{ "mode": string } |
| 필드 | |
|---|---|
mode |
선택사항입니다. 크루 구성원이 끼어든 모드입니다(예: '헤드셋', 'pos'). |
OrderStateUpdateEvent
주문 상태 업데이트 요청입니다. 이 이벤트는 기존 터치 인터페이스를 통해 항목이 추가되거나 삭제되는 등 클라이언트 측에서 주문이 업데이트될 때 전송되어야 합니다.
| JSON 표현 |
|---|
{
"order": {
object ( |
| 필드 | |
|---|---|
order |
필수 항목입니다. 이 세션과 연결된 주문의 업데이트된 상태입니다. |
ClientEscalationEvent
클라이언트가 세션을 상담사에게 에스컬레이션하고 있음을 나타냅니다.
| JSON 표현 |
|---|
{ "reason": string } |
| 필드 | |
|---|---|
reason |
선택사항입니다. 클라이언트 에스컬레이션 이유입니다(예: 'payment-declined', 'pos-error', 'integration-error' 등). |
CallerHangupEvent
이 유형에는 필드가 없습니다.
고객이 통화를 조기에 종료했음을 나타냅니다 (예: AI에 대한 거부감).
PosErrorEvent
판매 시점 (POS) 관련 오류입니다.
| JSON 표현 |
|---|
{ "errorMessages": [ string ], "affectedItemUids": [ string ], "affectedExternalIds": [ string ], "metadata": { string: string, ... } } |
| 필드 | |
|---|---|
errorMessages[] |
선택사항입니다. 오류에 대한 사람이 읽을 수 있는 설명 목록입니다. 여러 문제가 동시에 발생하거나 (예: 여러 상품의 재고가 없음) 하나의 복잡한 실패를 더 자세히 분류하기 위해 여러 오류 메시지가 제공될 수 있습니다. 이러한 메시지는 상담사가 고객에게 알리거나 로깅 목적으로 사용할 수 있습니다. |
affectedItemUids[] |
선택사항입니다. 오류를 일으킨 음식 주문 AI 에이전트가 생성한 고유 상품 UID입니다. |
affectedExternalIds[] |
선택사항입니다. 오류를 일으킨 외부 ID 목록 (메뉴에서)입니다. POS의 실제 대표자와 같아야 합니다. 이는 일반적으로 menu.proto의 통합 속성 (예: |
metadata |
선택사항입니다. 디버깅 또는 브랜드별 신호 전송을 위한 자유 형식 메타데이터입니다. 브랜드별 오류 코드 또는 카테고리를 전달하는 데 사용할 수 있습니다 (예: {"BRAND_ERROR_CODE": "OUT_OF_STOCK"}).
|
ClientExecutionResult
클라이언트 실행 요청의 결과입니다.
| JSON 표현 |
|---|
{ "executionId": string, // Union field |
| 필드 | |
|---|---|
executionId |
필수 항목입니다. 이 결과가 속한 실행 요청의 ID입니다. |
통합 필드 response. 실행의 구체적인 결과입니다. response은 다음 중 하나여야 합니다. |
|
finalizeOrderResponse |
주문 완료 결과입니다. |
orderPricesResponse |
주문 가격을 가져온 결과입니다. |
validateDeliveryAddressResponse |
배송지 주소의 유효성 검사 결과입니다. |
orderStatusResponse |
주문 상태를 가져온 결과입니다. |
FinalizeOrderResponse
주문 완료 결과입니다.
| JSON 표현 |
|---|
{ "paymentFlowEnabled": boolean, "paymentInfo": { object ( |
| 필드 | |
|---|---|
paymentFlowEnabled |
선택사항입니다. 상담사에서 결제 처리 흐름을 사용 설정할지 여부입니다. |
paymentInfo |
선택사항입니다. 고객의 결제 정보입니다. paymentFlowEnabled가 false인 경우 작업이 없습니다. |
totalAmountDue |
선택사항입니다. 주문에 대해 결제해야 하는 총 금액입니다. |
orderPriceInfo |
선택사항입니다. 주문의 자세한 가격 정보입니다. |
PaymentInfo
사용자의 결제 정보입니다.
| JSON 표현 |
|---|
{
"creditCardLastFourDigits": string,
"creditCardCvv": string,
"paymentMethod": enum ( |
| 필드 | |
|---|---|
creditCardLastFourDigits |
선택사항입니다. 신용카드의 마지막 네 자리 숫자입니다. 결제 단계에서 신용카드 번호를 확인하는 데 사용됩니다. |
creditCardCvv |
선택사항입니다. 신용카드의 CVV입니다. |
paymentMethod |
선택사항입니다. 사용된 결제 수단 유형입니다. |
PaymentMethod
결제 수단 유형입니다.
| 열거형 | |
|---|---|
PAYMENT_METHOD_UNSPECIFIED |
지정되지 않은 결제 수단입니다. |
PAYMENT_METHOD_CREDIT_CARD |
신용카드 |
PAYMENT_METHOD_CASH |
현금 |
OrderPricesResponse
주문 가격을 가져온 결과입니다.
| JSON 표현 |
|---|
{
"success": boolean,
"orderPriceInfo": {
object ( |
| 필드 | |
|---|---|
success |
필수 항목입니다. 주문 가격을 가져왔는지 여부입니다. |
orderPriceInfo |
선택사항입니다. 모든 할인, 수수료, 세금 등을 적용한 후의 총 주문 가격 |
ValidateDeliveryAddressResponse
배송지 주소 유효성 검사의 결과입니다.
| JSON 표현 |
|---|
{
"success": boolean,
"validationStatus": enum ( |
| 필드 | |
|---|---|
success |
필수 항목입니다. 오류 없이 검증이 완료되었는지 여부입니다. |
validationStatus |
필수 항목입니다. 배송지 주소의 유효성 검사 상태입니다. |
OrderStatusResponse
주문 상태를 가져온 결과입니다.
| JSON 표현 |
|---|
{ "success": boolean } |
| 필드 | |
|---|---|
success |
필수 항목입니다. 주문 상태를 가져왔는지 여부입니다. |
blob
대화의 blob 입력 또는 출력을 나타냅니다.
| JSON 표현 |
|---|
{ "mimeType": string, "data": string } |
| 필드 | |
|---|---|
mimeType |
필수 항목입니다. 소스 데이터의 IANA 표준 MIME 유형입니다. |
data |
필수 항목입니다. blob의 원시 바이트입니다. base64 인코딩 문자열입니다. |
구성
세션 및 음식 주문 속성의 구성입니다. 각 연결이 시작될 때 클라이언트는 먼저 구성 메시지를 전송해야 합니다. 세션을 시작하기 위한 다른 요청보다 먼저 이 요청이 발생해야 합니다. 클라이언트가 연결 해제되면 다시 연결할 때 동일한 구성 메시지를 반복해야 합니다.
| JSON 표현 |
|---|
{ "session": string, "store": string, "laneId": string, "enableEchoCancellation": boolean, "daypartId": string, "featureGate": { object ( |
| 필드 | |
|---|---|
session |
필수 항목입니다. 주문의 세션입니다. 형식: |
store |
필수 항목입니다. 주문이 접수되는 매장입니다. 형식: |
laneId |
선택사항입니다. 특정 드라이브 스루 차선의 ID입니다. |
enableEchoCancellation |
선택사항입니다. 세션에서 에코 제거를 사용 설정할지 여부입니다. 사용 설정된 경우 클라이언트는 AudioInput에 customerAudio와 crewAudio를 제공해야 합니다. |
daypartId |
선택사항입니다. 아침, 점심, 저녁 등을 포함한 음식 메뉴의 시간대입니다. 이는 주문에 사용할 메뉴를 결정하는 데 사용됩니다. |
featureGate |
선택사항입니다. 세션의 기능 게이트입니다. 세션의 기능을 사용 설정하거나 사용 중지하는 데 사용됩니다. |
clientAppInfo |
선택사항입니다. 클라이언트 애플리케이션 및 기기 환경에 관한 정보입니다. |
mode |
선택사항입니다. 세션의 모드입니다. |
channelType |
선택사항입니다. 상담사 커뮤니케이션에 사용되는 채널 유형입니다. |
enableListenOnlyDualChannel |
선택사항입니다. 세션에 대해 듣기 전용 이중 채널을 사용 설정할지 여부입니다. 사용 설정된 경우 클라이언트는 AudioInput에 customerAudio와 crewAudio를 제공해야 하며, CES는 미디어 처리 서버에서 EAC와 합계를 실행합니다. |
testSessionStartTime |
선택사항입니다. 테스트 또는 평가 목적으로 사용되는 세션의 시작 시간입니다. 생성된 출력은 항상 Z-정규화되고 소수점 이하 0, 3, 6 또는 9자리인 RFC 3339를 사용합니다. 'Z' 이외의 오프셋도 허용됩니다. 예를 들면 |
FeatureGate
세션의 기능 게이트입니다. 세션의 기능을 사용 설정하거나 사용 중지하는 데 사용됩니다.
| JSON 표현 |
|---|
{ "menuResponseEnabled": boolean, "updatedOrderStateEnabled": boolean, "enableOrderStatusRetrieval": boolean } |
| 필드 | |
|---|---|
menuResponseEnabled |
선택사항입니다. 설정된 경우 BidiProcessOrderResponse에서 메뉴 데이터를 클라이언트에 반환합니다. |
updatedOrderStateEnabled |
선택사항입니다. 설정된 경우 legacyOrderStateResponse 대신 updatedOrderState가 반환됩니다. |
enableOrderStatusRetrieval |
선택사항입니다. 설정된 경우 에이전트가 주문 상태 검색을 지원합니다. |
ClientAppInfo
클라이언트 애플리케이션 및 기기 환경에 관한 정보입니다. 이는 주로 로깅, 분석, 디버깅에 사용됩니다.
| JSON 표현 |
|---|
{ "deviceModel": string, "osVersion": string, "sdkVersion": string } |
| 필드 | |
|---|---|
deviceModel |
선택사항입니다. 클라이언트의 기기 모델입니다 (예: 'iPhone 13', 'Pixel 7', 'Kiosk v2'). |
osVersion |
선택사항입니다. 클라이언트의 운영체제 버전입니다 (예: 'iOS 16.1', 'Android 13'). |
sdkVersion |
선택사항입니다. 클라이언트 SDK 또는 애플리케이션 소프트웨어의 버전입니다. |
SessionMode
세션의 모드입니다.
| 열거형 | |
|---|---|
SESSION_MODE_UNSPECIFIED |
세션 모드가 지정되지 않았습니다. |
HYBRID |
세션은 오디오와 텍스트를 모두 지원합니다. 전역 window는 기본 설정이며, |
TEXT |
세션은 텍스트 전용입니다. |
TurnType
세션 내 단항 요청의 수명 주기 위치를 나타냅니다.
| 열거형 | |
|---|---|
TURN_TYPE_UNSPECIFIED |
지정되지 않은 회전 유형입니다. |
INITIALIZE |
이 요청이 단항 모드에서 세션을 초기화함을 명시적으로 나타냅니다. 설정되면 최초 세션 변수 (예: 스토어 메타데이터 및 메뉴)가 CES에 삽입됩니다. |
SUBSEQUENT |
후속 대화 차례 또는 세션 중 업데이트를 명시적으로 나타냅니다. 설정된 경우 입력 토큰 폭발을 방지하기 위해 최초 세션 변수가 생략됩니다. |
BidiProcessOrderResponse
FoodOrderingService.BidiProcessOrder 메서드에서 반환된 최상위 메시지입니다.
| JSON 표현 |
|---|
{ // Union field |
| 필드 | |
|---|---|
통합 필드 response. 에이전트의 대답입니다. response은 다음 중 하나여야 합니다. |
|
agentAudio |
에이전트의 오디오 응답입니다. |
speechRecognition |
에이전트의 음성 인식 결과입니다. |
legacyOrderStateResponse |
세션의 기존 주문 상태 응답입니다. |
interruptionSignal |
오디오 입력에서 감지된 인터럽트 신호입니다. |
agentEvent |
에이전트의 이벤트입니다. |
clientExecutionRequest |
클라이언트가 실행하도록 요청이 전달됩니다. 주문에 코드를 추가하는 등 클라이언트 측 실행에 사용됩니다. |
updatedOrderState |
주문 상태 업데이트를 나타냅니다. 주문의 전체 상태를 포함합니다. |
agentText |
에이전트의 텍스트 응답입니다. |
suggestedOptions |
고객에게 제안할 옵션입니다. |
sentimentMeasurement |
이 턴에 대해 측정된 실시간 감정 점수입니다. |
turnCompleted |
완료 메시지 턴입니다. |
endSession |
세션이 종료되고 있으며 이번이 마지막 턴임을 나타냅니다. 상담사는 현재 차례의 대기 중인 응답을 모두 전송한 후 최종 turnCompleted 메시지를 전송합니다. 에이전트가 새로운 턴을 시작하지 않습니다. 예를 들어 2턴 세션은 다음과 같습니다.
|
AgentAudio
에이전트의 오디오 응답입니다.
| JSON 표현 |
|---|
{ "agentAudio": string } |
| 필드 | |
|---|---|
agentAudio |
에이전트의 오디오 데이터입니다. base64 인코딩 문자열입니다. |
SpeechRecognition
에이전트의 음성 인식 결과입니다.
| JSON 표현 |
|---|
{ "transcript": string, "languageCode": string, "isFinal": boolean } |
| 필드 | |
|---|---|
transcript |
감지된 언어로 된 오디오 입력의 스크립트 텍스트입니다. |
languageCode |
스크립트의 언어 코드입니다. 언어 코드는 BCP-47 형식(예: 'en-US')이어야 합니다. |
isFinal |
이것이 턴의 최종 스크립트인지 여부를 나타냅니다. |
InterruptionSignal
이 유형에는 필드가 없습니다.
에이전트의 오디오 응답이 중단되었음을 나타냅니다 (예: 최종 사용자의 끼어들기). 클라이언트는 즉시 재생을 중지해야 합니다.
AgentEvent
클라이언트가 조치를 취해야 하는 에이전트의 특별 이벤트입니다.
| JSON 표현 |
|---|
{ // Union field |
| 필드 | |
|---|---|
통합 필드 event. 상담사의 이벤트입니다. event은 다음 중 하나여야 합니다. |
|
restartOrder |
고객이 주문 재시작을 요청합니다. |
RestartOrder
고객이 주문을 다시 시작하도록 요청합니다.
| JSON 표현 |
|---|
{ "confirmationStep": boolean } |
| 필드 | |
|---|---|
confirmationStep |
상담사가 고객에게 다시 시작 요청을 확인해 달라고 요청합니다. |
ClientExecutionRequest
클라이언트 측에서 명령어를 실행하도록 요청합니다.
| JSON 표현 |
|---|
{ "executionId": string, // Union field |
| 필드 | |
|---|---|
executionId |
필수 항목입니다. 이 실행 요청의 고유 ID입니다. |
통합 필드 request. 실행할 구체적인 요청입니다. request은 다음 중 하나여야 합니다. |
|
finalizeOrderRequest |
주문을 확정하기 위한 요청입니다. |
submitOrderRequest |
주문을 제출하기 위한 요청입니다. |
orderPricesRequest |
주문 가격을 가져오기 위한 요청입니다. |
validateDeliveryAddressRequest |
배송지 주소의 유효성을 검사하는 요청입니다. |
orderStatusRequest |
주문 상태를 가져오는 요청입니다. |
FinalizeOrderRequest
이 유형에는 필드가 없습니다.
주문을 확정하기 위한 요청입니다. 이는 일반적으로 고객이 주문을 완료하고 결제하고 싶다고 표시할 때 상담사가 전송합니다.
SubmitOrderRequest
고객으로부터 수집된 모든 필수 결제 정보와 함께 주문을 제출하라는 요청입니다.
| JSON 표현 |
|---|
{ "paymentInfo": { object ( |
| 필드 | |
|---|---|
paymentInfo |
필수 항목입니다. 주문의 결제 정보입니다. |
loyaltyInfo |
선택사항입니다. 주문에 사용된 포인트입니다. |
tipAmount |
선택사항입니다. 주문의 팁 금액입니다. |
LoyaltyInfo
고객의 포인트 멤버십 정보를 나타냅니다.
| JSON 표현 |
|---|
{
"loyaltyAmount": {
object ( |
| 필드 | |
|---|---|
loyaltyAmount |
필수 항목입니다. 포인트 금액입니다. 충성도 잔액 또는 충성도 사용액일 수 있습니다. |
LoyaltyAmount
고객의 포인트 금액을 나타냅니다.
| JSON 표현 |
|---|
{ "units": string } |
| 필드 | |
|---|---|
units |
필수 항목입니다. 적립 포인트입니다. |
OrderPricesRequest
주문 가격을 가져오기 위한 요청입니다.
| JSON 표현 |
|---|
{
"order": {
object ( |
| 필드 | |
|---|---|
order |
선택사항입니다. 가격을 가져올 주문입니다. 지정되지 않은 경우 요청이 세션의 기존 주문/장바구니에 대한 것으로 가정할 수 있습니다. |
ValidateDeliveryAddressRequest
세션 중에 수집된 배송 주소를 확인하기 위한 요청입니다.
| JSON 표현 |
|---|
{
"deliveryAddress": {
object ( |
| 필드 | |
|---|---|
deliveryAddress |
필수 항목입니다. 유효성을 검사할 배송지 주소입니다. |
OrderStatusRequest
이 유형에는 필드가 없습니다.
주문 상태를 가져오는 요청입니다.
UpdatedOrderState
주문 상태 업데이트를 나타내는 상담사가 반환한 이벤트입니다.
| JSON 표현 |
|---|
{
"order": {
object ( |
| 필드 | |
|---|---|
order |
이 세션과 연결된 주문의 업데이트된 상태입니다. |
changed |
출력 전용입니다. 주문 상태에 업데이트가 있는지 여부입니다. |
AgentText
에이전트의 텍스트 응답입니다.
| JSON 표현 |
|---|
{ "text": string } |
| 필드 | |
|---|---|
text |
에이전트의 텍스트 응답입니다. |
SuggestedOptions
고객에게 제안할 옵션입니다.
| JSON 표현 |
|---|
{ "suggestedModifierGroups": { object ( |
| 필드 | |
|---|---|
suggestedModifierGroups |
추천 수정자 그룹입니다. |
통합 필드 suggested_options. 추천 옵션입니다. suggested_options은 다음 중 하나여야 합니다. |
|
suggestedItems |
고객에게 추천할 상품 목록입니다. |
suggestedModifiers |
고객에게 제안할 수정자 목록입니다. |
SuggestedItems
고객에게 추천할 상품 목록입니다.
| JSON 표현 |
|---|
{
"items": [
{
object ( |
| 필드 | |
|---|---|
items[] |
고객에게 추천할 상품입니다. |
SuggestedItem
고객에게 제안할 상품입니다.
| JSON 표현 |
|---|
{ "itemId": string, "displayName": string, "image": { object ( |
| 필드 | |
|---|---|
itemId |
메뉴에 있는 상품의 ID입니다. |
displayName |
사용자 인터페이스에 표시될 이 템의 사람이 읽을 수 있는 이름입니다. |
image |
UI에 이 항목에 대해 표시할 이미지입니다. |
basePrice |
상품의 기본 가격입니다. 이는 선택한 수정자에 따라 달라질 수 있습니다. 상품의 단위당 가격입니다. |
integrationAttributes |
다운스트림 통합에 사용되는 이 항목과 관련된 메타데이터입니다. |
SuggestedModifiers
고객에게 제안할 수정자 목록입니다.
| JSON 표현 |
|---|
{
"modifiers": [
{
object ( |
| 필드 | |
|---|---|
modifiers[] |
고객에게 제안할 수정자입니다. |
parentUid |
수정자를 적용할 상위 항목/수정자의 고유 식별자입니다. |
SuggestedModifier
고객에게 제안할 수정자입니다.
| JSON 표현 |
|---|
{ "modifierId": string, "modifierGroupId": string, "modifierGroupDisplayName": string, "displayName": string, "image": { object ( |
| 필드 | |
|---|---|
modifierId |
메뉴의 수정자 ID입니다. |
modifierGroupId |
제안이 수락될 경우 이 수정자가 추가되어야 하는 수정자 그룹의 ID입니다. |
modifierGroupDisplayName |
이 수정자가 속한 수정자 그룹의 표시 이름입니다. |
displayName |
사용자 인터페이스에 표시될 이 템의 사람이 읽을 수 있는 이름입니다. |
image |
UI에 이 항목에 대해 표시할 이미지입니다. |
priceAdjustment |
이 수정자와 연결된 가격 조정입니다(있는 경우). 수정자의 단위당 가격입니다. |
integrationAttributes |
다운스트림 통합에 사용되는 이 항목과 관련된 메타데이터입니다. |
alreadyIncluded |
이 수정자가 주문에 이미 포함되어 있는지 여부입니다. |
SuggestedModifierGroups
고객에게 제안할 한정자 그룹 목록입니다.
| JSON 표현 |
|---|
{
"modifierGroups": [
{
object ( |
| 필드 | |
|---|---|
modifierGroups[] |
고객에게 제안할 수정자 그룹입니다. |
SuggestedModGroup
고객에게 제안할 수정자 그룹입니다.
| JSON 표현 |
|---|
{
"modifierGroupId": string,
"displayName": string,
"modifiers": [
{
object ( |
| 필드 | |
|---|---|
modifierGroupId |
메뉴의 수정자 그룹 ID입니다. |
displayName |
수정자 그룹의 표시 이름입니다. |
modifiers[] |
이 그룹의 수정자입니다. |
maxSelectionCount |
이 그룹에서 선택할 수 있는 최대 수정자 수입니다. |
minSelectionCount |
이 그룹에서 선택해야 하는 최소 수정자 수입니다. |
maxSelectionCountPerModifier |
이 그룹 내에서 각 수정자를 적용할 수 있는 횟수를 제한합니다. |
SentimentMeasurement
이 턴에 대해 측정된 실시간 감정 점수입니다.
| JSON 표현 |
|---|
{ "score": number, "magnitude": number } |
| 필드 | |
|---|---|
score |
선택사항입니다. 감정 점수로, -1.0(부정적인 감정)부터 1.0(긍정적인 감정)까지입니다. |
magnitude |
선택사항입니다. 점수와 관계없는 감정의 크기입니다. |
TurnCompleted
이 유형에는 필드가 없습니다.
Food AI 에이전트가 현재 대화 턴의 끝을 감지했으며 이 턴에 더 이상 출력을 제공하지 않음을 나타냅니다.
EndSession
성공적으로 완료되어 (예: 사용자가 '안녕'이라고 말함) 상담사가 세션을 종료했음을 나타냅니다. ) 또는 상담사 에스컬레이션입니다.
| JSON 표현 |
|---|
{ "type": enum ( |
| 필드 | |
|---|---|
type |
세션 종료 이벤트의 유형입니다. |
reason |
세션을 종료한 이유입니다. |
posResponse |
선택사항입니다. 주문 체크인에서 반환된 POS 응답입니다 (선택사항). POS 거래 상태를 나타내는 불투명 문자열 페이로드입니다. |
agentResponse |
선택사항입니다. 사용자에게 말하거나 표시할 최종 에이전트 응답 메시지입니다 (선택사항). |
storeSchedule |
선택사항입니다. 매장 일정입니다. 종료 유형이 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 |
스토어가 폐쇄되었습니다. |