收發訊息收據

簡訊回條通知寄件者已收到訊息。 讀取。使用者可以透過收據查看服務專員是否已讀取訊息, 表示自己想要得到回覆你的代理程式也能判斷使用者收到對話的時間點 和讀取訊息,方便你追蹤收據指標,提升互動體驗 設計。

服務專員會透過 Webhook 接收收據。以相同方式接收及處理收據 您接收的方式 訊息

使用者一次傳送或讀取多則回條 訊息時,單一酬載會包含所有訊息回條。 請檢查每則收據,確認郵件是否與郵件相關聯。

收據類型

Business Messages 支援送達回條和讀取回條。

使用者的收據

服務專員可接收使用者傳送的下列收據:

  • 送達回條 (DELIVERED) 表示使用者已收到訊息 數據資料
  • 讀取回條 (READ) 表示使用者已讀取服務專員的訊息。

使用者可以選擇不傳送讀取回條。即使孩子拒絕啟用,仍可收到 代理程式要求讀取回條

服務專員的收據

使用者可以接收服務專員的讀取回條。

讀取回條 (READ) 表示服務專員已讀取使用者傳送的訊息。 如果對話是由多個真人服務專員負責管理,則會顯示讀取回條 代表至少有一位服務專員已讀取使用者的訊息。

格式

使用者的收據

使用者的送達回條格式如下:

{
 
"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 -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');
這個程式碼採用 Node.js 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();
   
}
 
}
}
這個程式碼是根據 Java 企業 訊息用戶端程式庫
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 企業版 訊息用戶端程式庫

如需格式設定和值選項,請參閱: ReceiptType