Les reçus indiquent à l'expéditeur que ses messages ont été reçus ou lire. Grâce aux confirmations, les utilisateurs peuvent voir quand un agent a lu leurs messages. qu’ils savent s’attendre à une réponse. Votre agent peut également déterminer quand les utilisateurs reçoivent et lire les messages. Vous pouvez ainsi suivre les métriques des reçus pour améliorer l'interaction conceptions.
Les agents reçoivent les reçus à leur webhook. Recevoir et traiter les reçus de la même manière façon dont vous recevez messages.
Si un utilisateur envoie plusieurs reçus à la fois, en recevant ou en lisant plusieurs messages en même temps, une seule charge utile contient toutes les confirmations de message. Vérifiez dans chaque réception le message auquel elle est associée.
Types de reçus
Business Messages est compatible avec les confirmations de distribution et les confirmations de lecture.
Reçus des utilisateurs
Les agents peuvent recevoir les reçus suivants de la part des utilisateurs:
- Les accusés de réception (
DELIVERED
) indiquent que l'utilisateur a reçu un message de l'agent. - Les confirmations de lecture (
READ
) indiquent que l'utilisateur a lu un message de l'agent.
Les utilisateurs peuvent désactiver l'envoi de confirmations de lecture. Dans ce cas, ils reçoivent tout de même les confirmations de lecture des agents.
Reçus des agents
Les utilisateurs peuvent recevoir des confirmations de lecture de la part des agents.
Les confirmations de lecture (READ
) indiquent que l'agent a lu un message de l'utilisateur.
Si plusieurs agents gèrent la conversation, une confirmation de lecture
signifie qu'au moins un agent a lu le message de l'utilisateur.
Format
Reçus des utilisateurs
Les accusés de réception envoyés par les utilisateurs se présentent comme suit:
{
"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 ",
},
}
Les confirmations de lecture envoyées par les utilisateurs se présentent comme suit:
{
"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 ",
},
}
Pour connaître les options de mise en forme et de valeur, consultez
UserMessage
et
Receipts
Reçus des agents
Le code suivant envoie une confirmation de lecture à partir de l'agent:
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)
Pour connaître les options de mise en forme et de valeur, consultez
ReceiptType