메시지 수신

RBM 에이전트는 웹훅을 통해 메시지와 이벤트를 수신합니다. 사용자가 에이전트에게 메시지를 보내면 Google의 RBM 서비스가 구성된 웹훅으로 메시지를 전송합니다. 그러면 에이전트가 메시지를 디코딩하고 처리하여 사용자에게 응답을 보낼 수 있습니다.

사용자가 상담사에게 메시지를 보냅니다.

사용자는 RCS 클라이언트에서 허용하는 텍스트, 위치 또는 파일을 보낼 수 있습니다. 에이전트는 사용자가 보낼 수 있는 텍스트, 위치 또는 파일과 이러한 메시지로 인해 트리거될 수 있는 오류 상태를 처리해야 합니다.

수신 메시지 처리

에이전트가 사용자의 메시지를 처리하고 응답하는 방식은 비즈니스 로직에 따라 크게 달라집니다. 하지만 일반적으로 사용자 메시지에 응답하는 단계는 일관됩니다.

1단계: 사용자가 보낸 메시지 유형 식별

사용자는 다음과 같은 네 가지 유형의 메시지를 보낼 수 있습니다.

  • 텍스트 메시지는 자유 형식 응답입니다.
  • 제안 메시지에는 사용자가 탭한 제안 작업 또는 제안 응답의 postback 데이터와 텍스트가 포함됩니다.
  • 위치 메시지에는 위도 및 경도 값이 포함됩니다.

  • 파일 메시지에는 파일의 URI와 연결된 데이터가 포함됩니다.

2단계: 메시지 콘텐츠 처리

사용자 메시지의 콘텐츠는 대화에서 에이전트의 로직과 다음 응답을 안내해야 합니다.

사용자 의도를 파악하는 가장 쉬운 방법은 추천 답장 또는 추천 작업의 포스트백 데이터를 사용하는 것입니다. 추천과 연결된 텍스트와 관계없이 포스트백 데이터는 머신이 읽을 수 있습니다.

사용자가 문자 메시지를 보내면 에이전트가 지원되는 키워드에 대한 응답을 파싱하거나 NLU (예: Dialogflow)를 사용하여 사용자의 메시지를 처리하고 다음 단계를 식별할 수 있습니다.

위치 및 파일 메시지에는 텍스트나 포스트백 데이터가 포함되지 않으므로 상담사는 대화의 맥락과 최근 메시지를 고려하여 응답해야 합니다.

에이전트가 사용자의 메시지에 어떻게 응답해야 하는지 모르는 경우 오류 상태로 응답하고 사용자에게 추가 정보를 요청하거나, 다른 방식으로 입력을 요청하거나, 에이전트가 응답하는 방법을 아는 제안된 대답과 제안된 작업을 표시하여 대화를 계속해야 합니다.

3단계: 상호작용의 비즈니스 로직 충족

에이전트가 사용자의 메시지에 대한 올바른 응답을 식별하면 인프라에서 필요한 정보를 수집하고 상호작용의 비즈니스 로직을 충족하기 위해 필요한 경우 다른 시스템과 상호작용합니다.

4단계: 사용자에게 응답

에이전트가 상호작용에 대한 비즈니스 로직을 충족하면 다른 메시지를 보내 사용자와의 대화를 계속합니다.

다음 코드는 에이전트가 메시지를 수신하는 방법을 보여줍니다. 형식 및 값 정보는 UserMessage를 참고하세요.

참고: 미국 트래픽의 경우 사용자 메시지와 추천 작업 탭에 미국 청구 모델 분류가 적용됩니다. 에이전트가 이러한 이벤트를 수신하면 청구 가능한 이벤트 유형을 결정하는 richMessageClassification 필드가 포함됩니다. 분류에 관한 자세한 내용은 미국 청구 모델 가이드를 참고하세요.

상담사가 텍스트를 수신함

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "text": "Hello, world!"
}

에이전트가 추천에서 메시지를 수신함

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "suggestionResponse": {
    "postbackData": "suggestion_1",
    "text": "Suggestion #1"
  }
}

상담사가 위치를 수신함

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "location": {
    "latitude": 37.422000,
    "longitude": -122.084056
  }
}

상담사가 파일을 수신함

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "userFile": {
    "thumbnail": {
      "mimeType": "image/jpeg",
      "fileSizeBytes": 1280,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c8",
      "fileName": "4_animated.jpeg"
    },
    "payload": {
      "mimeType": "image/gif",
      "fileSizeBytes": 127806,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9",
      "fileName": "4_animated.gif"
    }
  }
}

수신 이벤트 처리

사용자에게 전송된 메시지가 전송되고 읽혀지면 에이전트에게 알림이 전송됩니다.

다음 코드는 에이전트가 메시지를 수신하는 방법을 보여줍니다. 형식 및 값 정보는 UserEvent를 참고하세요.

사용자에게 메시지가 전송됨

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "DELIVERED"
}

사용자가 메시지를 읽음

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "READ"
}

사용자가 입력 중

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "IS_TYPING",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "agentId": "AGENT_ID"
}