Todo lo que debes saber acerca del uso de las subcuentas de Twilio

February 24, 2021
Redactado por
Revisado por
Liz Moy
Twilion

En esta publicación, aprenderás sobre los beneficios de utilizar subcuentas y cómo enviar mensajes a través de ellas. Las subcuentas te permiten separar tu uso, números y configuraciones mientras compartes un equilibrio con tu cuenta principal. Son una gran manera de segmentar tu uso de Twilio.  

A continuación, se muestran los elementos principales que trabajaremos en esta publicación:

  • Requisitos técnicos
  • ¿Qué son las subcuentas Twilio y por qué debes utilizarlas?
  • Uso de subcuentas para enviar un mensaje

 

Requisitos técnicos

  • Cuenta de Twilio gratuita: regístrate aquí a través de este enlace y obtendrás un crédito adicional de USD 10 cuando realices la actualización.
  • Un número de teléfono Twilio.
  • Un número de teléfono celular verificado (para recibir mensajes SMS).
  • Estar familiarizado con el envío de solicitudes de API REST. Aquí encontrarás consejos útiles para ejecutar una cURL desde Bash o zsh, o puedes utilizar una herramienta como Postman.

¿Qué son las subcuentas Twilio y por qué debes utilizarlas?

Las subcuentas son contenedores que separan los recursos que pertenecen a un proyecto de Twilio (principal). Por ejemplo, analicemos la empresa ficticia Owlie Notifications. Owlie Notifications ofrece una plataforma SaaS que permite a los clientes realizar llamadas. Owlie Notifications tienen alrededor de 50 clientes.

Owlie Notifications tiene dos opciones para crear su estructura de cuenta de Twilio:

  1. Crea una cuenta de Twilio, que esté vinculada a un identificador denominado SID de cuenta, que es único para su cuenta y que siempre lleva el prefijo "AC". Siempre que Owlie Notifications haga una solicitud de API, utilizará el SID para esa cuenta en su solicitud de API. Por ejemplo, digamos que su SID de cuenta es AC123.
  2. Crea una cuenta Twilio (SID de cuenta = AC123, también llamada cuenta principal) de la misma manera que se sugiere en la opción uno; sin embargo, también creará una subcuenta para cada uno de sus 50 clientes (50 subcuentas). Cada una de las 50 subcuentas obtendrá su propio SID de cuenta. Por lo tanto, cuando Owlie Notifications realiza una solicitud de API para un cliente, utilizará el SID de la subcuenta correspondiente en lugar del SID de la cuenta principal.

Esta es la razón por la que elegir la opción dos es lo óptimo.

Beneficios clave de las subcuentas

Puedes segmentar el proceso de facturación 

Si Owlie Notifications eligiera no utilizar subcuentas, debería realizar un seguimiento de todo el uso para cada cliente en su extremo, lo cual es un trabajo adicional y es posible que se cometan errores. Debido a que las subcuentas actúan como contenedores, puedes utilizar la API de uso de Twilio para obtener datos de facturación específicos para una subcuenta, lo que reduce la lógica comercial necesaria para implementar el seguimiento individual del cliente.

Permite el aprovisionamiento de recursos

Las subcuentas permiten que se agreguen recursos (como números de teléfono) a la subcuenta específica. Algo que se debe tener en cuenta es que la mayoría de los recursos pueden pertenecer a una sola subcuenta a la vez. Esto puede complicarse si mueven números entre cuentas constantemente. Por ejemplo, tendrás que considerar esta lógica si cierras una subcuenta, pero deseas conservar el número de teléfono. Afortunadamente, Twilio te permite mover los números de teléfono entre cuentas.

Te da control adicional sobre varias cuentas del mismo proyecto: Con las subcuentas, puedes suspender, cerrar y reactivar subcuentas según las necesidades de tus clientes.

Consideraciones antes de migrar a las subcuentas

Para los clientes que usan Twilio para enviar mensajes, Twilio ayudará a administrar las cancelaciones de suscripción de tus clientes, como cuando un usuario final responde STOP (DETENER) a un mensaje. Twilio conserva esta lista de cancelación de subscripción en el nivel de cuenta.

Esto significa que si un usuario final respondió STOP a un número de teléfono y ese número de teléfono se mueve de un proyecto a una subcuenta, que tiene un SID de cuenta único, esa solicitud para cancelar la suscripción no funciona. Si no has estado haciendo un seguimiento de las cancelaciones, comienza ahora para asegurarte de que tienes la lista más actualizada de suscriptores.

Uso de subcuentas para enviar un mensaje

Es posible que te preguntes: "¿Qué pasa si aún no uso subcuentas? ¿Qué tan difícil es la migración?".

Imagina que Owlie Notifications ha estado utilizando una sola cuenta para los 50 clientes. Ahora tienen clientes que desean enviar mensajes SMS. A continuación, se indican los pasos que probablemente tendrá que seguir Owlie Notifications:

Utilizarás la API REST de subcuentas para hacer esto de forma programática; sin embargo, puedes optar por utilizar las bibliotecas auxiliares del lado del servidor si lo prefieres.

En primer lugar, inicia sesión en tu consola de Twilio. Verás los valores del SID de Cuenta y del token de autenticación asignados a tu cuenta en el panel de control:

SID de la cuenta Twilio y token de autenticación en la consola

En los siguientes ejemplos, utilizarás el SID de la cuenta y el token de autenticación para la cuenta de Twilio que acabas de crear o copiar. No olvides reemplazarlos en todos los marcadores de posición que aparecen a continuación.

Crear una subcuenta

Continuemos con FalconFlights, los clientes de Owlie Notifications, y creemos una subcuenta para ellos.

Solicitud

Desde tu terminal o símbolo del sistema, ejecuta el siguiente comando para realizar la solicitud, procurando reemplazar los valores de los marcadores de posición por el SID de su cuenta principal y el token de autenticación.

curl -X POST https://api.twilio.com/2010-04-01/Accounts.json \
--data-urlencode "FriendlyName=FalconFlights
" \
-u <INSERT YOUR PARENT ACCOUNT SID>:<INSERT YOUR PARENT AUTH TOKEN>

Respuesta

Después de ejecutar el comando, recibirás una respuesta como esta:

{
   "status": "active",
   "date_updated": "Wed, 17 Feb 2021 15:12:01 +0000",
   "auth_token": "ACxxxxx",
   "friendly_name": "FalconFlights",
   "owner_account_sid": "ACxxxx",
   "uri": "/2010-04-01/Accounts/ACxxx.json",
   "sid": "ACxxx
",
   "date_created": "Wed, 17 Feb 2021 15:12:01 +0000",
   "type": "Full",
   "subresource_uris": {
...
   }
}

Esta respuesta incluye algunos datos clave.

Hay una nueva cuenta llamada FalconFlights, que tiene sus propios SID de cuenta y token de autenticación.

El owner_account_sid debe coincidir con el SID de tu cuenta de proyecto (principal) (Owlie Notifications).

Registra el SID y el token de autenticación de la subcuenta, ya que los utilizarás más adelante.

Transferir un número de teléfono

Anteriormente, mencioné el caso en el que es posible que desees transferir un número de teléfono. Aquí se explica cómo hacerlo. Si no tienes un número de teléfono de Twilio, puedes comprar uno a través de la consola de Twilio o la API REST.

Para comenzar a transferir tu número de teléfono de Twilio entre la cuenta principal y una subcuenta, ve a la sección Active Numbers (Números activos) de la consola. Haz clic en un número para obtener una vista con las opciones de configuración.

Ahí es donde puedes encontrar el SID de tu número de teléfono (PNxxx).

Encontrar un identificador de número de teléfono en Twilio

Solicitud

Es importante asegurarte de utilizar el SID de la cuenta principal en los encabezados, ya que la cuenta principal es propietaria del número de teléfono.

Ejecuta el siguiente comando en tu terminal:

curl -X POST https://api.twilio.com/2010-04-01/Accounts/<INSERT PARENT ACCOUNT SID>/IncomingPhoneNumbers/<INSERT PHONE NUMBER SID>.json \
--data-urlencode "AccountSid=<INSERT SUBACCOUNT SID>" \
-u <INSERT YOUR PARENT ACCOUNT SID>:<INSERT YOUR PARENT AUTH TOKEN>

Nota: Al mover los números de teléfono a otra cuenta, se conservará la URL de Voice y SMS.

Respuesta

{
    "sid": "PNxxx",
    "account_sid": "ACxxx",
    "friendly_name": "(415) 874-0103",
    "phone_number": "+14158740103",
    "voice_url": "https://demo.twilio.com/welcome/voice/",
    "voice_method": "POST",
    "voice_fallback_url": null,
    "voice_fallback_method": "POST",
    "voice_caller_id_lookup": false,
    "date_created": "Wed, 17 Feb 2021 15:17:28 +0000",
    "date_updated": "Wed, 17 Feb 2021 15:23:39 +0000",
    "sms_url": "https://demo.twilio.com/welcome/sms/reply",
    "sms_method": "POST",
    "sms_fallback_url": "",
    "sms_fallback_method": "POST",
    "address_requirements": "none",
    "beta": false,
    "capabilities": {
        "voice": true,
        "sms": true,
        "mms": true,
        "fax": true
    },
    "voice_receive_mode": "voice",
    "status_callback": "",
    "status_callback_method": "POST",
    "api_version": "2010-04-01",
    "voice_application_sid": null,
    "sms_application_sid": "",
    "origin": "twilio",
    "trunk_sid": null,
    "emergency_status": "Inactive",
    "emergency_address_sid": null,
    "address_sid": null,
    "identity_sid": null,
    "bundle_sid": null,
    "uri": "/2010-04-01/Accounts/AC1bcc67e32e161e04aaacc159b2e86601/IncomingPhoneNumbers/PNd7c52583c2ffabfe2a05a165e48e3e68.json",
    "status": "in-use"
}

Crear un servicio de mensajería

Crea un servicio de mensajería en la subcuenta que acabas de crear. Un servicio de mensajería es un recurso que puede actuar como un contenedor de tus números de teléfono y proporciona un software que te facilita la vida al enviar mensajes a escala.

Para esta solicitud, usarás el SID de la cuenta y el token de autenticación asociados con la subcuenta.

Solicitud

curl -X POST https://messaging.twilio.com/v1/Services \
--data-urlencode "FriendlyName=falconFlightNotifications" \
-u <INSERT YOUR SUBACCOUNT SID>:<INSERT YOUR SUBACCOUNT AUTH TOKEN>

Respuesta

La respuesta te proporcionará un SID de servicio de mensajería (MGxxxx). Usarás esto en los siguientes pasos, así que tenlo a mano.

Verás varios atributos diferentes en tu objeto de respuesta. Si deseas obtener más información sobre todas las funciones de un servicio de mensajería, consulta la documentación del servicio de mensajería.

{
   "fallback_method": "POST",
   "fallback_to_long_code": true,
   "date_updated": "2021-02-17T15:28:03Z",
   "synchronous_validation": false,
   "sticky_sender": true,
   "inbound_method": "POST",
   "friendly_name": "falconFlightNotifications",
   "mms_converter": true,
   "validity_period": 14400,
   "account_sid": "ACxxx",
   "fallback_url": null,
   "inbound_request_url": null,
   "url": "https://messaging.twilio.com/v1/Services/MGa91155a0d582afdde110a606465d1daa",
   "sid": "MGxxxx",
   "date_created": "2021-02-17T15:28:03Z",
   "smart_encoding": true,
   "scan_message_content": "inherit",
   "area_code_geomatch": true,
   "status_callback": null,
   "links": {
      ...
   }
}

Agregar número de teléfono al servicio de mensajería

Ahora que tienes un servicio de mensajería, puedes utilizar la API de servicios para agregar tu número de teléfono al servicio de mensajería.

Solicitud

curl -X POST https://messaging.twilio.com/v1/Services/<INSERT YOUR MESSAGING SERVICE SID/PhoneNumbers \
--data-urlencode "PhoneNumberSid=<INSERT PHONE NUMBER SID>" \
-u <INSERT YOUR SUBACCOUNT SID>:<INSERT YOUR SUBACCOUNT AUTH TOKEN>

Respuesta

El número de teléfono se agregó con éxito a tu servicio de mensajería.

{
   "phone_number": "+14158740103",
   "date_updated": "2021-02-17T15:30:47Z",
   "capabilities": [
       "MMS",
       "SMS",
       "Voice"
   ],
   "account_sid": "AC1bcc67e32e161e04aaacc159b2e86601",
   "url": "https://messaging.twilio.com/v1/Services/MGxxx/PhoneNumbers/PNxxx",
   "country_code": "US",
   "sid": "PNxxxx",
   "date_created": "2021-02-17T15:30:47Z",
   "service_sid": "MGxxxx"
}

Enviar un mensaje

Ahora que tienes una nueva subcuenta, un servicio de mensajería con un número de teléfono te permitirá enviar un mensaje.

Para enviar un mensaje a través del servicio de mensajería, utiliza el SID de servicio de mensajería (MGxxx) en tu solicitud.

Asegúrate de que el número de teléfono en el campo To esté verificado. Si el número no está verificado, puedes agregar un número de teléfono verificado mediante la consola de Twilio.

Solicitud

curl -X POST https://api.twilio.com/2010-04-01/Accounts/<INSERT YOUR SUBACCOUNT SID>/Messages.json \
--data-urlencode "Body=Hi there" \
--data-urlencode "From=<INSERT YOUR MESSAGING SERVICE SID>
" \
--data-urlencode "To=<INSERT YOUR PHONE NUMBER E.164 FORMAT>" \
-u <INSERT YOUR SUBACCOUNT SID>:<INSERT YOUR SUBACCOUNT AUTH TOKEN>
{
   "sid": "SMb319786dcd44433b905d0e8acd2b33f3",
   "date_created": "Wed, 17 Feb 2021 15:39:56 +0000",
   "date_updated": "Wed, 17 Feb 2021 15:39:56 +0000",
   "date_sent": null,
   "account_sid": "ACxxx",
   "to": "+12083186206",
   "from": null,
   "messaging_service_sid": "MGxxx",
   "body": "Hi there",
   "status": "accepted",
   "num_segments": "0",
   "num_media": "0",
   "direction": "outbound-api",
   "api_version": "2010-04-01",
   "price": null,
   "price_unit": null,
   "error_code": null,
   "error_message": null,
   "uri": "/2010-04-01/Accounts/ACxxx/Messages/SMb319786dcd44433b905d0e8acd2b33f3.json",
   "subresource_uris": {
       "media": "/2010-04-01/Accounts/ACxxx/Messages/SMb319786dcd44433b905d0e8acd2b33f3/Media.json"
   }
}

Una vez que se realice esto con éxito, deberías recibir un mensaje como el que se muestra a continuación:

Demostración de texto de una subcuenta

¡Excelente, funcionó!

Conclusión: las subcuentas son poderosas

Recapitulemos todo lo que lograste:

  1. Creaste una subcuenta.
  2. Transferiste un número de teléfono de la cuenta principal a una subcuenta.
  3. Creaste un servicio de mensajería en la subcuenta.
  4. Agregaste tu número de teléfono al servicio de mensajería.
  5. Enviaste un mensaje a través del servicio de mensajería de la subcuenta.

¡Esperamos que aprecies el poder de las subcuentas! Este artículo es apenas el comienzo. Si te gustó este blog, podría interesarte lo siguiente:

Josh es ingeniero sénior de soluciones en Twilio y se especializa en ayudar a nuestros socios proveedores independientes de software (ISV) a crear arquitecturas y negocios escalables en Twilio. Puedes comunicarte con él en jsiverson@twilio.com.