إرسال إيصالات الاستلام واستلامها

تُعلم إيصالات الرسائل المُرسِل باستلام رسائله أو تَقْرَأ باستخدام الإيصالات، يمكن للمستخدمين معرفة متى قرأ أحد موظّفي الدعم رسائلهم، وبالتالي التي يعرفون أنها يتوقعون ردًا. يمكن لوكيلك أيضًا تحديد الوقت الذي يتلقّى فيه المستخدمون وقراءة الرسائل، لكي تتمكّن من تتبُّع مقاييس الإيصالات لتحسين التفاعل التصميمات.

يتلقّى الوكلاء إيصالات في ردّهم التلقائي على الويب. استلام الإيصالات ومعالجتها بنفس الطريقة الطريقة التي تتلقى بها الرسائل.

إذا أرسل المستخدم إيصالات متعددة في وقت واحد، من خلال تلقّي إشعارات متعددة أو قراءتها الرسائل في نفس الوقت، تحتوي حمولة البيانات الواحدة على جميع إيصالات الرسائل. ابحث عن كل إيصال للرسالة المرتبطة به.

أنواع الإيصالات

تتيح ميزة "الرسائل التجارية" استخدام إيصالات التسليم وإشعارات بالقراءة.

إيصالات المستخدمين

يمكن أن يتلقّى الوكلاء الإيصالات التالية من المستخدمين:

  • تشير إيصالات التسليم (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

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"

Node.js

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 مكتبة برامج "الرسائل التجارية"

Java

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();
    }
  }
}
تستند هذه التعليمة البرمجية إلى Java Business مكتبة برامج تطبيق "الرسائل"

Python

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)
تستند هذه التعليمة البرمجية إلى Python Business مكتبة برامج تطبيق "الرسائل"

للحصول على خيارات التنسيق والقيمة، يمكنك الاطّلاع على ReceiptType