ส่งและรับข้อความ

ใบตอบรับข้อความจะแจ้งผู้ส่งว่าได้รับข้อความแล้ว หรือ อ่านแล้ว เมื่อใช้ใบตอบรับ ผู้ใช้สามารถมองเห็นได้เมื่อตัวแทนอ่านข้อความแล้ว พวกเขารู้ว่าจะได้รับคำตอบ Agent ยังระบุได้ด้วยว่าผู้ใช้จะได้รับ และอ่านข้อความ เพื่อให้ติดตามเมตริกใบเสร็จเพื่อให้โต้ตอบได้ดียิ่งขึ้น รูปแบบต่างๆ

ตัวแทนจะได้รับใบเสร็จที่เว็บฮุค รับและประมวลผลใบเสร็จในลักษณะเดียวกัน วิธีที่คุณได้รับ ข้อความ

หากผู้ใช้ส่งใบตอบรับหลายใบในคราวเดียว ด้วยการรับหรืออ่านหลายใบ ในเวลาเดียวกัน เพย์โหลด 1 รายการจะประกอบด้วยใบรับข้อความทั้งหมด ตรวจสอบใบเสร็จแต่ละใบเพื่อดูข้อความที่เกี่ยวข้อง

ประเภทใบเสร็จ

Business Messages รองรับใบตอบรับการส่งและใบตอบรับการอ่าน

ใบเสร็จจากผู้ใช้

ตัวแทนจะรับใบเสร็จต่อไปนี้จากผู้ใช้ได้

  • ใบตอบรับการส่ง (DELIVERED) ระบุว่าผู้ใช้ได้รับข้อความแล้ว จากตัวแทน
  • ใบตอบรับการอ่าน (READ) ระบุว่าผู้ใช้อ่านข้อความจากตัวแทนแล้ว

ผู้ใช้สามารถเลือกที่จะไม่ส่งใบตอบรับการอ่านได้ หากเลือกไม่รับ ผู้ใช้จะยังได้รับ ใบตอบรับการอ่านจากตัวแทน

ใบเสร็จจากตัวแทน

ผู้ใช้สามารถรับใบตอบรับการอ่านจากตัวแทนได้

ใบตอบรับการอ่าน (READ) ระบุว่าตัวแทนอ่านข้อความจากผู้ใช้แล้ว หากมีตัวแทนแบบเรียลไทม์มากกว่า 1 คนกำลังจัดการการสนทนาอยู่ ใบตอบรับการอ่าน หมายความว่าตัวแทนอย่างน้อย 1 รายอ่านข้อความของผู้ใช้

รูปแบบ

ใบเสร็จจากผู้ใช้

ใบตอบรับการส่งจากผู้ใช้มีรูปแบบดังต่อไปนี้

{
  "agent": "brands/BRAND_ID/agents/AGENT_ID",
  "conversationId": "CONVERSATION_ID",
  "customAgentId": "CUSTOM_AGENT_ID",
  "sendTime": "SEND_TIME",
  "receipts" : {
    "receipts": [
      {
        "message": "conversations/CONVERSATION_ID/messages/MESSAGE_ID",
        "receiptType": "DELIVERED",
      }
    ],
    "createTime": "RECEIPTS_CREATION_TIME",
  },
}

ใบตอบรับการอ่านจากผู้ใช้จะมีรูปแบบดังต่อไปนี้

{
  "agent": "brands/BRAND_ID/agents/AGENT_ID",
  "conversationId": "CONVERSATION_ID",
  "customAgentId": "CUSTOM_AGENT_ID",
  "sendTime": "SEND_TIME",
  "receipts" : {
    "receipts": [
      {
        "message": "conversations/CONVERSATION_ID/messages/MESSAGE_ID",
        "receiptType": "READ",
      }
    ],
    "createTime": "RECEIPTS_CREATION_TIME",
  },
}

สำหรับตัวเลือกการจัดรูปแบบและค่า โปรดดู UserMessage และ Receipts

ใบเสร็จจากตัวแทน

รหัสต่อไปนี้จะส่งใบตอบรับการอ่านจากตัวแทน

cURL

curl -X PATCH \
-H "`./oauth2l header --json 'PATH_TO_SERVICE_ACCOUNT_KEY' businessmessages`" \
-H "Content-Type: application/json" \
-d '{
  "receiptType": "READ"
}' \
"https://businessmessages.googleapis.com/v1/conversations/CONVERSATION_ID/messages/MESSAGE_ID/receipt"

Node.js

const businessmessages = require('businessmessages');
const uuidv4 = require('uuid/v4');
const {google} = require('googleapis');

// Initialize the Business Messages API
let bmApi = new businessmessages.businessmessages_v1.Businessmessages({});

// Set the scope that we need for the Business Messages API
const scopes = [
  'https://www.googleapis.com/auth/businessmessages',
];

// Set the private key to the service account file
const privatekey = require('PATH_TO_SERVICE_ACCOUNT_KEY');

/**
 * Initializes the Google credentials for calling the
 * Business Messages API.
 */
async function initCredentials() {
  // Configure a JWT auth client
  let authClient = new google.auth.JWT(
      privatekey.client_email,
      null,
      privatekey.private_key,
      scopes,
  );

  return new Promise(function(resolve, reject) {
    // Authenticate request
    authClient.authorize(function(err, tokens) {
      if (err) {
        reject(false);
      } else {
        resolve(authClient);
      }
    });
  });
}

/**
 * Sends a read receipt to a specific messageId.
 *
 * @param {string} conversationId The unique id for this user and agent.
 * @param {string} messageId The unique id for this message.
 */
async function sendReadReceipt(conversationId, messageId) {
  let authClient = await initCredentials();

  // Create the payload for sending a read receipt
  let apiParams = {
    auth: authClient,
    name: 'conversations/' + conversationId + '/messages/' + messageId + '/receipt',
    resource: {
      receiptType:'READ'
    }
  };

  // Call the updateReceipt create function using the
  // Business Messages client library
  bmApi.conversations.messages.updateReceipt(apiParams,
    {auth: authClient}, (err, response) => {
    console.log(err);
    console.log(response);
  });
}

sendReadReceipt('CONVERSATION_ID', 'MESSAGE_ID');
โค้ดนี้อิงตาม Node.js ไลบรารีของไคลเอ็นต์ Business Messages

Java

import com.google.api.client.googleapis.services.AbstractGoogleClientRequest;
import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.ExponentialBackOff;
import com.google.api.services.businessmessages.v1.Businessmessages;
import com.google.api.services.businessmessages.v1.model.BusinessMessagesReceipt;

import com.google.api.services.businessmessages.v1.model.*;
import java.io.FileInputStream;
import java.util.Arrays;
import java.util.UUID;

public class ReadReceiptSample {
  /**
   * Initializes credentials used by the Business Messages API.
   */
  private static Businessmessages.Builder getBusinessMessagesBuilder() {
    Businessmessages.Builder builder = null;
    try {
      GoogleCredential credential = GoogleCredential
            .fromStream(new FileInputStream("PATH_TO_SERVICE_ACCOUNT_KEY"));

      credential = credential.createScoped(Arrays.asList(
            "https://www.googleapis.com/auth/businessmessages"));

      credential.refreshToken();

      HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
      JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance();

      // Create instance of the Business Messages API
      builder = new Businessmessages
        .Builder(httpTransport, jsonFactory, null)
        .setApplicationName("Sample Application");

      // Set the API credentials and endpoint
      builder.setHttpRequestInitializer(credential);
    } catch (Exception e) {
      e.printStackTrace();
    }

    return builder;
  }

  public static void main(String args[]) {
    try{
      String conversationId = "CONVERSATION_ID";
      String messageId = "MESSAGE_ID";

      // Create client library reference
      Businessmessages.Builder builder = getBusinessMessagesBuilder();

     // Create a new read receipt
     Businessmessages.Conversations.Messages.UpdateReceipt request
       = builder.build().conversations().messages()
         .updateReceipt("conversations/" + conversationId + "/messages/" + messageId + "/receipt",
           new BusinessMessagesReceipt().setReceiptType("READ"));

      // Set up retries with exponential backoff
      HttpRequest httpRequest =
          ((AbstractGoogleClientRequest) request).buildHttpRequest();

      httpRequest.setUnsuccessfulResponseHandler(new
          HttpBackOffUnsuccessfulResponseHandler(
          new ExponentialBackOff()));

      // Execute request
      httpRequest.execute();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
โค้ดนี้อิงตาม ธุรกิจ Java ไลบรารีของไคลเอ็นต์ Messages

Python

from oauth2client.service_account import ServiceAccountCredentials
from businessmessages import businessmessages_v1_client as bm_client
from businessmessages.businessmessages_v1_messages import (
    BusinessMessagesReceipt)

credentials = ServiceAccountCredentials.from_json_keyfile_name(
    'PATH_TO_SERVICE_ACCOUNT_KEY',
    scopes=['https://www.googleapis.com/auth/businessmessages'])

client = bm_client.BusinessmessagesV1(credentials=credentials)

conversation_id = 'CONVERSATION_ID'
message_id = 'MESSAGE_ID'

read_receipt = BusinessMessagesReceipt(
    name=f"conversations/{conversation_id}/messages/{message_id}/receipt",
    receiptType=BusinessMessagesReceipt.ReceiptTypeValueValuesEnum.READ
)

# Send the message
bm_client.BusinessmessagesV1.ConversationsMessagesService(
    client=client).UpdateReceipt(request=read_receipt)
โค้ดนี้อิงตาม ธุรกิจ Python ไลบรารีของไคลเอ็นต์ Messages

สำหรับตัวเลือกการจัดรูปแบบและค่า โปรดดู ReceiptType