如要檢查使用者的裝置是否已啟用 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", "PDF_IN_RICH_CARDS" ] }
要求會傳回回應或錯誤。
如果 MSISDN (電話號碼) 在過去 31 天內連線至 RCS 服務,系統只會傳回成功回應。也就是說,使用者的裝置在該時間範圍內已向我們的 RCS 伺服器回報狀態。平均每 1 到 4 小時,線上裝置和啟用 RCS 的裝置會回報一次狀態。
如果使用者將 SIM 卡移到其他支援 RCS 的裝置,系統會移除先前的裝置關聯,並建立新的關聯,更新 RCS 服務中的裝置功能。
如果將 SIM 卡插入電信業者或製造商已停用 RCS 的裝置,或 SIM 卡仍未使用,RCS 服務仍會嘗試將訊息傳送至先前關聯的裝置,最多 31 天。
404 錯誤的成因如下:
無法透過 RBM 聯絡使用者,例如使用者的裝置不支援 RCS。
使用者有 RCS,但代理程式未在他們的行動網路上啟動。
離線排隊
訊息最多會排隊 31 天,裝置恢復連線後就會傳送。也就是說,即使裝置離線時間較長 (最多 31 天),只要 MSISDN 在過去 31 天內連線到 RCS 服務,裝置重新連線後,系統仍會傳送佇列中的訊息。
大量檢查功能
如要預估可透過 RBM 觸及的使用者人數,請進行大量功能檢查。大量檢查功能會指出電話號碼是否可接通,但不會顯示電話號碼支援哪些功能。
每次大量檢查功能時,您必須提供 500 至 10,000 個不重複的電話號碼。如要檢查多個號碼,請執行多次檢查。每分鐘最多可發出 600 個呼叫。使用 Bulk Capability Check Script,將 CSV 檔案做為輸入格式。大量檢查功能快取讀取作業,該快取是由用戶端使用 RCS 自然更新。代理程式不會直接要求每部裝置的功能。因此結果可能不是最新資訊。
大量功能檢查會傳回一份清單,列出代理程式可在已推出服務的電信業者上觸及的號碼,以及所有電信業者可觸及的使用者總數估計值。請參閱「大量功能檢查回應」。
預估可觸及的使用者總數
大量檢查回應會列出代理程式已啟用的電信業者可立即聯絡的電話號碼 (reachableUsers),回應也會包含兩個值,可協助您估算所有電信業者可聯絡的使用者總數。
運作方式
代理程式執行大量功能檢查時,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); });
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 聯絡的號碼數量 (不論代理程式在哪些電信業者上啟動)。這項計數用於粗略估算所有電信業者可觸及的使用者總數。 |
reachableUsersMap
|
僅供輸出。將貨運公司 ID 對應至該貨運公司可聯絡的使用者清單。這個欄位只會填入美國電話號碼。 |
工具:大量功能檢查指令碼
大量功能檢查指令碼 (登入即可下載) 會使用 CSV 檔案做為輸入和輸出格式,執行大量功能檢查。這項指令碼會剖析 MSISDN 的 CSV 檔案,並使用 RBM SDK 檢查每個列出裝置的功能。
如果虛擬機器的 CPU 數量為 2 個,RAM 大小為 4 GB,且執行指令碼的執行緒數量為 500 個,則每秒查詢次數 (QPS) 大約可達 1,000 次,但整體 QPS 取決於使用的機器、裝置所在國家/地區、代理程式的區域設定,以及使用的 API 端點。
必要條件
使用這項工具執行大量功能檢查前,請先取得下列資訊:
- CSV 檔案的路徑,其中包含要執行功能檢查的 MSISDN
- 開發機器上代理程式服務帳戶金鑰的路徑
此外,您還需要在開發機器上安裝下列軟體:
- 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 服務專員的 ID。 welcome-botINPUT_FILE 輸入 CSV 檔案的路徑。 input.csvOUTPUT_FILE 輸出 CSV 檔案的路徑。 output.csvNUM_OF_THREADS 專用於功能檢查的執行緒數量。 500START_INDEX (選用步驟) CSV 檔案中的值,用來開始執行檢查。 5END_INDEX (選用步驟) CSV 檔案中的值,用於結束後續檢查。 500指令碼執行完畢後,請開啟輸出 CSV 檔案,查看結果。