رسیدهای پیام را ارسال و دریافت کنید

رسیدهای پیام به فرستنده اطلاع می‌دهند که پیام‌هایشان دریافت یا خوانده شده است. با رسیدها، کاربران می‌توانند ببینند که چه زمانی یک نماینده پیام‌هایشان را خوانده است، بنابراین می‌دانند که انتظار پاسخ داشته باشند. نماینده شما همچنین می‌تواند تعیین کند که کاربران چه زمانی پیام‌ها را دریافت و خوانده‌اند، بنابراین می‌توانید معیارهای رسید را برای طراحی‌های تعاملی بهتر پیگیری کنید.

نمایندگان رسیدها را در وب‌هوک خود دریافت می‌کنند. رسیدها را همانطور که پیام‌ها را دریافت می‌کنید، دریافت و پردازش کنید.

اگر کاربری چندین رسید را به طور همزمان ارسال کند، یعنی چندین پیام را همزمان دریافت یا بخواند، یک فایل مخرب شامل تمام رسیدهای پیام می‌شود. هر رسید را برای یافتن پیامی که با آن مرتبط است، بررسی کنید.

انواع رسید

پیام‌های تجاری از رسیدهای تحویل و رسیدهای خوانده شده پشتیبانی می‌کنند.

رسید از کاربران

نمایندگان می‌توانند رسیدهای زیر را از کاربران دریافت کنند:

  • رسیدهای تحویل ( 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();
    }
  }
}
این کد بر اساس کتابخانه کلاینت پیام‌های تجاری جاوا نوشته شده است.

پایتون

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 مراجعه کنید.