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

사용자는 RCS 클라이언트에서 허용하는 텍스트, 위치 또는 파일을 보낼 수 있습니다. 에이전트는 사용자가 보낼 수 있는 텍스트, 위치 또는 파일과 이러한 메시지가 트리거할 수 있는 오류 상태를 처리해야 합니다.
에이전트가 전송 확인, 수신 확인, 입력 중 표시기를 처리하는 방법을 알아보려면 이벤트 수신을 참고하세요.
수신 메시지 처리
에이전트가 사용자의 메시지를 처리하고 응답하는 방식은 비즈니스 로직에 따라 크게 달라집니다. 하지만 일반적으로 사용자 메시지에 응답하는 단계는 일관됩니다.
1단계: 사용자가 보낸 메시지 유형 식별
사용자는 다음 네 가지 유형의 메시지를 보낼 수 있습니다.
- 텍스트 메시지는 자유 형식 응답입니다.
- 추천 메시지에는 사용자가 탭한 추천 작업 또는 추천 답글의 백포스트 데이터와 텍스트가 포함됩니다.
위치 메시지에는 위도 및 경도 값이 포함됩니다.
파일 메시지에는 파일의 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" } } }