Mengirim dan menerima tanda terima pesan

Tanda terima pesan memberi tahu pengirim bahwa pesan mereka telah diterima atau dibaca. Dengan tanda terima, pengguna dapat melihat ketika agen telah membaca pesan mereka, jadi mereka tahu untuk mengharapkan jawaban. Agen Anda juga dapat menentukan kapan pengguna menerima dan membaca pesan, sehingga Anda dapat melacak metrik tanda terima untuk interaksi yang lebih baik desain.

Agen menerima tanda terima di webhook mereka. Menerima dan memproses tanda terima dengan cara yang sama cara Anda menerima pesan.

Jika pengguna mengirim beberapa tanda terima sekaligus, dengan menerima atau membaca beberapa pesan di saat yang sama, satu {i>payload<i} berisi semua tanda terima pesan. Periksa setiap tanda terima untuk menemukan pesan yang terkait dengannya.

Jenis tanda terima

Business Messages mendukung tanda pesan terkirim dan tanda sudah dibaca.

Tanda terima dari pengguna

Agen dapat menerima tanda terima berikut dari pengguna:

  • Tanda terima pengiriman (DELIVERED) menunjukkan bahwa pengguna telah menerima pesan dari agen.
  • Tanda sudah dibaca (READ) menunjukkan bahwa pengguna telah membaca pesan dari agen.

Pengguna dapat memilih untuk tidak mengirim tanda sudah dibaca. Jika memilih tidak ikut, mereka tetap akan menerima tanda sudah dibaca dari agen.

Tanda terima dari agen

Pengguna dapat menerima tanda sudah dibaca dari agen.

Tanda sudah dibaca (READ) menunjukkan bahwa agen telah membaca pesan dari pengguna. Jika lebih dari satu agen langsung mengelola percakapan, tanda sudah dibaca berarti bahwa setidaknya satu agen membaca pesan pengguna.

Format

Tanda terima dari pengguna

Tanda terima pengiriman dari pengguna memiliki format berikut:

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

Tanda sudah dibaca dari pengguna memiliki format berikut:

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

Untuk opsi pemformatan dan nilai, lihat UserMessage dan Receipts.

Tanda terima dari agen

Kode berikut mengirimkan tanda sudah dibaca dari agen:

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"
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');
Kode ini didasarkan pada Node.js Library klien Business Messages.
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();
   
}
 
}
}
Kode ini didasarkan pada Bisnis Java Library klien Message.
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)
Kode ini didasarkan pada Bisnis Python Library klien Message.

Untuk opsi pemformatan dan nilai, lihat ReceiptType