簡訊回條通知寄件者已收到訊息。 讀取。使用者可以透過收據查看服務專員是否已讀取訊息, 表示自己想要得到回覆你的代理程式也能判斷使用者收到對話的時間點 和讀取訊息,方便你追蹤收據指標,提升互動體驗 設計。
服務專員會透過 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 ');
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();
}
}
}
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)
如需格式設定和值選項,請參閱:
ReceiptType
。