Para verificar si el dispositivo de un usuario es compatible con RCS y puede comunicarse con un agente de RBM, puedes solicitar las capacidades del dispositivo. Identificar qué funciones admite un dispositivo, si es que admite alguna, permite que tu agente adapte la conversación a las capacidades del dispositivo y evite presentar interacciones que sean difíciles o imposibles de completar para el usuario.
Si el dispositivo de un usuario no es capaz de recibir mensajes RCS, puedes comunicarte con él a través de otros servicios, como SMS o MMS.
Verifica las capacidades del dispositivo
El siguiente código envía una verificación de capacidad y espera una respuesta. Para conocer las opciones de formato y valores, consulta 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");
Respuesta de capacidad
Después de ejecutar una verificación de capacidades, la plataforma de RBM devuelve una lista con formato JSON de las funciones que admite el dispositivo especificado.
{ "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" ] }
La solicitud devuelve una respuesta o un error.
Se muestra una respuesta correcta solo si el MSISDN (número de teléfono) se conectó al servicio de RCS en los últimos 31 días. Esto significa que el dispositivo del usuario se comunicó con nuestro servidor de RCS dentro de ese período. Los dispositivos en línea y los que tienen habilitado el RCS se registran cada 1 a 4 horas en promedio.
Si un usuario mueve su tarjeta SIM a un dispositivo diferente compatible con RCS, se quita la asociación del dispositivo anterior y se crea una nueva, lo que actualiza las capacidades del dispositivo en el servicio de RCS.
Si se coloca una tarjeta SIM en un dispositivo en el que un operador o fabricante inhabilitó los RCS, o si la tarjeta SIM permanece sin usarse, el servicio de RCS intentará entregar mensajes al dispositivo asociado anteriormente durante un máximo de 31 días.
Estos son los motivos por los que se producen los errores 404:
No se puede comunicar con el usuario a través de RBM, por ejemplo, si su dispositivo no admite RCS.
El usuario tiene RCS, pero tu agente no se lanzó en su red móvil.
Filas sin conexión
Los mensajes se ponen en cola durante un máximo de 31 días y se entregan cuando el dispositivo vuelve a estar en línea. Esto significa que, incluso si un dispositivo se desconecta durante un período prolongado (hasta 31 días), los mensajes en cola se seguirán entregando cuando se restablezca la conexión, siempre y cuando el MSISDN se haya conectado al servicio de RCS en los últimos 31 días.
Verificaciones de capacidad masivas
Para estimar la cantidad de usuarios a los que se puede llegar con RBM, realiza una verificación de capacidades masiva. Las verificaciones masivas indican si se puede comunicar con un número de teléfono, pero no qué funciones admite.
Para cada verificación de capacidad masiva, debes proporcionar entre 500 y 10,000 números de teléfono únicos. Para verificar más números, realiza varias verificaciones. Puedes realizar hasta 600 llamadas por minuto. Usa el Bulk Capability Check Script para usar archivos CSV como formato de entrada. Las verificaciones masivas se leen desde la caché de capacidades, que los clientes actualizan de forma orgánica con RCS. Los agentes no solicitan las capacidades de cada dispositivo directamente. Por este motivo, es posible que los resultados no estén actualizados.
Las verificaciones de capacidad masivas devuelven una lista de los números a los que puede comunicarse tu agente en las operadoras en las que se lanzó, así como estimaciones de la cantidad total de usuarios a los que se puede llegar en todas las operadoras. Consulta Respuesta de verificación de capacidad masiva.
Estima la cantidad total de usuarios a los que se puede llegar
Si bien las respuestas de la verificación masiva incluyen una lista de números de teléfono a los que se puede llamar de inmediato en los operadores lanzados de tu agente (reachableUsers), las respuestas también incluyen dos valores que pueden ayudarte a estimar la cantidad total de usuarios a los que se puede llamar en todos los operadores.
Cómo funciona
Cuando tu agente realiza una verificación de capacidad masiva, RBM toma una muestra aleatoria de aproximadamente el 75% de esos números para verificar todos los operadores (informados en totalRandomSampleUserCount). RBM también devuelve el recuento de números a los que se puede acceder desde RBM de la muestra aleatoria, independientemente del estado de lanzamiento del operador (reachableRandomSampleUserCount). Si divides reachableRandomSampleUserCount entre totalRandomSampleUserCount, puedes estimar el porcentaje de números a los que podría llegar tu agente si se lanzara en todos los operadores.
Por ejemplo, si especificas 5,000 números de teléfono en la verificación de capacidad masiva y RBM muestrea de forma aleatoria aproximadamente el 75% de los números especificados, totalRandomSampleUserCount puede ser 3750. Si reachableRandomSampleUserCount es 3000, el 80% de los números muestreados fueron accesibles.
Ten en cuenta el muestreo aleatorio
Probar muestras aleatorias puede generar variaciones en los porcentajes. Para tener en cuenta los efectos del muestreo aleatorio, ejecuta verificaciones de capacidad masivas con cantidades más grandes de números de teléfono. También puedes realizar verificaciones con los mismos lotes de números varias veces y, luego, promediar los resultados para normalizar el comportamiento del muestreo aleatorio.
Envía una verificación de capacidades masiva
El siguiente código envía una verificación de capacidad masiva y espera una respuesta. Para conocer las opciones de formato y valores, consulta users.batchGet.
Los números de teléfono deben estar en formato E.164 (por ejemplo, “+12223334444”), y la lista debe contener entre 500 y 10,000 números de teléfono únicos.
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"}));
Respuesta de verificación de capacidad masiva
Después de ejecutar una verificación de capacidades masiva, RBM devuelve una respuesta con formato JSON.
{
"reachableUsers": [
"PHONE_NUMBER"
],
"totalRandomSampleUserCount": "COUNT_OF_SAMPLE",
"reachableRandomSampleUserCount": "REACHABLE_FROM_SAMPLE"
}| Campo | Descripción |
|---|---|
reachableUsers
|
Es una lista de usuarios a los que se puede llegar en las empresas de transporte lanzadas del agente. |
totalRandomSampleUserCount
|
Es el recuento de una muestra aleatoria de números especificados. Por lo general, es alrededor del 75% de los números especificados. |
reachableRandomSampleUserCount
|
Es el recuento de números de la muestra aleatoria a los que se puede llegar con el RBM en todos los operadores, independientemente de los operadores en los que se lance el agente. Este recuento se usa para proporcionar una estimación aproximada de la cantidad total de usuarios a los que se puede llegar a través de todos los operadores. |
reachableUsersMap
|
Solo salida. Es un mapa del ID de la empresa de transporte a una lista de usuarios a los que se puede llegar a través de esa empresa. Este campo solo se completa para los números de teléfono de EE.UU. |
Herramienta: Secuencia de comandos de verificación de capacidad masiva
El Bulk Capability Check Script (accede para descargar) realiza verificaciones de capacidades de forma masiva con archivos CSV como formatos de entrada y salida. La secuencia de comandos analiza el archivo CSV de MSISDN y usa el SDK de RBM para verificar las capacidades de cada dispositivo que aparece en la lista.
Una máquina virtual con 2 CPU y 4 GB de RAM que ejecuta la secuencia de comandos con 500 subprocesos puede alcanzar aproximadamente 1, 000 QPS, pero los QPS generales dependen de la máquina utilizada, el país de los dispositivos, la configuración regional de tu agente y el extremo de la API que se usa.
Requisitos previos
Antes de usar la herramienta para realizar una verificación de capacidades masiva, obtén lo siguiente:
- Ruta de acceso a un archivo CSV con los MSISDN para realizar verificaciones de capacidad
- Ruta de acceso a la clave de la cuenta de servicio del agente en tu máquina de desarrollo
Además, debes tener instalado el siguiente software en tu máquina de desarrollo:
- Apache Maven 3.3.9 o una versión posterior
- Java 8
Configurar
Para configurar tu máquina de desarrollo para una verificación de capacidad masiva, haz lo siguiente:
- Descarga y extrae la Guion de verificación de capacidad masiva (accede para descargar).
- Sigue los pasos que se indican en el archivo README.
Ejecuta una verificación de capacidad masiva
Para realizar una verificación masiva, sigue estos pasos:
- En una terminal, navega al directorio raíz de la secuencia de comandos.
Ejecuta los siguientes comandos:
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"Reemplaza las variables por los valores que identificaste.
Reemplazar Con Ejemplo AGENT_ID ID del agente de RCS para empresas. welcome-botINPUT_FILE Es la ruta de acceso al archivo CSV de entrada. input.csvOUTPUT_FILE Ruta de acceso al archivo CSV de salida. output.csvNUM_OF_THREADS Cantidad de subprocesos que se dedicarán a las verificaciones de capacidad. 500START_INDEX Opcional. Es el valor del archivo CSV con el que se comenzarán a ejecutar las verificaciones. 5END_INDEX Opcional. Valor en el archivo CSV después del cual se detienen las verificaciones. 500Cuando se complete la secuencia de comandos, abre el archivo CSV de salida para ver los resultados.