Business에 등록한 후 메시지, 테스트 에이전트를 대신하여 메시지를 수신할 수 있습니다. 메시지를 받을 수 있습니다. 관리 중인 브랜드에 대해 만들기, 인증 및 실행 에이전트의 역할을 맡고 있습니다.
고객이 내가 관리하는 상담사에게 메시지를 보내면 Business Messages 다양한 ID, 메시지 내용, 날짜 및 시간이 포함된 JSON 페이로드를 위치 정보가 포함됩니다.
비즈니스 커뮤니케이션 개발자 콘솔 로그 사용 페이지 메일 전송 문제를 디버그할 수 있습니다.
수신 메시지 처리
에이전트가 사용자의 메시지를 처리하고 이에 응답하는 방법은 크게 달라집니다. 비즈니스 로직에 집중할 수 있습니다 그러나 일반적으로 사용자에게 응답하는 단계는 확인할 수 있습니다
메시지 확인
웹훅에서 수신한 메시지를 확인하려면 유효한 HTTP 응답을 반환하세요. 메시지를 보낼 수 있습니다
전송 시간 초과, 웹훅 연결 가능성, 리디렉션 또는 권한 문제가 있는 경우 Google은 메시지를 저장하고 전달하며 7일 동안 또는 웹훅에서 메시지가 표시됩니다.
Google에서 보낸 메시지인지 확인
메시지를 처리하기 전에 Google에서 메시지를 보냈는지 확인해야 합니다. 있습니다.
Google에서 수신한 메일을 보냈는지 확인하려면 다음 단계를 따르세요.
- 메시지의
X-Goog-Signature
헤더를 파싱합니다. 이는 해싱된 메시지 본문 페이로드의 base64로 인코딩된 사본입니다. 클라이언트 토큰 (토큰을 구성할 때 제공됨) 웹훅)을 만들 수 있습니다. 메시지 페이로드의 바이트에 대한 SHA512 HMAC를 만들고 결과를 base64로 인코딩합니다.
X-Goog-Signature
해시를 직접 만든 해시와 비교합니다.- 해시가 일치하면 Google에서 메일을 보낸 것입니다.
- 해시가 일치하지 않는 경우 알려진 정상 상태의 해싱 프로세스를 확인합니다. 메시지가 표시됩니다. 해싱 프로세스가 올바르게 작동하고 메일을 보낸 경우 Google에 문의 ( (Business Messages Google 계정으로 로그인).
에코 봇용 GitHub 저장소에서 메시지 확인 예시 보기 Java에서 Node.js 그리고 Python에 대해서도 알아봤습니다
언어 식별
사용자는 다양한 위치에서 다양한 언어로 커뮤니케이션합니다. 비즈니스 메시지
사용자의 상태를 resolvedLocale
및
사용자 기기를 기반으로 한 userDeviceLocale
필드 언어 설정으로 이동합니다.
자세한 내용은 현지화 및
언어.
가능한 경우 항상 메시지를 라우팅하고 사용자의 필요에 따라 응답을 작성합니다. 언어 선호합니다.
컨텍스트에 따라 메일 라우팅
메일 컨텍스트는 사용자가 찾고 있는 정보의 종류를 알려줍니다.
예를 들어 사용자가
placeId
드림
특정 위치 (placeId
로 식별됨)로 메시지를 보냈으며
위치 관련 질문을 할 가능성이 높음 마찬가지로 메시지에
nearPlaceId
값: 사용자 주변의 위치를 식별합니다. 사용자는 이 값을
위치별 정보를 알고 싶어 하지만 상담사는
사용자가 대화를 시작하기 전에 채팅하려는 위치입니다.
메시지의 컨텍스트 정보를 사용하여 메시지를 가장 적합한 위치로 라우팅합니다. 대응하기에 적합한 예:
- 메일이 새 대화에서 일반적인 질문인 경우 자동화를 통해 해결할 수 있습니다
- 자동화에서 질문을 처리할 수 없는 경우 실제 상담사에게 라우트합니다.
- 메시지의 언어가 에이전트의 기본 언어와 일치하지 않는 경우 해당 언어를 지원할 수 있는 실제 상담사에게 메시지를 보냅니다.
- 특정 위치에 관한 질문인 경우 다음과 같은 담당자에게 라우트합니다. 해당 위치 관련 정보가 표시됩니다.
- 메시지가 진행 중인 대화인 경우 실제 상담사에게 라우트합니다. 대화 참여에 대해 설명합니다.
사용자가 보낸 메시지 유형 식별
사용자는 다음 세 가지 유형의 메시지를 보낼 수 있습니다.
- 문자 메시지는 자유 형식의 응답입니다.
- 이미지 메시지에는 사용자가 서명한 이미지의 서명된 URL이 포함되어 있습니다. 합니다.
- 제안 메시지에는 포스트백 데이터와 사용자가 탭한 추천 작업 또는 추천 답장
메일 내용 처리
에이전트가 자동화를 사용하는 경우 사용자 메시지 콘텐츠가 에이전트의 로직과 대화의 다음 응답을 파악합니다.
사용자 의도를 식별하는 가장 쉬운 방법은 추천 답장 또는 추천 작업 어떤 텍스트든 포스트백 데이터는 컴퓨터에서 읽을 수 있습니다.
사용자가 문자 메시지를 보내면 에이전트가 자연어 이해 (예: Dialogflow 통합 사용자의 메시지를 처리하고 앞으로 이동하는 경로를 식별합니다.
에이전트가 사용자의 메시지에 응답하는 방법을 모르는 경우 오류 상태로 응답하고 입력 문장의 입력을 요청하여 사용자에게 추가 정보를 대화를 실제 상담사에게 전달하는 것입니다.
사용자에게 응답
상담사가 자동화 또는 실제 상담사를 통해 메시지 사용자와 대화를 이어갑니다.
응답을 작성할 때 사용자의 언어를 고려하세요. 또한
각 객체의 userInfo
객체에서 값을 가져와 응답을 맞춤설정합니다.
메시지를 수신할 수 없습니다.
메시지 유형
다음 코드는 에이전트가 메시지를 수신하는 방법을 보여줍니다.
형식 및 값 정보는 다음을 참고하세요.
UserMessage
텍스트
사용자가 응답하는 가장 일반적인 방법은 일반 텍스트로 응답하는 것입니다. 문자 메시지: 다음 형식으로 입력합니다.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "message": { "messageId": "MESSAGE_ID", "name": "conversations/CONVERSATION_ID/messages/MESSAGE_ID", "text": "MESSAGE_TEXT", "createTime": "MESSAGE_CREATE_TIME", }, "dialogflowResponse": { "autoResponded": "BOOLEAN", "faqResponse": { "userQuestion": "USER_QUESTION", "answers": [{ "faqQuestion": "FAQ_QUESTION", "faqAnswer": "FAQ_ANSWER", "matchConfidenceLevel": "CONFIDENCE_LEVEL", "matchConfidence": "CONFIDENCE_NUMERIC", }], }, }, "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
형식 지정 및 값 옵션은 다음을 참고하세요.
Message
이미지
사용자는 텍스트 전송 외에도 이미지를 메시지로 에이전트에 전송할 수 있습니다.
Business Messages는 공유된 이미지를 서명됨에 따라 7일 동안 저장합니다.
URL
메시지 페이로드의 text
필드에 해당 URL을 포함합니다.
에이전트에 자동화가 포함된 경우 자동화가 응답 방법을 알고 있어야 합니다. 사용자가 이미지를 공유하는 경우입니다. 실제 상담사의 경우 이미지가 전달되었는지 확인 클릭 가능하도록 만들 필요는 없습니다.
...
"message": {
"text": "https://storage.googleapis.com/business-messages-us/936640919331/jzsu6cdguNGsBhmGJGuLs1DS?x-goog-algorithm\u003dGOOG4-RSA-SHA256\u0026x-goog-credential\u003duranium%40rcs-uranium.iam.gserviceaccount.com%2F20190826%2Fauto%2Fstorage%2Fgoog4_request\u0026x-goog-date\u003d20190826T201038Z\u0026x-goog-expires\u003d604800\u0026x-goog-signedheaders\u003dhost\u0026x-goog-signature\u003d89dbf7a74d21ab42ad25be071b37840a544a43d68e67270382054e1442d375b0b53d15496dbba12896b9d88a6501cac03b5cfca45d789da3e0cae75b050a89d8f54c1ffb27e467bd6ba1d146b7d42e30504c295c5c372a46e44728f554ba74b7b99bd9c6d3ed45f18588ed1b04522af1a47330cff73a711a6a8c65bb15e3289f480486f6695127e1014727cac949e284a7f74afd8220840159c589d48dddef1cc97b248dfc34802570448242eac4d7190b1b10a008404a330b4ff6f9656fa84e87f9a18ab59dc9b91e54ad11ffdc0ad1dc9d1ccc7855c0d263d93fce6f999971ec79879f922b582cf3bb196a1fedc3eefa226bb412e49af7dfd91cc072608e98"
}
...
형식 지정 및 값 옵션은 다음을 참고하세요.
Message
추천
추천 답장 및 추천 작업을 통해 사용자는 응답하거나 작업을 수행할 수 있습니다. 실행할 수 있습니다 사용자가 추천을 탭하면 에이전트가 페이로드를 수신합니다. 추천 텍스트 및 포스트백 데이터를 포함합니다
추천 메시지의 형식은 다음과 같습니다.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "suggestionResponse": { "message": "conversations/CONVERSATION_ID/messages/MESSAGE_ID", "postbackData": "POSTBACK_DATA", "createTime": "RESPONSE_CREATE_TIME", "text": "SUGGESTION_TEXT", "suggestionType": "SUGGESTION_TYPE", } "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
형식 지정 및 값 옵션은 다음을 참고하세요.
SuggestionResponse
인증 요청
인증 요청 추천을 사용하면 사용자가 OAuth로 로그인할 수 있습니다. 공급업체가 상담사에게 신원 세부정보를 제공하거나 상담사가 사용자의 기기에 대한 작업을 수행하거나 있습니다. 다음을 참조하세요. 인증: OAuth).
사용자가 지정된 OAuth 제공업체로 로그인되면 에이전트가 승인 코드가 포함된 페이로드를 수신합니다. 사용자가 로그인하면 에이전트가 오류 세부정보가 포함된 페이로드를 받게 됩니다.
인증 요청 메시지의 형식은 다음과 같습니다.
{ "agent": "brands/BRAND_ID/agents/AGENT_ID", "conversationId": "CONVERSATION_ID", "customAgentId": "CUSTOM_AGENT_ID", "requestId": "REQUEST_ID", "authenticationResponse": { "code": "AUTHORIZATION_CODE", "redirect_uri": "REDIRECT_URI", "errorDetails": { "error": "ERROR", "errorDescription": "ERROR_DESCRIPTION", }, } "context": { "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, }, "sendTime": "SEND_TIME", }
형식 지정 및 값 옵션은 다음을 참고하세요.
AuthenticationResponse
메시지 컨텍스트
각 메시지에는 메일이 처음 시작된 위치에 관한 컨텍스트 정보가 포함되어 있습니다.
... "context": { "customContext": "CUSTOM_CONTEXT", "entryPoint": "CONVERSATION_ENTRYPOINT", "placeId": "LOCATION_PLACE_ID", "nearPlaceId": "NEARBY_LOCATION_PLACE_ID", "deflectedPhoneNumber": "DEFLECTED_PHONE_NUMBER", "resolvedLocale": "MATCH_OF_USER_AND_AGENT_LOCALES", "userInfo": { "displayName": "USER_NAME", "userDeviceLocale": "USER_LOCALE", }, "widget": { "url": "WEBSITE_URL", "widgetContext": "WIDGET_CONTEXT", }, }, ...
필드 | 설명 |
---|---|
customContext |
파트너가 지정한 컨텍스트 데이터입니다. |
entryPoint |
사용자가 대화를 시작한 메시지 표시 경로(정의된 대로) EntryPoint 중에서 선택합니다. |
placeId |
Google 지역 정보 데이터베이스에서 위치에 대한 고유 식별자 확인할 수 있습니다 특정 위치 관련 메시지에만 표시됩니다. 진입점을 제공합니다 |
nearPlaceId |
첫 번째 식별자는 Google 지역 정보 데이터베이스의
있습니다. 사용자가 채팅하려는 위치 확인
nearPlaceId 값을 수신할 때 발생합니다. |
deflectedPhoneNumber |
Business Messages에서 사용자가 전화를 걸지 못한 전화번호 알림을 받습니다. |
resolvedLocale |
사용자의 언어(
언어 값은 올바른 형식의 IETF BCP 47 언어 태그입니다. |
userInfo.displayName |
메시지를 보낸 사용자의 이름입니다. 사용자가 선택 해제하는 경우 ID 공유인 경우 이 입력란은 비어 있습니다. |
userInfo.userDeviceLocale |
기기에서 보고된 사용자의 언어이며 올바른 형식입니다. IETF BCP 47 언어 태그입니다. |
widget.url |
대화 표면이 시작된 웹사이트의 URL입니다. |
widget.widgetContext |
사용된 위젯의 data-bm-widget-context 속성 값
대화를 시작할 수 있습니다. |
대화 기록
Google에서는 대화 기록을 제공하지 않습니다. 자체적인 이력 유지 개인정보처리방침과 권장사항을 준수하는 방식으로 대화를 나누는 경우 향후 사용자가 보내는 메시지에 충분한 정보를 바탕으로 응답을 보낼 수 있습니다.