การตรวจสอบความสามารถ

หากต้องการตรวจสอบว่าอุปกรณ์ของผู้ใช้รองรับ RCS และสามารถสื่อสารกับตัวแทน RBM ได้หรือไม่ คุณสามารถขอความสามารถของอุปกรณ์ได้ การระบุฟีเจอร์ที่อุปกรณ์รองรับ (หากมี) จะช่วยให้ตัวแทนปรับแต่งการสนทนาให้เหมาะกับความสามารถของอุปกรณ์ และหลีกเลี่ยงการแสดงการโต้ตอบที่ผู้ใช้ทำได้ยากหรือทำไม่ได้

หากอุปกรณ์ของผู้ใช้ไม่สามารถรับข้อความ RCS ได้เลย คุณสามารถสื่อสารกับผู้ใช้ผ่านบริการอื่นๆ เช่น SMS/MMS ได้

ตรวจสอบความสามารถของอุปกรณ์

โค้ดต่อไปนี้จะส่งการตรวจสอบความสามารถและรอการตอบกลับ ดูตัวเลือกการจัดรูปแบบและค่าได้ที่ getCapabilities

cURL

curl -X GET "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/capabilities?requestId=REQUEST_ID&agentId=AGENT_ID" \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`"

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Send a capability check to the device
rbmApiHelper.checkCapability('+12223334444', function(response) {
   // Print capabilities of the device
   console.log(response);
});
โค้ดนี้เป็นส่วนหนึ่งของตัวแทนตัวอย่าง RBM

Java

import com.google.rbm.RbmApiHelper;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper();

// Check the capabilities of the device
boolean capability = rbmApiHelper.getCapability("+12223334444");
โค้ดนี้เป็นส่วนหนึ่งของตัวแทนตัวอย่าง RBM

Python

# Reference to RBM Python client helper
from rcs_business_messaging import rbm_service

# Send the tester invite to a device
response = rbm_service.make_cap_request('+12223334444')
โค้ดนี้เป็นส่วนหนึ่งของตัวแทนตัวอย่าง RBM

C#

using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

// Register the device as a tester
Capabilities capabilities = rbmApiHelper.GetCapability("+12223334444");
โค้ดนี้เป็นส่วนหนึ่งของตัวแทนตัวอย่าง RBM

การตอบกลับความสามารถ

หลังจากเรียกใช้การตรวจสอบความสามารถแล้ว แพลตฟอร์ม RBM จะแสดงรายการ ฟีเจอร์ ที่อุปกรณ์ที่ระบุรองรับในรูปแบบ JSON

{
  "features": [
    "RICHCARD_STANDALONE",
    "RICHCARD_CAROUSEL",
    "ACTION_CREATE_CALENDAR_EVENT",
    "ACTION_DIAL",
    "ACTION_OPEN_URL",
    "ACTION_SHARE_LOCATION",
    "ACTION_VIEW_LOCATION",
    "ACTION_OPEN_URL_IN_WEBVIEW",
    "PDF_IN_RICH_CARDS"
  ]
}

คำขอจะแสดงผลการตอบกลับหรือข้อผิดพลาด

ระบบจะแสดงผลการตอบกลับที่สำเร็จ ก็ต่อเมื่อ MSISDN (หมายเลขโทรศัพท์) เชื่อมต่อกับบริการ RCS ภายใน 31 วันที่ผ่านมา ซึ่งหมายความว่าอุปกรณ์ของผู้ใช้ได้ลงทะเบียนกับเซิร์ฟเวอร์ RCS ของเราภายในกรอบเวลาดังกล่าว อุปกรณ์ที่ออนไลน์และรองรับ RCS จะลงทะเบียนทุกๆ 1-4 ชั่วโมงโดยเฉลี่ย

หากผู้ใช้ย้ายซิมการ์ดไปยังอุปกรณ์อื่นที่รองรับ RCS ระบบจะนำการเชื่อมโยงอุปกรณ์ก่อนหน้าออกและสร้างการเชื่อมโยงใหม่ ซึ่งจะอัปเดตความสามารถของอุปกรณ์ในบริการ RCS

หากใส่ซิมการ์ดในอุปกรณ์ที่ผู้ให้บริการหรือผู้ผลิตปิดใช้ RCS หรือหากไม่ได้ใช้ซิมการ์ด บริการ RCS จะยังคงพยายามส่งข้อความไปยังอุปกรณ์ที่เชื่อมโยงไว้ก่อนหน้านี้เป็นเวลาสูงสุด 31 วัน

สาเหตุที่ทำให้เกิดข้อผิดพลาด 404

  • RBM ไม่สามารถติดต่อผู้ใช้ได้ เช่น หากอุปกรณ์ของผู้ใช้ไม่รองรับ RCS

  • ผู้ใช้มี RCS แต่ตัวแทนของคุณไม่ได้เปิดตัวในเครือข่ายมือถือของผู้ใช้

การจัดคิวแบบออฟไลน์

ระบบจะจัดคิวข้อความเป็นเวลาสูงสุด 31 วันและส่งเมื่ออุปกรณ์กลับมาออนไลน์ ซึ่งหมายความว่าแม้ว่าอุปกรณ์จะออฟไลน์เป็นระยะเวลานาน (สูงสุด 31 วัน) ระบบจะยังคงส่งข้อความที่จัดคิวไว้เมื่อมีการเชื่อมต่อใหม่ ตราบใดที่ MSISDN เชื่อมต่อกับบริการ RCS ภายใน 31 วันที่ผ่านมา

การตรวจสอบความสามารถแบบเป็นกลุ่ม

หากต้องการประมาณจำนวนผู้ใช้ที่ RBM ติดต่อได้ ให้ทำการตรวจสอบความสามารถแบบเป็นกลุ่ม การตรวจสอบแบบเป็นกลุ่ม จะระบุว่าหมายเลขโทรศัพท์ติดต่อได้หรือไม่ แต่จะไม่ระบุ ฟีเจอร์ ที่หมายเลขโทรศัพท์รองรับ

สำหรับการตรวจสอบความสามารถแบบเป็นกลุ่มแต่ละครั้ง คุณต้องระบุหมายเลขโทรศัพท์ที่ไม่ซ้ำกัน 500-10,000 หมายเลข หากต้องการตรวจสอบหมายเลขเพิ่มเติม ให้ทำการตรวจสอบหลายครั้ง คุณสามารถโทรได้สูงสุด 600 ครั้งต่อนาที ใช้สคริปต์การตรวจสอบความสามารถแบบเป็นกลุ่มเพื่อใช้ไฟล์ CSV เป็นรูปแบบอินพุต การตรวจสอบแบบเป็นกลุ่มจะอ่านจากแคชความสามารถ ซึ่งไคลเอ็นต์จะอัปเดตโดยอัตโนมัติโดยใช้ RCS ตัวแทนจะไม่ขอความสามารถของอุปกรณ์แต่ละเครื่องโดยตรง ด้วยเหตุนี้ ผลลัพธ์จึงอาจไม่เป็นปัจจุบัน

การตรวจสอบความสามารถแบบเป็นกลุ่มจะแสดงรายการหมายเลขที่ตัวแทนติดต่อได้ในผู้ให้บริการที่เปิดตัว รวมถึงการประมาณจำนวนผู้ใช้ทั้งหมดที่ติดต่อได้ในผู้ให้บริการทุกราย ดูการตอบกลับการตรวจสอบความสามารถแบบเป็นกลุ่ม

ประมาณจำนวนผู้ใช้ทั้งหมดที่ติดต่อได้

แม้ว่าการตรวจสอบแบบกลุ่ม การตอบกลับ จะมีรายการหมายเลขโทรศัพท์ ที่ติดต่อได้ทันทีในผู้ให้บริการที่เปิดตัวของตัวแทน (reachableUsers) แต่การตอบกลับยังรวมถึงค่า 2 ค่าที่ช่วยให้คุณประมาณ จำนวนผู้ใช้ทั้งหมดที่ติดต่อได้ในผู้ให้บริการทุกราย

วิธีการทำงาน

เมื่อตัวแทนทำการตรวจสอบความสามารถแบบเป็นกลุ่ม RBM จะสุ่มตัวอย่างหมายเลขเหล่านั้นประมาณ 75% เพื่อตรวจสอบผู้ให้บริการทุกราย (รายงานใน totalRandomSampleUserCount) นอกจากนี้ RBM ยังแสดงผลจำนวนหมายเลขที่ RBM ติดต่อได้จากตัวอย่างแบบสุ่ม ไม่ว่าสถานะการเปิดตัวของผู้ให้บริการจะเป็นอย่างไร (reachableRandomSampleUserCount) การนำ reachableRandomSampleUserCount มาหารด้วย totalRandomSampleUserCount จะช่วยให้คุณประมาณเปอร์เซ็นต์ของหมายเลขที่ตัวแทนติดต่อได้หากเปิดตัวในผู้ให้บริการทุกราย

ตัวอย่างเช่น หากคุณระบุหมายเลขโทรศัพท์ 5,000 หมายเลขในการตรวจสอบความสามารถแบบเป็นกลุ่ม และ RBM สุ่มตัวอย่างหมายเลขที่ระบุประมาณ 75% totalRandomSampleUserCount อาจเป็น 3750 หาก reachableRandomSampleUserCount เป็น 3000 แสดงว่าหมายเลขที่สุ่มตัวอย่าง 80% ติดต่อได้

พิจารณาการสุ่มตัวอย่าง

การทดสอบตัวอย่างแบบสุ่มอาจทำให้เปอร์เซ็นต์แตกต่างกัน หากต้องการพิจารณาผลของการสุ่มตัวอย่าง ให้เรียกใช้การตรวจสอบความสามารถแบบเป็นกลุ่มด้วยหมายเลขโทรศัพท์จำนวนมากขึ้น นอกจากนี้ คุณยังทำการตรวจสอบด้วยหมายเลขชุดเดียวกันหลายครั้ง แล้วหาค่าเฉลี่ยของผลลัพธ์เพื่อปรับพฤติกรรมการสุ่มตัวอย่างให้เป็นปกติได้ด้วย

ส่งการตรวจสอบความสามารถแบบเป็นกลุ่ม

โค้ดต่อไปนี้จะส่งการตรวจสอบความสามารถแบบเป็นกลุ่มและรอการตอบกลับ ดูตัวเลือกการจัดรูปแบบและค่าได้ที่ users.batchGet

หมายเลขโทรศัพท์ต้องอยู่ในรูปแบบ E.164 (เช่น "+12223334444") และรายการต้องมีหมายเลขโทรศัพท์ที่ไม่ซ้ำกัน 500-10,000 หมายเลข

cURL

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/users:batchGet?agentId=AGENT_ID \
-H "Content-Type: application/json" \
-H "User-Agent: curl/rcs-business-messaging" \
-H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d '{
  "users": [
    "PHONE_NUMBER",
  ]
}'

Node.js

// Reference to RBM API helper
const rbmApiHelper = require('@google/rcsbusinessmessaging');

// Specify phone numbers
let phoneNumbers = ['+12223334444', '+12223334444'];

// Perform a bulk capability check
rbmApiHelper.getUsers(phone_numbers, function(response) {
   // Print the bulk capability check response
   console.log(response);
});
โค้ดนี้ใช้ตัวแทนตัวอย่าง RBM agent

Java

import com.google.rbm.RbmApiHelper;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper();

// Perform a bulk capability check
BatchGetUsersResponse batchGetUsersResponse = rbmApiHelper.getUsers(Arrays.asList("+12223334444", "+12223334444"));
โค้ดนี้ใช้ตัวแทนตัวอย่าง RBM agent

Python

# Reference to RBM Python client helper
from rcs_business_messaging import rbm_service

# Perform a bulk capability check
response = rbm_service.make_batch_cap_request(['+12223334444', '+12223334444'])
โค้ดนี้ใช้ตัวแทนตัวอย่าง RBM

C#

using RCSBusinessMessaging;


// Create an instance of the RBM API helper
RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation,
                                             projectId);

// Perform a bulk capability check
BatchGetUsersResponse batchGetUsersResponse = rbmApiHelper.GetUsers(new List({"+12223334444", "+12223334444"}));
โค้ดนี้ใช้ตัวแทนตัวอย่าง RBM agent

การตอบกลับการตรวจสอบความสามารถแบบเป็นกลุ่ม

หลังจากเรียกใช้การตรวจสอบความสามารถแบบเป็นกลุ่มแล้ว RBM จะแสดงผลการตอบกลับในรูปแบบ JSON

{
  "reachableUsers": [
    "PHONE_NUMBER"
  ],
  "totalRandomSampleUserCount": "COUNT_OF_SAMPLE",
  "reachableRandomSampleUserCount": "REACHABLE_FROM_SAMPLE"
}
ช่อง คำอธิบาย
reachableUsers รายการผู้ใช้ที่ติดต่อได้ในผู้ให้บริการที่เปิดตัวของตัวแทน
totalRandomSampleUserCount จำนวนตัวอย่างแบบสุ่มของหมายเลขที่ระบุ โดยปกติจะอยู่ที่ประมาณ 75% ของหมายเลขที่ระบุ
reachableRandomSampleUserCount จำนวนหมายเลขจากตัวอย่างแบบสุ่มที่ RBM ติดต่อได้ในผู้ให้บริการทุกราย ไม่ว่าตัวแทนจะเปิดตัวในผู้ให้บริการรายใดก็ตาม จำนวนนี้ใช้เพื่อประมาณจำนวนผู้ใช้ทั้งหมดที่ติดต่อได้ในผู้ให้บริการทุกราย
reachableUsersMap เอาต์พุตเท่านั้น การแมปจากรหัสผู้ให้บริการไปยังรายการผู้ใช้ที่ติดต่อได้ในผู้ให้บริการรายนั้น ช่องนี้จะแสดงข้อมูลสำหรับหมายเลขโทรศัพท์ในสหรัฐอเมริกาเท่านั้น

เครื่องมือ: สคริปต์การตรวจสอบความสามารถแบบเป็นกลุ่ม

สคริปต์การตรวจสอบความสามารถแบบเป็นกลุ่ม Buck Capability Check Script (ลงชื่อเข้าใช้เพื่อ ดาวน์โหลด) ทำการตรวจสอบความสามารถแบบเป็นกลุ่มโดยใช้ไฟล์ CSV เป็นรูปแบบอินพุตและเอาต์พุต สคริปต์จะแยกวิเคราะห์ไฟล์ CSV ของ MSISDN และใช้ RBM SDK เพื่อตรวจสอบความสามารถของอุปกรณ์ทุกเครื่องที่ระบุไว้

เครื่องเสมือนที่มี CPU 2 ตัวและ RAM 4 GB ที่เรียกใช้สคริปต์ด้วย 500 เทรดสามารถเข้าถึง QPS ได้ประมาณ 1,000 รายการ แต่ QPS โดยรวมจะขึ้นอยู่กับเครื่องที่ใช้ ประเทศของอุปกรณ์ การกำหนดค่าระดับภูมิภาคของเอเจนต์ และปลายทาง API ที่ใช้

ข้อกำหนดเบื้องต้น

ก่อนใช้เครื่องมือเพื่อทำการตรวจสอบความสามารถแบบเป็นกลุ่ม ให้เตรียมสิ่งต่อไปนี้

  • เส้นทางไปยังไฟล์ CSV ที่มี MSISDN เพื่อทำการตรวจสอบความสามารถ
  • เส้นทางไปยังคีย์บัญชีบริการของเอเจนต์ในคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์

นอกจากนี้ คุณต้องติดตั้งซอฟต์แวร์ต่อไปนี้ในเครื่องพัฒนา

ตั้งค่า

หากต้องการตั้งค่าคอมพิวเตอร์สำหรับการพัฒนาซอฟต์แวร์สำหรับการตรวจสอบความสามารถแบบเป็นกลุ่ม ให้ทำดังนี้

  1. ดาวน์โหลดและแยกไฟล์ Bulk Capability Check Script (ลงชื่อเข้าใช้เพื่อ ดาวน์โหลด).
  2. ทำตามขั้นตอนในไฟล์ README

เรียกใช้การตรวจสอบความสามารถแบบเป็นกลุ่ม

หากต้องการเรียกใช้การตรวจสอบแบบเป็นกลุ่ม ให้ทำตามขั้นตอนต่อไปนี้

  1. ในเทอร์มินัล ให้ไปที่ไดเรกทอรีรากของสคริปต์
  2. เรียกใช้คำสั่งต่อไปนี้

    export MAVEN_OPTS="-Xms1024m -Xmx3000m"
    mvn compile && mvn exec:java -Dexec.args="AGENT_ID INPUT_FILE OUTPUT_FILE NUM_OF_THREADS START_INDEX END_INDEX"

    แทนที่ตัวแปรด้วยค่าที่คุณระบุ

    แทนที่ ด้วย ตัวอย่าง
    AGENT_ID รหัสของเอเจนต์ธุรกิจ RCS for Business welcome-bot
    INPUT_FILE เส้นทางไปยังไฟล์ CSV อินพุต input.csv
    OUTPUT_FILE เส้นทางไปยังไฟล์ CSV เอาต์พุต output.csv
    NUM_OF_THREADS จำนวนเธรดที่จะใช้สำหรับการตรวจสอบความสามารถ 500
    START_INDEX ไม่บังคับ ค่าในไฟล์ CSV ที่จะใช้เริ่มการตรวจสอบ 5
    END_INDEX ไม่บังคับ ค่าในไฟล์ CSV ที่จะใช้สิ้นสุดการตรวจสอบ 500
  3. เมื่อสคริปต์เสร็จสมบูรณ์ ให้เปิดไฟล์ CSV เอาต์พุตเพื่อดูผลลัพธ์