برای بررسی اینکه آیا دستگاه کاربر دارای قابلیت RCS است و قادر به برقراری ارتباط با یک عامل RBM است، میتوانید قابلیتهای دستگاه را درخواست کنید. شناسایی ویژگیهایی که یک دستگاه پشتیبانی میکند، در صورت وجود، به عامل شما اجازه میدهد تا مکالمه را با قابلیتهای دستگاه تنظیم کند و از ارائه تعاملاتی که تکمیل آنها برای کاربر دشوار یا غیرممکن است، جلوگیری کند.
اگر دستگاه کاربر به هیچ وجه قادر به دریافت پیامهای RCS نباشد، میتوانید از طریق سرویسهای دیگر مانند پیامک/MMS با کاربر ارتباط برقرار کنید.
بررسی قابلیتهای دستگاه
کد زیر یک بررسی قابلیت ارسال میکند و منتظر پاسخ میماند. برای گزینههای قالببندی و مقدار، به getCapabilities مراجعه کنید.
حلقه
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`"
نود جی اس
// 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); });
جاوا
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");
پایتون
# 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')
سی شارپ
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 فهرستی با فرمت 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 متصل شده باشد. این بدان معناست که دستگاه کاربر در این بازه زمانی به سرور RCS ما متصل شده است. دستگاههای آنلاین و دارای RCS به طور متوسط هر ۱ تا ۴ ساعت یکبار متصل میشوند.
اگر کاربری سیمکارت خود را به دستگاه دیگری که از RCS پشتیبانی میکند منتقل کند، ارتباط قبلی دستگاه حذف شده و یک ارتباط جدید ایجاد میشود و قابلیتهای دستگاه در سرویس RCS بهروزرسانی میشود.
اگر سیمکارت در دستگاهی قرار گیرد که RCS توسط اپراتور یا سازنده غیرفعال شده باشد، یا سیمکارت بلااستفاده بماند، سرویس RCS همچنان تا ۳۱ روز تلاش میکند تا پیامها را به دستگاه مرتبط قبلی ارسال کند.
در اینجا به بررسی علل بروز خطای ۴۰۴ میپردازیم:
کاربر از طریق RBM قابل دسترسی نیست - برای مثال، اگر دستگاه او از RCS پشتیبانی نکند.
کاربر RCS دارد، اما عامل شما روی شبکه تلفن همراه او راهاندازی نشده است.
صفبندی آفلاین
پیامها تا ۳۱ روز در صف انتظار قرار میگیرند و پس از آنلاین شدن مجدد دستگاه، ارسال میشوند. این بدان معناست که حتی اگر دستگاهی برای مدت طولانی (تا ۳۱ روز) آفلاین شود، پیامهای در صف انتظار پس از اتصال مجدد، همچنان ارسال خواهند شد، البته تا زمانی که MSISDN در ۳۱ روز گذشته به سرویس RCS متصل شده باشد.
بررسیهای قابلیت انبوه
برای تخمین تعداد کاربران قابل دسترسی توسط RBM، یک بررسی کلی از قابلیتها انجام دهید. بررسیهای کلی نشان میدهد که آیا یک شماره تلفن قابل دسترسی است یا خیر، اما مشخص نمیکند که آن شماره تلفن از چه ویژگیهایی پشتیبانی میکند.
برای هر بررسی قابلیت انبوه، باید ۵۰۰ تا ۱۰۰۰۰ شماره تلفن منحصر به فرد ارائه دهید. برای بررسی شمارههای بیشتر، چندین بررسی انجام دهید. میتوانید تا ۶۰۰ تماس در دقیقه برقرار کنید. از اسکریپت بررسی قابلیت انبوه برای استفاده از فایلهای CSV به عنوان فرمت ورودی استفاده کنید. بررسیهای انبوه از حافظه پنهان قابلیتها خوانده میشوند، که توسط کلاینتها به صورت ارگانیک با استفاده از RCS بهروزرسانی میشود. اپراتورها مستقیماً قابلیتهای هر دستگاه را درخواست نمیکنند. به همین دلیل، نتایج ممکن است بهروز نباشند.
بررسیهای قابلیت انبوه، فهرستی از شمارههایی را که نماینده شما میتواند در اپراتورهایی که در آنها راهاندازی شده است، به آنها دسترسی داشته باشد، و همچنین تخمینهایی از تعداد کل کاربران قابل دسترسی در تمام اپراتورها را ارائه میدهد. به پاسخ بررسی قابلیت انبوه مراجعه کنید.
تخمین کل کاربران قابل دسترسی
اگرچه پاسخهای بررسی انبوه شامل فهرستی از شماره تلفنهایی است که بلافاصله از طریق اپراتورهای راهاندازیشدهی نمایندهی شما ( reachableUsers ) قابل دسترسی هستند، اما پاسخها شامل دو مقدار نیز میشوند که میتوانند به شما در تخمین تعداد کل کاربران قابل دسترسی در تمام اپراتورها کمک کنند.
چگونه کار میکند؟
وقتی نماینده شما بررسی قابلیت انبوه را انجام میدهد، RBM به طور تصادفی حدود ۷۵٪ از آن اعداد را برای بررسی همه حاملها نمونهبرداری میکند (که در totalRandomSampleUserCount گزارش شده است). RBM همچنین تعداد اعداد قابل دسترسی RBM را از نمونه تصادفی، صرف نظر از وضعیت راهاندازی حامل ( reachableRandomSampleUserCount ) برمیگرداند. با تقسیم reachableRandomSampleUserCount بر totalRandomSampleUserCount ، میتوانید درصد اعدادی را که نماینده شما میتواند در صورت راهاندازی روی همه حاملها به آنها دسترسی پیدا کند، تخمین بزنید.
برای مثال، اگر در بررسی قابلیت انبوه، ۵۰۰۰ شماره تلفن مشخص کنید و RBM به طور تصادفی حدود ۷۵٪ از شمارههای مشخص شده را نمونهبرداری کند، totalRandomSampleUserCount ممکن است 3750 باشد. اگر reachableRandomSampleUserCount برابر با 3000 باشد، ۸۰٪ از شمارههای نمونهبرداری شده قابل دسترسی بودهاند.
نمونهگیری تصادفی را در نظر بگیرید
آزمایش نمونههای تصادفی میتواند منجر به اختلاف در درصدها شود. برای در نظر گرفتن اثرات نمونهگیری تصادفی، بررسیهای قابلیت انبوه را با تعداد بیشتری از شماره تلفنها انجام دهید. همچنین میتوانید بررسیها را با دستههای یکسانی از شمارهها چندین بار انجام دهید و سپس نتایج را میانگین بگیرید تا رفتار نمونهگیری تصادفی را عادی کنید.
ارسال بررسی قابلیت انبوه
کد زیر یک بررسی قابلیت دستهای ارسال میکند و منتظر پاسخ میماند. برای گزینههای قالببندی و مقدار، به users.batchGet مراجعه کنید.
شماره تلفنها باید به فرمت E.164 باشند (برای مثال، "+12223334444")، و لیست باید شامل ۵۰۰ تا ۱۰۰۰۰ شماره تلفن منحصر به فرد باشد.
حلقه
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", ] }'
نود جی اس
// 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); });
جاوا
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"));
پایتون
# 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'])
سی شارپ
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 یک پاسخ با فرمت JSON برمیگرداند.
{
"reachableUsers": [
"PHONE_NUMBER"
],
"totalRandomSampleUserCount": "COUNT_OF_SAMPLE",
"reachableRandomSampleUserCount": "REACHABLE_FROM_SAMPLE"
}| میدان | توضیحات |
|---|---|
reachableUsers | فهرستی از کاربران قابل دسترسی در اپراتورهای راهاندازیشدهی نماینده. |
totalRandomSampleUserCount | تعداد یک نمونه تصادفی از اعداد مشخص شده. معمولاً حدود ۷۵٪ از اعداد مشخص شده. |
reachableRandomSampleUserCount | تعداد اعداد از نمونه تصادفی که در تمام حاملها، صرف نظر از اینکه عامل روی کدام حاملها راهاندازی شده است، قابل دسترسی RBM هستند. این تعداد برای ارائه یک تخمین تقریبی از تعداد کل کاربران قابل دسترسی در تمام حاملها استفاده میشود. |
reachableUsersMap | فقط خروجی. نگاشت شناسه اپراتور به لیستی از کاربران قابل دسترسی در آن اپراتور. این فیلد فقط برای شماره تلفنهای ایالات متحده پر میشود. |
ابزار: اسکریپت بررسی قابلیت انبوه
اسکریپت بررسی قابلیت باک ( برای دانلود وارد شوید )بررسیهای قابلیت انبوه را با استفاده از فایلهای CSV به عنوان فرمتهای ورودی و خروجی انجام میدهد. این اسکریپت فایل CSV مربوط به MSISDNها را تجزیه میکند و از RBM SDK برای بررسی قابلیتهای هر دستگاه فهرستشده استفاده میکند.
یک ماشین مجازی با ۲ پردازنده و ۴ گیگابایت رم که اسکریپت را با ۵۰۰ رشته اجرا میکند، میتواند تقریباً به ۱K QPS برسد، اما QPS کلی به ماشین مورد استفاده، کشور دستگاهها، پیکربندی منطقهای عامل شما و نقطه پایانی API مورد استفاده بستگی دارد.
پیشنیازها
قبل از استفاده از ابزار برای انجام بررسی قابلیت انبوه، موارد زیر را تهیه کنید:
- مسیر فایل CSV با MSISDN ها برای انجام بررسیهای قابلیت روی
- مسیر کلید حساب سرویس نماینده شما در دستگاه توسعه شما
علاوه بر این، به نرمافزارهای زیر نیز نیاز دارید که روی دستگاه توسعه شما نصب شده باشند:
- آپاچی ماون ۳.۳.۹ یا بالاتر
- جاوا ۸
تنظیم کنید
برای تنظیم دستگاه توسعه خود برای بررسی قابلیت انبوه، موارد زیر را انجام دهید:
- دانلود و استخراج کنیداسکریپت بررسی قابلیت انبوه ( برای دانلود وارد شوید ).
- مراحل موجود در README را دنبال کنید.
بررسی قابلیت انبوه را اجرا کنید
برای اجرای چک دسته جمعی، مراحل زیر را دنبال کنید:
- در ترمینال، به دایرکتوری ریشه اسکریپت بروید.
دستورات زیر را اجرا کنید:
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 برای کسب و کار. welcome-botINPUT_FILE مسیر فایل CSV ورودی. input.csvOUTPUT_FILE مسیر فایل خروجی CSV. output.csvNUM_OF_THREADS تعداد رشتههایی که باید به بررسی قابلیتها اختصاص داده شوند. 500START_INDEX اختیاری. مقداری در فایل CSV که قرار است بررسیها روی آن شروع شود. 5END_INDEX اختیاری. مقداری در فایل CSV که بررسیها پس از آن پایان مییابد. 500وقتی اسکریپت کامل شد، فایل CSV خروجی را باز کنید تا نتایج را مشاهده کنید.