Бөлісу құралы:


Краткое руководство. Программное руководство по настройке маршрутизации голосовой связи

Настройте правила маршрутизации исходящей голосовой связи для прямой маршрутизации служб коммуникации Azure.

Необходимые компоненты

Примечание.

Дополнительные примеры SipRoutingClient использования можно найти на сайте GitHub.

Добавление пограничного контроллера сеанса

  1. На левой панели в разделе Голосовой вызов — ТСОП выберите прямую маршрутизацию. На вкладке "Пограничный контроллер сеанса" выберите "Настроить".

  2. Введите полное доменное имя и сигнальный порт для SBC. Требования к полному домену SBC включают:

    • Перед добавлением домена в конфигурацию прямой маршрутизации необходимо проверить часть полного доменного имени, как упоминание ранее в предварительных требованиях.
    • Сертификат SBC должен соответствовать имени. Поддерживаются сертификаты Wild карта.
    • Вы не можете использовать *.onmicrosoft.com домены и *.azure.com домены для полного доменного имени.

    Полный список требований см. в статье о требованиях к инфраструктуре прямой маршрутизации Azure.

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

  3. Выберите Далее. Если все настроено правильно, вы увидите состояние SBC как "Активный" в портал Azure.

    Screenshot of SBC connection properties.

Важно!

Перед размещением или приемом звонков убедитесь, что состояние SBC — Online

Создание правил маршрутизации голосовой связи

Screenshot of outgoing voice routing configuration.

Укажите имя маршрута голосовой связи, укажите шаблон числа с помощью регулярных выражений и выберите SBC для этого шаблона. Ниже приведено несколько примеров основных регулярных выражений.

  • ^\+\d+$: соответствует номеру телефона с одной или несколькими цифрами, начинающимися с плюса.
  • ^\+1(\d{10})$: соответствует номеру телефона с 10 цифрами после +1.
  • ^\+1(425|206)(\d{7})$: соответствует номеру телефона, который начинается с или с +1425 +1206, а затем семь цифр.
  • ^\+0?1234$: соответствует обоим +01234 и +1234 телефонным номерам.

Подробнее о регулярных выражениях читайте в статье Обзор регулярных выражения в .NET.

Для одного шаблона можно выбрать несколько SBC. В таком случае алгоритм маршрутизации выбирает их в случайном порядке. Кроме того, можно указать точный шаблон чисел более одного раза. Более высокая строка имеет более высокий приоритет. Если все SBCs, связанные с этой строкой, недоступны, выбрана следующая строка. Таким образом создаются сложные сценарии маршрутизации.

Удаление конфигурации прямой маршрутизации

Удаление маршрута голосовой связи:

  1. На левой панели в разделе "Голосовой вызов — ТСОП" перейдите к прямой маршрутизации.
  2. На вкладке "Маршруты голосовой связи" выберите проверка boxes для маршрута (или маршрутов), которые требуется удалить.
  3. Выберите Удалить.

Для удаления SBC выполните следующие действия:

  1. На левой панели в разделе "Голосовой вызов — ТСОП" перейдите к прямой маршрутизации.
  2. На вкладке "Пограничные контроллеры сеансов" выберите "Настроить".
  3. Снимите полное доменное имя и поля портов для SBC, которые требуется удалить, и нажмите кнопку "Далее".
  4. На вкладке "Маршруты голосовой связи" просмотрите конфигурацию маршрутизации голосовой связи. При необходимости внесите изменения и нажмите кнопку "Сохранить".

При удалении SBC, связанного с голосовым маршрутом, можно выбрать другой SBC для маршрута на вкладке "Маршруты голосовой связи". Маршрут голосовой связи без SBC будет удален.

Необходимые компоненты

Окончательный код

Итоговый код для этого краткого руководства можно найти на сайте GitHub.

Дополнительные примеры SipRoutingClient использования можно найти на сайте GitHub.

Создание приложения C#

В окне консоли (например, командная строка, PowerShell или Bash) используйте dotnet new команду для создания нового консольного приложения:

    dotnet new console -o DirectRoutingQuickstart

Эта команда создает простой проект "Hello World" на языке C# с одним файлом исходного кода Program.cs.

Измените каталог на только что созданную папку приложения и выполните dotnet build команду для компиляции приложения:

    cd DirectRoutingQuickstart
    dotnet build

Установка пакета

Пока вы все еще находитесь в каталоге приложений, установите клиентскую библиотеку azure Communication Телефон Numbers для .NET с помощью dotnet add package команды:

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

using Добавьте директиву в верхнюю часть Program.cs, чтобы включить пространства имен:

using Azure.Communication.PhoneNumbers.SipRouting;

аутентификация клиента;

Проверка подлинности клиентов телефонного номера с помощью строка подключения из ресурса Службы коммуникации Azure:

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

Настройка конфигурации прямой маршрутизации

В предварительных требованиях вы проверили владение доменом. Ниже приведены действия по созданию магистралей (добавление SBC) и созданию голосовых маршрутов.

Создание или обновление магистралей

Службы коммуникации Azure прямая маршрутизация разрешает обмен данными только с зарегистрированными контроллерами SBC. Чтобы зарегистрировать SBC, вам потребуется полное доменное имя и порт:

// 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 });

Создание или обновление маршрутов

Укажите правила маршрутизации для исходящих вызовов. Каждое правило состоит из двух частей: шаблон регулярного выражения, который должен соответствовать номеру телефона с телефонным номером, а полное доменное имя зарегистрированного магистраля, в котором направляется звонок.

Порядок маршрутов определяет приоритет маршрутов. Первый маршрут, соответствующий regex, будет выбран для вызова.

В этом примере создается один маршрут для чисел, начинающихся с +1 и второго маршрута для чисел, начинающихся только +с:

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 });

Обновление конфигурации прямой маршрутизации

Вы можете обновить свойства определенной магистрали, перезаписав запись с тем же полным доменным именем. Например, можно задать новое значение порта SBC:

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

Вы используете тот же метод для создания и обновления правил маршрутизации. При обновлении маршрутов отправьте все из них в одном обновлении. Новая конфигурация маршрутизации полностью перезаписывает ранее.

Удаление конфигурации прямой маршрутизации

Невозможно изменить или удалить один голосовой маршрут. Необходимо перезаписать всю конфигурацию маршрутизации голосовой связи. Ниже приведен пример пустого списка, который удаляет все маршруты и магистрали:

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

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

В следующем примере можно удалить один магистраль (SBC), если он не используется. Если SBC указан в любом голосовом маршруте, сначала удалите этот маршрут.

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

Необходимые компоненты

Окончательный код

Итоговый код для этого краткого руководства можно найти на сайте GitHub.

Дополнительные примеры SipRoutingClient использования можно найти на сайте GitHub.

Создание приложения Java

Откройте терминал или командное окно. Перейдите в каталог, в котором вы хотите создать приложение Java. Затем выполните команду, чтобы создать проект Java из шаблона maven-archetype-quickstart :

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

generate Задача создала каталог с тем же именем, что artifactId и значение. В этом каталоге каталог src/main/java содержит исходный код проекта, каталог src/test/java содержит источник теста, а файл pom.xml — объектная модель проекта проекта (POM).

Установка пакета

Откройте файл pom.xml в текстовом редакторе. Добавьте следующие элементы зависимостей в группу зависимостей:

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

Настройка платформы приложения

Из каталога проекта:

  1. Перейдите в каталог /src/main/java/com/communication/quickstart .
  2. Откройте файл App.java в редакторе.
  3. Замените инструкцию System.out.println("Hello world!"); .
  4. Добавьте директивы import.

Используйте следующий код:

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
    }
}

аутентификация клиента;

С SipRoutingClientBuilderпомощью проверки подлинности 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();

Кроме того, используйте конечную точку и ключ доступа из ресурса связи для проверки подлинности:

// 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();

Настройка конфигурации прямой маршрутизации

В предварительных требованиях вы проверили владение доменом. Ниже приведены действия по созданию магистралей (добавление SBC) и созданию голосовых маршрутов.

Создание или обновление магистралей

Службы коммуникации Azure прямая маршрутизация разрешает обмен данными только с зарегистрированными контроллерами SBC. Чтобы зарегистрировать SBC, вам потребуется полное доменное имя и порт:

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

Создание или обновление маршрутов

Укажите правила маршрутизации для исходящих вызовов. Каждое правило состоит из двух частей: шаблон регулярного выражения, который должен соответствовать номеру телефона с телефонным номером, а полное доменное имя зарегистрированного магистраля, в котором направляется звонок.

Порядок маршрутов определяет приоритет маршрутов. Первый маршрут, соответствующий regex, будет выбран для вызова.

В этом примере создается один маршрут для чисел, начинающихся с +1 и второго маршрута для чисел, начинающихся только +с:

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();

Обновление конфигурации прямой маршрутизации

Вы можете обновить свойства определенной магистрали, перезаписав запись с тем же полным доменным именем. Например, можно задать новое значение порта SBC:

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

Вы используете тот же метод для создания и обновления правил маршрутизации. При обновлении маршрутов отправьте все из них в одном обновлении. Новая конфигурация маршрутизации полностью перезаписывает ранее.

Удаление конфигурации прямой маршрутизации

Невозможно изменить или удалить один голосовой маршрут. Необходимо перезаписать всю конфигурацию маршрутизации голосовой связи. Ниже приведен пример пустого списка, который удаляет все маршруты и магистрали.

Добавьте два импорта:

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

Используйте следующий код для удаления конфигурации прямой маршрутизации:

//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();

В следующем примере можно удалить один магистраль (SBC), если он не используется. Если SBC указан в любом голосовом маршруте, сначала удалите этот маршрут.

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

Выполнение кода

Перейдите в каталог, содержащий файл pom.xml , и скомпилируйте проект с помощью следующей mvn команды:

  mvn clean compile

Затем создайте пакет:

  mvn package

Выполните следующую mvn команду, чтобы запустить приложение:

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

Необходимые компоненты

Окончательный код

Итоговый код для этого краткого руководства можно найти на сайте GitHub.

Дополнительные примеры SipRoutingClient использования можно найти на сайте GitHub.

Создание приложения Node.js

Откройте терминал или командное окно, создайте новый каталог для приложения и перейдите к нему:

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

Запустите npm init -y , чтобы создать файл package.json с параметрами по умолчанию:

   npm init -y

Создайте файл с именем direct-routing-quickstart.js в корне созданного каталога. Добавьте в него следующий фрагмент кода:

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

main();

Установка пакета

npm install Используйте команду для установки клиентской библиотеки номеров Службы коммуникации Azure Телефон для JavaScript:

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

Параметр --save добавляет библиотеку как зависимость в файле пакета package.json.

аутентификация клиента;

Импортируйте из клиентской библиотеки и создайте SipRoutingClient экземпляр с помощью строка подключения. Код извлекает строка подключения ресурса из переменной среды с именемCOMMUNICATION_SERVICES_CONNECTION_STRING. Узнайте, как управлять строка подключения ресурса.

Добавьте следующий код в 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);

Настройка конфигурации прямой маршрутизации

В предварительных требованиях вы проверили владение доменом. Ниже приведены действия по созданию магистралей (добавление SBC) и созданию голосовых маршрутов.

Создание или обновление магистралей

Службы коммуникации Azure прямая маршрутизация разрешает обмен данными только с зарегистрированными контроллерами SBC. Чтобы зарегистрировать SBC, вам потребуется полное доменное имя и порт:

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

Создание или обновление маршрутов

Укажите правила маршрутизации для исходящих вызовов. Каждое правило состоит из двух частей: шаблон регулярного выражения, который должен соответствовать номеру телефона с телефонным номером, а полное доменное имя зарегистрированного магистраля, в котором направляется звонок.

Порядок маршрутов определяет приоритет маршрутов. Первый маршрут, соответствующий regex, будет выбран для вызова.

В этом примере создается один маршрут для чисел, начинающихся с +1 и второго маршрута для чисел, начинающихся только +с:

   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']
    }
  ]);

Обновление конфигурации прямой маршрутизации

Вы можете обновить свойства определенной магистрали, перезаписав запись с тем же полным доменным именем. Например, можно задать новое значение порта SBC:

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

Вы используете тот же метод для создания и обновления правил маршрутизации. При обновлении маршрутов отправьте все из них в одном обновлении. Новая конфигурация маршрутизации полностью перезаписывает ранее.

Удаление конфигурации прямой маршрутизации

Невозможно изменить или удалить один голосовой маршрут. Необходимо перезаписать всю конфигурацию маршрутизации голосовой связи. Ниже приведен пример пустого списка, который удаляет все маршруты и магистрали:

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

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

В следующем примере можно удалить один магистраль (SBC), если он не используется. Если SBC указан в любом голосовом маршруте, сначала удалите этот маршрут.

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

Выполнение кода

node Используйте команду, чтобы запустить код, добавленный в direct-routing-quickstart.js файл:

   node direct-routing-quickstart.js

Необходимые компоненты

Окончательный код

Итоговый код для этого краткого руководства можно найти на сайте GitHub.

Дополнительные примеры SipRoutingClient использования можно найти на сайте GitHub.

Создание приложения Python

Откройте терминал или командное окно. Создайте новый каталог для приложения, а затем перейдите к нему:

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

Используйте текстовый редактор для создания файла с именем direct_routing_sample.py в корневом каталоге проекта и добавьте следующий код:

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)

В следующих разделах вы добавите оставшийся код краткого руководства.

Установка пакета

Пока вы все еще находитесь в каталоге приложений, установите клиентскую библиотеку Службы коммуникации Azure Администратор istration для Python с помощью pip install команды:

pip install azure-communication-phonenumbers==1.1.0

аутентификация клиента;

С SipRoutingClientпомощью проверки подлинности Microsoft Entra можно использовать проверку подлинности Microsoft Entra. DefaultAzureCredential Использование объекта — самый простой способ приступить к работе с идентификатором Microsoft Entra ID, и его можно установить с помощью pip install команды:

pip install azure-identity

DefaultAzureCredential Для создания объекта требуется иметь AZURE_CLIENT_IDAZURE_CLIENT_SECRETи AZURE_TENANT_ID уже задать переменные среды с соответствующими значениями из зарегистрированного приложения Microsoft Entra. Чтобы быстро получить эти переменные среды, ознакомьтесь с проверкой подлинности с помощью идентификатора Microsoft Entra.

После установки библиотеки azure-identity можно продолжить проверку подлинности клиента:

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)

Кроме того, для проверки подлинности можно использовать конечную точку и ключ доступа из ресурса связи:

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)

Настройка конфигурации прямой маршрутизации

В предварительных требованиях вы проверили владение доменом. Ниже приведены действия по созданию магистралей (добавление SBC) и созданию голосовых маршрутов.

Создание или обновление магистралей

Зарегистрируйте SBCs, предоставив свои полные доменные имена и номера портов:

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)

Создание или обновление маршрутов

Укажите правила маршрутизации для исходящих вызовов. Каждое правило состоит из двух частей: шаблон регулярного выражения, который должен соответствовать номеру телефона с телефонным номером, а полное доменное имя зарегистрированного магистраля, в котором направляется звонок.

Порядок маршрутов определяет приоритет маршрутов. Первый маршрут, соответствующий regex, будет выбран для вызова.

В этом примере создается один маршрут для чисел, начинающихся с +1 и второго маршрута для чисел, начинающихся только +с:

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)

Обновление конфигурации прямой маршрутизации

Вы можете обновить свойства определенной магистрали, перезаписав запись с тем же полным доменным именем. Например, можно задать новое значение порта SBC:

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

Вы используете тот же метод для создания и обновления правил маршрутизации. При обновлении маршрутов отправьте все из них в одном обновлении. Новая конфигурация маршрутизации полностью перезаписывает ранее.

Удаление конфигурации прямой маршрутизации

Невозможно изменить или удалить один голосовой маршрут. Необходимо перезаписать всю конфигурацию маршрутизации голосовой связи. Ниже приведен пример пустого списка, который удаляет все маршруты и магистрали:

#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([])

В следующем примере можно удалить один магистраль (SBC), если он не используется. Если SBC указан в любом голосовом маршруте, сначала удалите этот маршрут.

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

Выполнение кода

В командной строке консоли перейдите в каталог, содержащий файл direct_routing_sample.py . Затем выполните следующую команду Python, чтобы запустить приложение:

python direct_routing_sample.py

Очистка ресурсов

Если вы хотите отменить и удалить подписку на Службы коммуникации, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы. Узнайте больше о очистке ресурсов.

Следующие шаги

Дополнительные сведения см. в следующих статьях: