如要確認使用者的裝置是否支援 RCS,以及是否能夠與 RBM 服務代理通訊,您可以要求取得裝置的功能。找出裝置支援哪些功能 (如果有的話),代理人就能根據裝置功能調整對話內容,避免提供使用者難以完成或無法完成的互動。
如果使用者的裝置完全無法接收 RCS 訊息,您可以透過其他服務 (例如簡訊/多媒體訊息) 與使用者聯絡。
檢查裝置功能
下列程式碼會傳送功能檢查,並等待回應。如需格式和值選項,請參閱 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); });
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");
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')
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 平台會傳回以 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" ] }
要求會傳回回應或錯誤。
只有 MSISDN (電話號碼) 在過去 31 天內連線至 RCS 服務,系統才會傳回成功回應。這表示使用者的裝置已在該時間範圍內與 RCS 伺服器聯絡。線上和支援 RCS 的裝置平均每 1 到 4 小時會檢查一次。
如果使用者將 SIM 卡移至其他支援 RCS 的裝置,系統會移除先前的裝置關聯,並建立新的關聯,更新 RCS 服務中的裝置功能。
如果 SIM 卡插入的裝置已由電信業者或製造商停用 RCS,或是 SIM 卡未使用,RCS 服務仍會嘗試將訊息傳送至先前已連結的裝置,最多 31 天。
以下是導致 404 錯誤的原因:
使用者無法透過 RBM 聯絡,例如裝置不支援 RCS。
使用者已啟用 RCS,但您的服務機器人並未在使用者的行動網路上啟動。
離線排隊
訊息會排入佇列,最多保留 31 天,並在裝置重新上線時傳送。也就是說,只要 MSISDN 在過去 31 天內連線至 RCS 服務,即使裝置離線一段時間 (最多 31 天),仍會在重新連線時傳送已排入佇列的訊息。
大量功能檢查
如要預估 RBM 可觸及的使用者人數,請進行大量功能檢查。大量檢查可指出電話號碼是否可供聯絡,但無法指出電話號碼支援哪些功能。
每項大量功能檢查作業,您必須提供 500 到 10,000 個不重複的電話號碼。如要檢查更多號碼,請執行多次檢查。每分鐘最多可發出 600 個呼叫。使用大量檢查功能指令碼,將 CSV 檔案做為輸入格式。從功能快取讀取的大量檢查項目,這些項目會由客戶端以 RCS 自然更新。代理程式不會直接要求每部裝置的功能。因此,結果可能不是最新資訊。
大量能力檢查會傳回可供服務專員聯絡的號碼清單,以及所有電信業者可觸及的使用者總數估計值。請參閱「大量功能檢查回應」。
預估可觸及的使用者總數
雖然大量檢查回應包含代理程式在已推出的電信業者 (reachableUsers
) 上立即可及的電話號碼清單,但回應也包含兩個值,可協助您估算所有電信業者可及的使用者總數。
運作方式
當代理程式執行大量能力檢查時,RBM 會隨機抽樣約 75% 的號碼,以檢查所有電信業者 (在 totalRandomSampleUserCount
中回報)。RBM 也會根據隨機樣本,無論電信業者的啟用狀態為何 (reachableRandomSampleUserCount
),傳回可透過 RBM 觸及的號碼數量。將 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); });
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"));
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'])
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 會傳回 JSON 格式的回應。
{ "reachableUsers": [ "PHONE_NUMBER" ], "totalRandomSampleUserCount": "COUNT_OF_SAMPLE", "reachableRandomSampleUserCount": "REACHABLE_FROM_SAMPLE" }
欄位 | 說明 |
---|---|
reachableUsers
|
代理商已推出的電信業者中,可聯絡的使用者清單。 |
totalRandomSampleUserCount
|
指定數字的隨機樣本計數。通常為指定數字的 75% 左右。 |
reachableRandomSampleUserCount
|
在所有電信業者中,從隨機樣本中計算出可透過 RBM 聯絡的電話號碼數量,不論代理程式是在哪個電信業者上啟動。這個計數可用於粗略估算所有電信業者可觸及的使用者總數。 |
工具:大量能力檢查指令碼
Buck 能力檢查指令碼 (登入下載) 使用 CSV 檔案做為輸入和輸出格式,執行大量能力檢查。這個指令碼會剖析 MSISDN 的 CSV 檔案,並使用 RBM SDK 檢查每個列出的裝置功能。
虛擬機器的 CPU 為 2 個,RAM 為 4 GB,執行具有 500 個執行緒的指令碼,可達到約 1K QPS,但整體 QPS 取決於所用機器、裝置所在國家/地區、代理程式的區域設定,以及使用的 API 端點。
必要條件
使用這項工具執行大量功能檢查前,請先取得下列項目:
- 包含 MSISDN 的 CSV 檔案路徑,用於執行功能檢查
- 開發機器上代理程式服務帳戶金鑰的路徑
此外,您需要在開發機器上安裝下列軟體:
- Apache Maven 3.3.9 以上版本
- Java 8
設定
如要設定開發機器以進行大量功能檢查,請執行下列操作:
- 下載並解壓縮大量檢查功能指令碼 (登入後即可下載)。
- 按照 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 Business Messaging 服務專員的 ID。 welcome-bot
INPUT_FILE 輸入內容 CSV 檔案的路徑。 input.csv
OUTPUT_FILE 輸出 CSV 檔案的路徑。 output.csv
NUM_OF_THREADS 用於專責執行功能檢查的執行緒數量。 500
START_INDEX (非必要) CSV 檔案中用來開始執行檢查的值。 5
END_INDEX (非必要) CSV 檔案中用於結束檢查的值。 500
指令碼執行完畢後,請開啟輸出 CSV 檔案查看結果。