Verificaciones de capacidades

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);
});
Este código es un fragmento de un agente de muestra de 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");
Este código es un fragmento de un agente de muestra de 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')
Este código es un fragmento de un agente de muestra de 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");
Este código es un fragmento de un agente de muestra de RBM.

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);
});
Este código usa el agente de muestra de RBM.

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"));
Este código usa el agente de muestra de RBM.

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'])
Este código usa el agente de muestra de 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"}));
Este código usa el agente de muestra de RBM.

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:

Configurar

Para configurar tu máquina de desarrollo para una verificación de capacidad masiva, haz lo siguiente:

  1. Descarga y extrae la Guion de verificación de capacidad masiva (accede para descargar).
  2. 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:

  1. En una terminal, navega al directorio raíz de la secuencia de comandos.
  2. 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-bot
    INPUT_FILE Es la ruta de acceso al archivo CSV de entrada. input.csv
    OUTPUT_FILE Ruta de acceso al archivo CSV de salida. output.csv
    NUM_OF_THREADS Cantidad de subprocesos que se dedicarán a las verificaciones de capacidad. 500
    START_INDEX Opcional. Es el valor del archivo CSV con el que se comenzarán a ejecutar las verificaciones. 5
    END_INDEX Opcional. Valor en el archivo CSV después del cual se detienen las verificaciones. 500
  3. Cuando se complete la secuencia de comandos, abre el archivo CSV de salida para ver los resultados.