Enviar e receber recibos de mensagens

Os recibos de mensagem informam ao remetente que as mensagens foram recebidas ou ler. Com os recibos, os usuários sabem quando um agente leu as mensagens. eles sabem esperar uma resposta. O agente também pode determinar quando os usuários recebem e ler mensagens, para que você possa acompanhar métricas de comprovantes para uma melhor interação designs.

Os agentes recebem recibos no webhook. Receber e processar os comprovantes da mesma forma maneira como você recebe .

Se um usuário enviar vários comprovantes de uma vez, recebendo ou lendo vários ao mesmo tempo, um único payload contém todos os recibos de mensagens. Verifique cada comprovante para verificar a mensagem associada.

Tipos de comprovantes

O recurso Business Messages é compatível com confirmações de entrega e leitura.

Comprovantes de usuários

Os agentes podem receber os seguintes recibos dos usuários:

  • As confirmações de entrega (DELIVERED) indicam que o usuário recebeu uma mensagem do agente.
  • As confirmações de leitura (READ) indicam que o usuário leu uma mensagem do agente.

Os usuários podem desativar o envio de confirmações de leitura. Se eles recusarem, ainda receberão confirmações de leitura de agentes.

Recibos de agentes

Os usuários podem receber confirmações de leitura dos agentes.

As confirmações de leitura (READ) indicam que o agente leu uma mensagem do usuário. Se mais de um agente em tempo real estiver gerenciando a conversa, uma confirmação de leitura significa que pelo menos um agente leu a mensagem do usuário.

Formato

Comprovantes de usuários

Os comprovantes de entrega dos usuários têm o seguinte formato:

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

As confirmações de leitura dos usuários têm o seguinte formato:

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

Para opções de formatação e valor, consulte UserMessage e Receipts

Recibos de agentes

O código a seguir envia uma confirmação de leitura do agente:

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');
Esse código é baseado na API Node.js Biblioteca de cliente do 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();
   
}
 
}
}
Esse código é baseado no Java Business Biblioteca de cliente do app Mensagens.
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)
Esse código é baseado no Python Business Biblioteca de cliente do app Mensagens.

Para opções de formatação e valor, consulte ReceiptType