메시지 수신하기

RBM 에이전트는 webhook 사용자가 에이전트에 메시지를 보내면 Google의 RBM 서비스는 메시지를 구성된 웹훅으로 전송합니다. 그런 다음 에이전트는 메시지를 디코딩합니다. 사용자에게 응답을 보낼 수 있습니다.

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

사용자는 RCS 클라이언트에서 허용하는 모든 텍스트, 위치, 파일을 전송할 수 있습니다. 에이전트는 사용자가 전송할 수 있는 모든 텍스트, 위치 또는 파일을 해당 메시지가 트리거할 수 있는 오류 상태도 확인할 수 있습니다

수신 메시지 처리

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

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

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

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

  • 파일 메시지에는 파일의 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": {
    "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"
}