메시지 수신

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

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

사용자는 RCS 클라이언트에서 허용하는 모든 텍스트, 위치 또는 파일을 전송할 수 있습니다. 에이전트는 사용자가 전송할 수 있는 모든 텍스트, 위치, 파일은 물론 이러한 메시지가 트리거할 수 있는 모든 오류 상태를 처리해야 합니다.

수신 메시지 처리

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

1단계: 사용자가 보낸 메시지 유형 파악하기

사용자는 다음 4가지 유형의 메일을 보낼 수 있습니다.

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

  • File 메시지에는 파일의 URI 및 관련 데이터가 포함됩니다.

2단계: 메일 콘텐츠 처리하기

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

사용자 인텐트를 식별하는 가장 쉬운 방법은 추천 답장이나 추천 작업의 포스트백 데이터를 사용하는 것입니다. 추천과 관련된 텍스트와 관계없이 포스트백 데이터는 컴퓨터가 읽을 수 있습니다.

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

위치 및 파일 메시지에는 텍스트 또는 포스트백 데이터가 포함되지 않으므로 에이전트는 응답하기 전에 대화의 컨텍스트와 최근 메시지를 고려해야 합니다.

에이전트가 사용자의 메시지에 응답하는 방법을 모른다면 오류 상태로 응답하고 사용자에게 추가 정보를 요청하거나 다른 방식으로 입력을 요청하거나 에이전트가 응답 방법을 알고 있는 추천 답변 및 추천 작업을 제시하는 방식으로 대화를 계속해야 합니다.

3단계: 상호작용을 위한 비즈니스 로직 처리

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

4단계: 사용자에게 응답하기

에이전트가 상호작용의 비즈니스 로직을 처리한 후 다른 메시지를 전송하고 사용자와 대화를 계속합니다.

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

상담사가 문자 메시지 수신

{
  "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": {
    "category": "IMAGE",
    "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"
}