ใบตอบรับข้อความจะแจ้งผู้ส่งว่าได้รับข้อความแล้ว หรือ อ่านแล้ว เมื่อใช้ใบตอบรับ ผู้ใช้สามารถมองเห็นได้เมื่อตัวแทนอ่านข้อความแล้ว พวกเขารู้ว่าจะได้รับคำตอบ 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 -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