Nhận tin nhắn

Sau khi bạn đăng ký với Business Tin nhắn, bạn có thể nhận tin nhắn thay mặt cho nhân viên thử nghiệm. Bạn có thể nhận tin nhắn cho những thương hiệu mà bạn quản lý sau khi tạo, xác minhphát hành đại lý cho các thương hiệu đó.

Khi một khách hàng gửi tin nhắn cho một nhân viên hỗ trợ do bạn quản lý, Business Messages gửi tải trọng JSON đến webhook của bạn. Tệp này chứa nhiều mã nhận dạng, nội dung tin nhắn và thông tin vị trí.

Sử dụng nhật ký Business Communications Developer Console trang để gỡ lỗi các vấn đề liên quan đến việc gửi thông báo.

Xử lý tin nhắn đến

Cách nhân viên hỗ trợ xử lý và trả lời tin nhắn của người dùng phụ thuộc nhiều dựa trên logic kinh doanh. Tuy nhiên, nhìn chung, các bước để trả lời người dùng thông điệp nhất quán.

Xác nhận thư

Để xác nhận thông báo mà webhook của bạn nhận được, hãy trả về một phản hồi HTTP hợp lệ cho các tin nhắn được gửi tới webhook của bạn.

Nếu tin nhắn không gửi được do hết thời gian gửi, khả năng kết nối của webhook, chuyển hướng hoặc các vấn đề về quyền, Google sẽ lưu trữ và chuyển tiếp thông báo bằng nhiều lần thử lại, trong 7 ngày hoặc cho đến khi webhook của bạn nhận được thành công .

Xác minh rằng thư này là của Google

Bạn nên xác minh rằng Google đã gửi tin nhắn trước khi xử lý tin nhắn .

Để xác minh rằng Google đã gửi một tin nhắn cho bạn,

  1. Phân tích cú pháp tiêu đề X-Goog-Signature của thư. Đây là một hàm băm, bản sao được mã hoá base64 của tải trọng nội dung thư.
  2. Sử dụng mã thông báo ứng dụng (được hiển thị khi bạn định cấu hình webhook) làm khoá, tạo một HMAC SHA512 cho các byte của tải trọng thông báo và base64-mã hóa kết quả.

  3. So sánh hàm băm X-Goog-Signature với hàm băm mà bạn đã tạo.

    • Nếu các hàm băm khớp với nhau, thì bạn đã xác nhận rằng Google đã gửi thư.
    • Nếu các hàm băm không khớp, hãy kiểm tra quy trình băm của bạn trên một . Nếu quy trình băm của bạn đang hoạt động chính xác và bạn nhận được thư mà bạn cho rằng đã được gửi cho bạn theo cách gian lận, liên hệ với chúng tôi (bạn phải bằng Tài khoản Google Business Messages).

Xem ví dụ về cách xác minh tin nhắn trong kho lưu trữ GitHub cho Echo Bots trong Java, Node.jsPython.

Xác định ngôn ngữ

Người dùng giao tiếp từ nhiều vị trí và bằng nhiều ngôn ngữ. Business Messages đại diện cho người dùng lựa chọn ưu tiên về ngôn ngữ với resolvedLocaleuserDeviceLocale trường dựa trên thiết bị của các em cài đặt ngôn ngữ. Xem phần Bản địa hoá và ngôn ngữ.

Bất cứ khi nào có thể, hãy định tuyến thư và soạn thư trả lời dựa trên thông tin ngôn ngữ tùy chọn.

Định tuyến thư dựa trên ngữ cảnh của thư

Ngữ cảnh của thư cho biết loại thông tin mà người dùng có thể đang tìm kiếm. Ví dụ: nếu người dùng gửi thư kèm theo placeId họ đã nhắn tin cho một vị trí cụ thể (được placeId xác định) và có thể đặt các câu hỏi về vị trí cụ thể. Tương tự, nếu một thông báo có Giá trị nearPlaceId xác định vị trí gần người dùng mà người dùng có thể muốn biết thông tin vị trí cụ thể, nhưng nhân viên hỗ trợ nên xác nhận vị trí mà người dùng muốn trò chuyện trước khi bắt đầu cuộc trò chuyện.

Với thông tin ngữ cảnh của thư, hãy định tuyến thư đến vị trí phù hợp nhất phù hợp để trả lời:

  • Nếu thư nằm trong cuộc trò chuyện mới và là một câu hỏi phổ biến, bạn có thể câu trả lời nhờ công nghệ tự động hoá.
  • Nếu hệ thống tự động hoá không thể xử lý câu hỏi, hãy chuyển câu hỏi đến một nhân viên hỗ trợ.
  • Nếu ngôn ngữ của thông báo không khớp với ngôn ngữ mặc định của tác nhân, hãy định tuyến phương thức nhắn tin cho nhân viên hỗ trợ trực tiếp có thể hỗ trợ ngôn ngữ đó.
  • Nếu câu hỏi liên quan đến một địa điểm cụ thể, hãy chỉ đường đến một địa điểm thông tin về vị trí đó.
  • Nếu tin nhắn nằm trong một cuộc trò chuyện đang diễn ra, hãy định tuyến tin nhắn đó đến nhân viên hỗ trợ đang tham gia vào cuộc trò chuyện.

Xác định loại thông báo mà người dùng đã gửi

Người dùng có thể gửi 3 loại thông báo:

  • Tin nhắn văn bản là tin nhắn trả lời dạng tự do.
  • Thông báo hình ảnh chứa một URL đã ký của hình ảnh mà người dùng đã tải lên.
  • Thông báo Đề xuất bao gồm dữ liệu đăng lại và văn bản của hành động đề xuất hoặc câu trả lời đề xuất mà người dùng đã nhấn vào.

Xử lý nội dung tin nhắn

Nếu nhân viên hỗ trợ của bạn sử dụng công nghệ tự động hoá, thì nội dung thông báo cho người dùng sẽ hướng dẫn logic của nhân viên hỗ trợ và phản hồi tiếp theo trong cuộc trò chuyện.

Cách dễ nhất để xác định ý định của người dùng là sử dụng dữ liệu đăng lại từ câu trả lời đề xuất hoặc hành động đề xuất. Bất kể văn bản được liên kết với đề xuất, dữ liệu đăng lại có thể đọc được bằng máy.

Nếu người dùng gửi tin nhắn văn bản, nhân viên hỗ trợ của bạn có thể phân tích cú pháp phản hồi để từ khoá được hỗ trợ hoặc sử dụng cách hiểu ngôn ngữ tự nhiên (chẳng hạn như với Dialogflow tích hợp để xử lý thông báo của người dùng và xác định lộ trình cần chuyển tiếp.

Nếu nhân viên hỗ trợ của bạn không biết cách trả lời tin nhắn của người dùng, trả lời kèm theo trạng thái lỗi và cố gắng tiếp tục cuộc trò chuyện bằng cách nhắc người dùng cung cấp thêm thông tin bằng cách yêu cầu nhập thông tin trong theo cách khác hoặc bằng cách chuyển cuộc trò chuyện cho một nhân viên hỗ trợ.

Trả lời người dùng

Sau khi tác nhân xác định đúng phản hồi – bằng cách tự động hoá hoặc nhân viên hỗ trợ trực tiếp—thao tác này gửi nhắn tin và tiếp tục cuộc trò chuyện với người dùng.

Khi soạn câu trả lời, hãy xem xét ngôn ngữ của người dùng. Bạn cũng có thể tuỳ chỉnh các phản hồi bằng cách truy xuất các giá trị từ đối tượng userInfo trong mỗi đối tượng tin nhắn mà bạn nhận được.

Loại thông báo

Mã sau đây cho biết cách nhân viên hỗ trợ nhận tin nhắn.

Để biết thông tin về định dạng và giá trị, hãy xem UserMessage.

Văn bản

Cách phổ biến nhất để người dùng trả lời là sử dụng văn bản thuần tuý. Tin nhắn văn bản có định dạng sau.

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

Để biết các lựa chọn về định dạng và giá trị, hãy xem Message.

Bài đăng có hình ảnh

Ngoài việc gửi tin nhắn văn bản, người dùng còn có thể gửi hình ảnh cho nhân viên hỗ trợ của bạn dưới dạng tin nhắn. Business Messages lưu trữ các hình ảnh được chia sẻ trong 7 ngày, tại mục đã ký URL và đưa các URL đó vào trường text của tải trọng thư.

Nếu nhân viên hỗ trợ của bạn có tính năng tự động hoá, hãy đảm bảo rằng hệ thống tự động hoá đó biết cách phản hồi nếu người dùng chia sẻ một hình ảnh. Đối với nhân viên hỗ trợ trực tiếp, hãy đảm bảo rằng hình ảnh được truyền thông qua hoặc URL trong thư có thể nhấp được.

...
"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"
  }
...

Để biết các lựa chọn về định dạng và giá trị, hãy xem Message.

Đề xuất

Câu trả lời đề xuất và hành động đề xuất cho phép người dùng trả lời hoặc thực hiện thao tác chỉ bằng một lần nhấn. Khi người dùng nhấn vào một đề xuất, tác nhân sẽ nhận được một tải trọng bằng văn bản đề xuất và dữ liệu đăng lại.

Tin nhắn đề xuất có định dạng như sau.

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

Để biết các lựa chọn về định dạng và giá trị, hãy xem SuggestionResponse.

Yêu cầu xác thực

Đề xuất về yêu cầu xác thực cho phép người dùng đăng nhập bằng OAuth nhà cung cấp để cung cấp thông tin chi tiết về danh tính với nhân viên hỗ trợ hoặc cho phép nhân viên hỗ trợ thực hiện hành động trên trang web của người dùng thay mặt cho bạn. Xem phần Xác thực bằng OAuth.

Nếu người dùng đăng nhập thành công bằng nhà cung cấp OAuth đã chỉ định, thì tác nhân này nhận một tải trọng có mã uỷ quyền. Nếu người dùng không thành công trong khi đăng nhập, tác nhân sẽ nhận được tải trọng có thông tin chi tiết về lỗi.

Thông báo yêu cầu xác thực có định dạng sau.

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

Để biết các lựa chọn về định dạng và giá trị, hãy xem AuthenticationResponse.

Ngữ cảnh thư

Mỗi thông báo đều chứa thông tin ngữ cảnh về nguồn gốc của tin nhắn.

...
  "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",
    },
  },
...
Trường Mô tả
customContext Dữ liệu về bối cảnh do đối tác chỉ định.
entryPoint Nền tảng nhắn tin mà người dùng bắt đầu cuộc trò chuyện, như được xác định bằng EntryPoint.
placeId Giá trị nhận dạng duy nhất từ cơ sở dữ liệu của Google Địa điểm cho vị trí mà người dùng đã nhắn tin. Nó chỉ xuất hiện trong các thông báo từ vị trí cụ thể điểm truy cập.
nearPlaceId Giá trị nhận dạng duy nhất từ cơ sở dữ liệu Google Địa điểm cho lần hiển thị đầu tiên vị trí trong một Gói cục bộ. Xác nhận vị trí mà người dùng muốn trò chuyện khi bạn nhận được giá trị nearPlaceId.
deflectedPhoneNumber Số điện thoại mà Business Messages khiến người dùng không gọi được thời điểm cuộc trò chuyện bắt đầu.
resolvedLocale

Kết quả phù hợp nhất được tính toán theo ngôn ngữ của người dùng (được báo cáo bằng userDeviceLocale) và ngôn ngữ được hỗ trợ của nhân viên hỗ trợ (được xác định theo chế độ cài đặt trò chuyện đã chỉ định). Xem Bản địa hoáBắt đầu cuộc trò chuyện.

Giá trị ngôn ngữ là một thẻ ngôn ngữ IETF BCP 47 được định dạng đúng cách.

userInfo.displayName Tên của người dùng đã gửi tin nhắn. Nếu người dùng chọn không tham gia chia sẻ danh tính, trường này trống.
userInfo.userDeviceLocale Ngôn ngữ của người dùng (do thiết bị của họ báo cáo) là ngôn ngữ định dạng hợp lệ Thẻ ngôn ngữ IETF BCP 47.
widget.url URL của trang web mà tại đó giao diện trò chuyện đã ra mắt.
widget.widgetContext Giá trị thuộc tính data-bm-widget-context của tiện ích được dùng để bắt đầu cuộc trò chuyện.

Lịch sử cuộc trò chuyện

Google không cung cấp nhật ký cuộc trò chuyện. Lưu giữ lịch sử của riêng bạn theo cách tuân thủ chính sách quyền riêng tư và các phương pháp hay nhất, để bạn có thể gửi câu trả lời sáng suốt cho các tin nhắn của người dùng trong tương lai.