Compartir a través de


Inicio rápido: Configuración del enrutamiento de voz mediante programación

Configuración de reglas de enrutamiento de voz de salida para el enrutamiento directo de Azure Communication Services.

Requisitos previos

Nota

Puede encontrar más ejemplos de uso para SipRoutingClient en GitHub.

Agregar un controlador de límites de sesión

  1. En el panel izquierdo, en Llamada de voz: RTC, seleccione Enrutamiento directo. En la pestaña Controlador de límites de sesión, seleccione Configurar.

  2. Escriba un FQDN y un puerto de señalización para el SBC. Entre los requisitos para el FQDN de SBC se incluyen:

    • La parte de dominio del FQDN debe comprobarse antes de que pueda agregarlo a la configuración de enrutamiento directo, como se mencionó anteriormente en los requisitos previos.
    • El certificado de SBC debe coincidir con el nombre. Se permiten los certificados comodín.
    • No puede usar los dominios *.onmicrosoft.com y *.azure.com para el FQDN.

    Para obtener la lista completa de requisitos, vea Requisitos de infraestructura de enrutamiento directo de Azure.

    Screenshot of adding a session border controller on the panel for configuring direct routing.

  3. Seleccione Siguiente. Si todo está configurado correctamente, deberías ver el estado de SBC como Activo en Azure Portal.

    Screenshot of SBC connection properties.

Importante

Antes de realizar o recibir llamadas, asegúrese de que el estado de SBC sea En línea

Crear reglas de enrutamiento de voz

Screenshot of outgoing voice routing configuration.

Asigne un nombre a la ruta de voz, especifique el patrón numérico con expresiones regulares y seleccione el SBC para ese patrón. A continuación se muestran algunos ejemplos de expresiones regulares:

  • ^\+\d+$: coincide con un número de teléfono con uno o varios dígitos que comienza con un signo más.
  • ^\+1(\d{10})$: corresponde a un número de teléfono con diez dígitos después de +1.
  • ^\+1(425|206)(\d{7})$: coincide con un número de teléfono que comienza con +1425 o +1206 seguido de siete dígitos.
  • ^\+0?1234$: coincide con números de teléfono +01234 y +1234.

Para obtener más información sobre expresiones regulares, consulte Información general de expresiones regulares .NET.

Puede seleccionar varios CLS para un solo patrón. En tal caso, el algoritmo de enrutamiento los elegirá en orden aleatorio. También puede especificar el patrón numérico exacto más de una vez. La fila más alta tiene mayor prioridad. Si todos los SBC asociados a esa fila no están disponibles, se selecciona la siguiente fila. De este modo, se crean escenarios de enrutamiento complejos.

Eliminar la configuración de enrutamiento directo

Para eliminar una ruta de voz:

  1. En el panel izquierdo, en Llamada de voz: RTC, vaya a Enrutamiento directo.
  2. En la pestaña Rutas de voz, seleccione las casillas de la ruta (o rutas) que desea eliminar.
  3. Seleccione Quitar.

Para eliminar un CLS:

  1. En el panel izquierdo, en Llamada de voz: RTC, vaya a Enrutamiento directo.
  2. En la pestaña Controladores de límites de sesión, seleccione Configurar.
  3. Borre los campos FQDN y Puerto del CLS que quiera quitar y, a continuación, seleccione Siguiente.
  4. En la pestaña Rutas de voz, revise la configuración del enrutamiento de voz. Realice los cambios según sea necesario y, a continuación, seleccione Guardar.

Al quitar el SBC asociado a una ruta de voz, puede elegir otro SBC para la ruta en la pestaña Rutas de voz. Se eliminarán las rutas de voz sin SBC.

Requisitos previos

Código final

Busque el código finalizado de este inicio rápido en GitHub.

También puede encontrar más ejemplos de uso para SipRoutingClient en GitHub.

Creación de una aplicación de C#

En una ventana de la consola, como Símbolo del sistema, PowerShell o Bash, use el comando dotnet new para crear una nueva aplicación de consola:

    dotnet new console -o DirectRoutingQuickstart

Este comando crea un sencillo proyecto "Hola mundo" de C# con un solo archivo de origen: Program.cs.

Cambie el directorio a la carpeta de la aplicación recién creada y use el comando dotnet build para compilar la aplicación:

    cd DirectRoutingQuickstart
    dotnet build

Instalar el paquete

Mientras sigue en el directorio de aplicaciones, instale la biblioteca cliente de PhoneNumbers de Azure Communication Services para .NET con el comando dotnet add package:

    dotnet add package Azure.Communication.PhoneNumbers --version 1.1.0

Agregue la directiva using a la parte superior de Program.cs para incluir el espacio de nombres:

using Azure.Communication.PhoneNumbers.SipRouting;

Autenticar el cliente

Autentique clientes de números de teléfono utilizando una cadena de conexión de un recurso de Azure Communication Services:

// Get a connection string to the Azure Communication Services resource.
var connectionString = "<connection_string>";
var client = new SipRoutingClient(connectionString);

Configurar una configuración de enrutamiento directo

En los requisitos previos, ha comprobado la propiedad del dominio. Los pasos siguientes son crear troncos (agregar el SBC) y crear rutas de voz.

Crear o actualizar troncos

El enrutamiento directo de Azure Communication Services solo permite la comunicación con SBC registrados. Para registrar un SBC, necesita su FQDN y puerto:

// Register your SBCs by providing their fully qualified domain names and port numbers.
var usSbcFqdn = "sbc.us.contoso.com";
var euSbcFqdn = "sbc.eu.contoso.com";
var sbcPort = 5061;

var usTrunk = new SipTrunk(usSbcFqdn, sbcPort);
var euTrunk = new SipTrunk(euSbcFqdn, sbcPort);

await client.SetTrunksAsync(new List<SipTrunk> { usTrunk, euTrunk });

Creación o actualización de rutas

Proporcione reglas de enrutamiento para las llamadas salientes. Cada regla consta de dos partes: un patrón regex que debe coincidir con un número de teléfono marcado y el FQDN de un tronco registrado donde se enruta la llamada.

El orden de las rutas determina la prioridad de las rutas. La primera ruta que coincida con la expresión regular se seleccionará para una llamada.

En este ejemplo, crea una ruta para números que comienzan por +1 y una segunda ruta para números que comienzan por solo +:

var usRoute = new SipTrunkRoute("UsRoute", "^\\+1(\\d{10})$", trunks: new List<string> { usSbcFqdn });
var defaultRoute = new SipTrunkRoute("DefaultRoute", "^\\+\\d+$", trunks: new List<string> { usSbcFqdn, euSbcFqdn });

await client.SetRoutesAsync(new List<SipTrunkRoute> { usRoute, defaultRoute });

Actualizar una configuración de enrutamiento directo

Puede actualizar las propiedades de un tronco específico sobrescribiendo el registro con el mismo FQDN. Por ejemplo, puede establecer un nuevo valor de puerto de SBC:

var usTrunk = new SipTrunk("sbc.us.contoso.com", 5063);
await client.SetTrunkAsync(usTrunk);

Use el mismo método para crear y actualizar reglas de enrutamiento. Al actualizar las rutas, envíelas todas en una única actualización. La nueva configuración de enrutamiento sobrescribe completamente la anterior.

Eliminar la configuración de enrutamiento directo

No se puede editar ni quitar una sola ruta de voz. Debe sobrescribir toda la configuración de enrutamiento de voz. Este es un ejemplo de una lista vacía que quita todas las rutas y troncos:

//delete all configured voice routes
await client.SetRoutesAsync(new List<SipTrunkRoute>());

//delete all trunks
await client.SetTrunksAsync(new List<SipTrunk>());

Puede usar el ejemplo siguiente para eliminar un único tronco (SBC), si no hay rutas de voz que lo usen. Si el SBC aparece en cualquier ruta de voz, elimine esa ruta primero.

await client.DeleteTrunkAsync("sbc.us.contoso.com");

Requisitos previos

Código final

Busque el código finalizado de este inicio rápido en GitHub.

También puede encontrar más ejemplos de uso para SipRoutingClient en GitHub.

Creación de una aplicación Java

Abra el terminal o la ventana de comandos. Vaya al directorio en el que quiere crear la aplicación Java. A continuación, ejecute el siguiente comando para generar el proyecto de Java a partir de la plantilla maven-archetype-quickstart:

mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

La tarea generate crea un directorio con el mismo nombre que el valor artifactId. En este directorio, el directorio src/main/java contiene el código fuente del proyecto, el directorio src/test/java contiene el origen de la prueba, y el archivo pom.xml es el modelo de objetos del proyecto (POM).

Instalar el paquete

Abra el archivo pom.xml en el editor de texto. Agregue los siguientes elementos de dependencia al grupo de dependencias:

<dependencies>
	<dependency>
		<groupId>com.azure</groupId>
		<artifactId>azure-communication-phonenumbers</artifactId>
		<version>1.1.0</version>
	</dependency>
</dependencies>

Instalación del marco de la aplicación

Desde el directorio del proyecto:

  1. Vaya al directorio /src/main/java/com/communication/quickstart.
  2. Abra el archivo App.java en el editor.
  3. Reemplace la instrucción System.out.println("Hello world!");.
  4. Agregue las directivas import.

Use el código siguiente para empezar:

import com.azure.communication.phonenumbers.siprouting.SipRoutingAsyncClient;
import com.azure.communication.phonenumbers.siprouting.SipRoutingClientBuilder;
import com.azure.communication.phonenumbers.siprouting.models.SipTrunk;
import com.azure.communication.phonenumbers.siprouting.models.SipTrunkRoute;
import static java.util.Arrays.asList;

public class App
{
    public static void main( String[] args ) throws IOException
    {
        System.out.println("Azure Communication Services - Direct Routing Quickstart");
        // Quickstart code goes here
    }
}

Autenticar el cliente

Con SipRoutingClientBuilder, puede usar la autenticación de Microsoft Entra:

// You can find your endpoint and access key from your resource in the Azure portal
String endpoint = "https://<RESOURCE_NAME>.communication.azure.com";

SipRoutingAsyncClient sipRoutingAsyncClient = new SipRoutingClientBuilder()
    .endpoint(endpoint)
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

Como alternativa, también puede usar el punto de conexión y la clave de acceso del recurso de comunicación para la autenticación:

// You can find your connection string from your resource in the Azure portal
String connectionString = "endpoint=https://<RESOURCE_NAME>.communication.azure.com/;accesskey=<ACCESS_KEY>";

SipRoutingAsyncClient sipRoutingAsyncClient = new SipRoutingClientBuilder()
    .connectionString(connectionString)
    .buildClient();

Configurar una configuración de enrutamiento directo

En los requisitos previos, ha comprobado la propiedad del dominio. Los pasos siguientes son crear troncos (agregar el SBC) y crear rutas de voz.

Crear o actualizar troncos

El enrutamiento directo de Azure Communication Services solo permite la comunicación con SBC registrados. Para registrar un SBC, necesita su FQDN y puerto:

sipRoutingAsyncClient.setTrunksWithResponse(asList(
	new SipTrunk("sbc.us.contoso.com", 5061),
	new SipTrunk("sbc.eu.contoso.com", 5061)
)).block();

Creación o actualización de rutas

Proporcione reglas de enrutamiento para las llamadas salientes. Cada regla consta de dos partes: un patrón regex que debe coincidir con un número de teléfono marcado y el FQDN de un tronco registrado donde se enruta la llamada.

El orden de las rutas determina la prioridad de las rutas. La primera ruta que coincida con la expresión regular se seleccionará para una llamada.

En este ejemplo, crea una ruta para números que comienzan por +1 y una segunda ruta para números que comienzan por solo +:

sipRoutingAsyncClient.setRoutes(asList(
	new SipTrunkRoute("UsRoute", "^\\+1(\\d{10})$").setTrunks(asList("sbc.us.contoso.com")),
	new SipTrunkRoute("DefaultRoute", "^\\+\\d+$").setTrunks(asList("sbc.us.contoso.com", "sbc.eu.contoso.com"))
)).block();

Actualizar una configuración de enrutamiento directo

Puede actualizar las propiedades de un tronco específico sobrescribiendo el registro con el mismo FQDN. Por ejemplo, puede establecer un nuevo valor de puerto de SBC:

sipRoutingClient.setTrunk(new SipTrunk("sbc.us.contoso.com", 5063));

Use el mismo método para crear y actualizar reglas de enrutamiento. Al actualizar las rutas, envíelas todas en una única actualización. La nueva configuración de enrutamiento sobrescribe completamente la anterior.

Eliminar la configuración de enrutamiento directo

No se puede editar ni quitar una sola ruta de voz. Debe sobrescribir toda la configuración de enrutamiento de voz. Este es el ejemplo de una lista vacía que quita todas las rutas y troncos.

Agregue dos importaciones:

import java.util.Collections;
import java.util.List;

Use el código siguiente para eliminar una configuración de enrutamiento directo:

//delete all configured voice routes
System.out.println("Delete all routes");
List<SipTrunkRoute> routes = Collections.<SipTrunkRoute> emptyList();
sipRoutingAsyncClient.setRoutes(routes).block();

//delete all trunks
System.out.println("Delete all trunks");
List<SipTrunk> trunks = Collections.<SipTrunk> emptyList();
sipRoutingAsyncClient.setTrunksWithResponse(trunks).block();

Puede usar el ejemplo siguiente para eliminar un único tronco (SBC), si no hay rutas de voz que lo usen. Si el SBC aparece en cualquier ruta de voz, elimine esa ruta primero.

sipRoutingClient.deleteTrunk("sbc.us.contoso.com");

Ejecución del código

Vaya al directorio que contiene el archivo pom.xml y compile el proyecto mediante el comando mvn siguiente:

  mvn clean compile

A continuación, compile el paquete:

  mvn package

Ejecute el siguiente comando mvn para ejecutar la aplicación:

  mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false

Requisitos previos

Código final

Busque el código finalizado de este inicio rápido en GitHub.

También puede encontrar más ejemplos de uso para SipRoutingClient en GitHub.

Creación de una aplicación Node.js

Abra la ventana de comandos o el terminal, cree un nuevo directorio para la aplicación y vaya hasta él:

    mkdir direct-routing-quickstart && cd direct-routing-quickstart

Ejecute npm init -y para crear un archivo package.json con la configuración predeterminada:

   npm init -y

Cree un archivo llamado direct-routing-quickstart.js en la raíz del directorio que creó. Agréguele el siguiente fragmento de código:

async function main() {
    // quickstart code will go here
}

main();

Instalar el paquete

Use el comando npm install para instalar la biblioteca cliente de números de teléfono de Azure Communication Services para JavaScript:

   npm install @azure/communication-phone-numbers --save

La opción --save agrega la biblioteca como dependencia en el archivo package.json.

Autenticar el cliente

Importe la SipRoutingClient desde la biblioteca cliente y cree una instancia con la cadena de conexión. El código recupera la cadena de conexión para el recurso de una variable de entorno denominada COMMUNICATION_SERVICES_CONNECTION_STRING. Aprenda a administrar la cadena de conexión del recurso.

Agregue el siguiente código a direct-routing-quickstart.js:

const { SipRoutingClient } = require('@azure/communication-phone-numbers');

// This code demonstrates how to fetch your connection string
// from an environment variable.
const connectionString = process.env['COMMUNICATION_SERVICES_CONNECTION_STRING'];

// Instantiate the phone numbers client
const sipRoutingClient = new SipRoutingClient(connectionString);

Configurar una configuración de enrutamiento directo

En los requisitos previos, ha comprobado la propiedad del dominio. Los pasos siguientes son crear troncos (agregar el SBC) y crear rutas de voz.

Crear o actualizar troncos

El enrutamiento directo de Azure Communication Services solo permite la comunicación con SBC registrados. Para registrar un SBC, necesita su FQDN y puerto:

  await client.setTrunks([
    {
      fqdn: 'sbc.us.contoso.com',
      sipSignalingPort: 5061
    },{
      fqdn: 'sbc.eu.contoso.com',
      sipSignalingPort: 5061
    }
  ]);

Creación o actualización de rutas

Proporcione reglas de enrutamiento para las llamadas salientes. Cada regla consta de dos partes: un patrón regex que debe coincidir con un número de teléfono marcado y el FQDN de un tronco registrado donde se enruta la llamada.

El orden de las rutas determina la prioridad de las rutas. La primera ruta que coincida con la expresión regular se seleccionará para una llamada.

En este ejemplo, crea una ruta para números que comienzan por +1 y una segunda ruta para números que comienzan por solo +:

   await client.setRoutes([
    {
      name: "UsRoute",
      description: "route's description",
      numberPattern: "^\+1(\d{10})$",
      trunks: [ 'sbc.us.contoso.com' ]
    },{
      name: "DefaultRoute",
      description: "route's description",
      numberPattern: "^\+\d+$",
      trunks: [ 'sbc.us.contoso.com', 'sbc.eu.contoso.com']
    }
  ]);

Actualizar una configuración de enrutamiento directo

Puede actualizar las propiedades de un tronco específico sobrescribiendo el registro con el mismo FQDN. Por ejemplo, puede establecer un nuevo valor de puerto de SBC:

  await client.setTrunk({
    fqdn: 'sbc.us.contoso.com',
    sipSignalingPort: 5063
  });

Use el mismo método para crear y actualizar reglas de enrutamiento. Al actualizar las rutas, envíelas todas en una única actualización. La nueva configuración de enrutamiento sobrescribe completamente la anterior.

Eliminar la configuración de enrutamiento directo

No se puede editar ni quitar una sola ruta de voz. Debe sobrescribir toda la configuración de enrutamiento de voz. Este es un ejemplo de una lista vacía que quita todas las rutas y troncos:

//delete all configured voice routes
console.log("Deleting all routes...");
await client.setRoutes([]);

//delete all trunks
console.log("Deleting all trunks...");
await client.setTrunks([]);

Puede usar el ejemplo siguiente para eliminar un único tronco (SBC), si no hay rutas de voz que lo usen. Si el SBC aparece en cualquier ruta de voz, elimine esa ruta primero.

   await client.deleteTrunk('sbc.us.contoso.com');

Ejecución del código

Use el comando node para ejecutar el código que agregó al archivo direct-routing-quickstart.js:

   node direct-routing-quickstart.js

Requisitos previos

Código final

Busque el código finalizado de este inicio rápido en GitHub.

También puede encontrar más ejemplos de uso para SipRoutingClient en GitHub.

Creación de una aplicación de Python

Abra el terminal o la ventana de comandos. Cree un nuevo directorio para su aplicación y acceda a él:

mkdir direct-routing-quickstart && cd direct-routing-quickstart

Use un editor de texto para crear un archivo denominado direct_routing_sample.py en el directorio raíz del proyecto y agregue el siguiente código:

import os
from azure.communication.phonenumbers.siprouting import SipRoutingClient, SipTrunk, SipTrunkRoute

try:
   print('Azure Communication Services - Direct Routing Quickstart')
   # Quickstart code goes here
except Exception as ex:
   print('Exception:')
   print(ex)

El resto del código de inicio rápido se añade en las siguientes secciones.

Instalar el paquete

Mientras sigue en el directorio de aplicaciones, instale la biblioteca cliente de administración de Azure Communication Services para Python con el comando pip install:

pip install azure-communication-phonenumbers==1.1.0

Autenticar el cliente

Con SipRoutingClient, puede usar la autenticación de Microsoft Entra. El uso del objeto DefaultAzureCredential es la forma más fácil de empezar a trabajar con Microsoft Entra ID y puede instalarlo mediante el comando pip install:

pip install azure-identity

La creación de un objeto DefaultAzureCredential requiere que tenga AZURE_CLIENT_ID, AZURE_CLIENT_SECRET y AZURE_TENANT_ID ya establecidos como variables de entorno con sus valores correspondientes en la aplicación de Microsoft Entra registrada. Para conocer una manera rápida de obtener estas variables de entorno, consulte Autenticación mediante Microsoft Entra ID.

Una vez que haya instalado la biblioteca azure-identity, puede seguir con la autenticación del cliente:

import os
from azure.communication.phonenumbers.siprouting import SipRoutingClient
from azure.identity import DefaultAzureCredential

# You can find your endpoint from your resource in the Azure portal
endpoint = 'https://<RESOURCE_NAME>.communication.azure.com'
try:
    print('Azure Communication Services - Direct Routing Quickstart')
    credential = DefaultAzureCredential()
    sip_routing_client = SipRoutingClient(endpoint, credential)
except Exception as ex:
    print('Exception:')
    print(ex)

Como alternativa, también puede usar el punto de conexión y la clave de acceso del recurso de comunicación para la autenticación:

import os
from azure.communication.phonenumbers.siprouting import SipRoutingClient

# You can find your connection string from your resource in the Azure portal
connection_string = 'https://<RESOURCE_NAME>.communication.azure.com/;accesskey=<YOUR_ACCESS_KEY>'
try:
    print('Azure Communication Services - Direct Routing Quickstart')
    sip_routing_client = SipRoutingClient.from_connection_string(connection_string)
except Exception as ex:
    print('Exception:')
    print(ex)

Configurar una configuración de enrutamiento directo

En los requisitos previos, ha comprobado la propiedad del dominio. Los pasos siguientes son crear troncos (agregar el SBC) y crear rutas de voz.

Crear o actualizar troncos

Registre los SBC proporcionando sus nombres de dominio completos y números de puerto:

new_trunks = [SipTrunk(fqdn="sbc.us.contoso.com", sip_signaling_port=1234), SipTrunk(fqdn="sbc.eu.contoso.com", sip_signaling_port=1234)]
sip_routing_client.set_trunks(new_trunks)

Creación o actualización de rutas

Proporcione reglas de enrutamiento para las llamadas salientes. Cada regla consta de dos partes: un patrón regex que debe coincidir con un número de teléfono marcado y el FQDN de un tronco registrado donde se enruta la llamada.

El orden de las rutas determina la prioridad de las rutas. La primera ruta que coincida con la expresión regular se seleccionará para una llamada.

En este ejemplo, crea una ruta para números que comienzan por +1 y una segunda ruta para números que comienzan por solo +:

us_route = SipTrunkRoute(name="UsRoute", description="Handle US numbers '+1'", number_pattern="^\\+1(\\d{10})$", trunks=["sbc.us.contoso.com"])
def_route = SipTrunkRoute(name="DefaultRoute", description="Handle all numbers", number_pattern="^\\+\\d+$", trunks=["sbc.us.contoso.com","sbc.eu.contoso.com"])
new_routes = [us_route, def_route]
sip_routing_client.set_routes(new_routes)

Actualizar una configuración de enrutamiento directo

Puede actualizar las propiedades de un tronco específico sobrescribiendo el registro con el mismo FQDN. Por ejemplo, puede establecer un nuevo valor de puerto de SBC:

new_trunk = SipTrunk(fqdn="sbc.us.contoso.com", sip_signaling_port=5063)
sip_routing_client.set_trunk(new_trunk)

Use el mismo método para crear y actualizar reglas de enrutamiento. Al actualizar las rutas, envíelas todas en una única actualización. La nueva configuración de enrutamiento sobrescribe completamente la anterior.

Eliminar la configuración de enrutamiento directo

No se puede editar ni quitar una sola ruta de voz. Debe sobrescribir toda la configuración de enrutamiento de voz. Este es un ejemplo de una lista vacía que quita todas las rutas y troncos:

#delete all configured voice routes
print('Deleting all routes...')
sip_routing_client.set_routes([])

#delete all trunks
print('Deleting all trunks...')
sip_routing_client.set_trunks([])

Puede usar el ejemplo siguiente para eliminar un único tronco (SBC), si no hay rutas de voz que lo usen. Si el SBC aparece en cualquier ruta de voz, elimine esa ruta primero.

sip_routing_client.delete_trunk("sbc.us.contoso.com")

Ejecución del código

En un símbolo del sistema, vaya al directorio que contiene el archivo direct_routing_sample.py. A continuación, ejecute el siguiente comando de Python para ejecutar la aplicación:

python direct_routing_sample.py

Limpieza de recursos

Si quiere limpiar y quitar una suscripción a Communication Services, puede eliminar el recurso o grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él. Obtenga más información sobre la limpieza de recursos.

Pasos siguientes

Para más información, consulte los siguientes artículos.