Интеграции

Как подключить Cisco CUCM и CME к AutoCall.kz

← Все статьи

Как устроен звонок

Направление одно: вызов начинаем мы. Платформа отправляет вашей станции SIP-приглашение, где вызываемый номер — это номер абонента. Станция обрабатывает его так же, как набор с внутреннего телефона, и выпускает наружу через вашего оператора. Если сценарий переводит абонента на сотрудника, тем же транком приходит вызов на внутренний номер.

Отсюда растёт вся настройка, и требований к станции ровно два: принять транк без регистрации, по IP, и выпустить вызов из этого транка в исходящий маршрут. Второе — то самое место, где спотыкаются станции, у которых маршрут жёстко привязан к конкретному входящему номеру.

Параметры подключения

Адрес сигнализации 185.35.223.2
Порт 5060 — UDP, 5061 — TLS
Голос (RTP) подсеть 109.233.108.208/28, порты 10000–20000
Кодек G.711 a-law
Формат номера +7XXXXXXXXXX
Регистрация не нужна — опознаём станцию по её статическому IP
Авторизация по желанию: если ваша станция её требует, логин и пароль указываются в кабинете
Направление вызова платформа звонит вашей станции, станция набирает абонента

Фаервол

Сигнализация приходит с одного адреса, голос — из подсети: у нас это разные серверы. Открыть нужно оба направления, иначе получится классическая картина «звонок соединился, но в трубке тишина».

# сигнализация
udp dport 5060 ip saddr 185.35.223.2 accept
tcp dport 5061 ip saddr 185.35.223.2 accept
# голос
udp dport 10000-20000 ip saddr 109.233.108.208/28 accept

Вариант 1. Cisco Unified Communications Manager

SIP Trunk Security Profile

System → Security → SIP Trunk Security Profile. Заведите отдельный профиль: имя autocall, входящий порт 5060, приём входящих вызовов без аутентификации, Device Security Mode — Non Secure (для TLS — Encrypted с указанием сертификата).

SIP Trunk

Device → Trunk → Add New → SIP Trunk:

  • Destination Address: 185.35.223.2, порт 5060;
  • SIP Trunk Security Profile: созданный выше;
  • Inbound Calls → Calling Search Space: 🔴 самое важное поле — CSS должен включать partition, где лежит route pattern на вашего оператора;
  • Inbound Calls → Significant Digits: All, иначе CUCM обрежет номер абонента;
  • Media Resource Group List: без транскодеров, если регион отдаёт G.711 a-law;
  • Region: в настройках Device Pool убедитесь, что между регионом транка и регионом транка оператора разрешён G.711 a-law.

Маршрут наружу

Call Routing → Route/Hunt → Route Pattern: шаблон под номера +7XXXXXXXXXX в том partition, который виден из CSS нашего транка, с назначением на транк вашего оператора. Там же — Calling Party Transformation, подставляющая ваш номер.

Подмена CallerID обязательна. В нашем вызове в поле «от кого» стоит служебная метка вида AutoCall_kz_номер звонка — по ней удобно сверять ваш журнал звонков с нашей выгрузкой, но телефонным номером она не является. Исходящий маршрут обязан заменить её на ваш номер, иначе оператор отклонит вызов.

Перевод на внутренние номера работает без отдельной настройки: короткий номер из сценария CUCM находит в том же CSS.

Вариант 2. Cisco CME и CUBE

На IOS-платформе всё решается двумя dial-peer и одной командой, без которой вызов между двумя SIP-плечами запрещён:

voice service voip
 ! без этого транзит между SIP-плечами запрещён
 allow-connections sip to sip
 sip
  bind control source-interface GigabitEthernet0/0
  bind media source-interface GigabitEthernet0/0

! вызовы, пришедшие с платформы
voice class uri 100 sip
 host ipv4:185.35.223.2

dial-peer voice 100 voip
 description AutoCall.kz inbound
 session protocol sipv2
 incoming uri via 100
 codec g711alaw
 dtmf-relay rtp-nte
 no vad

! наружу, через вашего оператора
dial-peer voice 200 voip
 description To operator
 destination-pattern ^\+?7[0-9]{10}$
 session protocol sipv2
 session target ipv4:IP_ОПЕРАТОРА
 codec g711alaw
 dtmf-relay rtp-nte
 no vad

Подмена номера — обычным voice translation-rule на исходящем плече:

voice translation-rule 10
 rule 1 /.*/ /7XXXXXXXXXX/

voice translation-profile SET-CLI
 translate calling 10

dial-peer voice 200 voip
 translation-profile outgoing SET-CLI

Шифрование (по желанию)

CUCM закрывает сигнализацию TLS через профиль безопасности транка, голос — SRTP в настройках устройства. На CUBE это transport tls в voice class tenant и srtp на dial-peer. В кабинете при этом выбирается транспорт TLS.

SRTP работает только вместе с TLS. Ключ шифрования голоса передаётся прямо в SIP-сообщении: по незашифрованной сигнализации он уедет открытым текстом рядом с «зашифрованным» потоком. Это не защита, а её видимость, поэтому такое сочетание мы не разрешаем. При этом TLS без SRTP — нормальный вариант: в Казахстане много станций и телефонов, где SRTP вырезан из прошивки, а TLS работает.

Добавить АТС в кабинете

Раздел «Мои АТС» → «Подключить АТС». Понадобятся:

  • IP-адрес станции и порт;
  • транспорт — UDP или TLS, и шифрование голоса, если вы его включили;
  • логин и пароль — только если ваша станция требует авторизации;
  • предел одновременных каналов и скорость набора: ставьте не выше того, что разрешает ваш оператор, и мы не превысим.

После сохранения в списке появится состояние станции: «Отвечает» означает, что она отвечает на наши проверки связи. Дальше при создании обзвона выбираете свою АТС в поле «АТС для звонков» — смета сразу считается по льготной цене секунды, а повторные попытки дозвона через свою станцию бесплатны.

Если звонки не идут

  • CUCM отвечает 404 или 403. Вызов пришёл, но CSS транка не видит нужный route pattern либо номер обрезан значащими цифрами.
  • CME завершает вызов сразу. Нет allow-connections sip to sip или не сработал входящий dial-peer: проверьте debug voip dialpeer.
  • Оператор отбивает вызовы. Не настроена подмена calling party.
  • Соединяется, но тишина. Не открыта голосовая подсеть или mismatch кодеков между регионами — проверьте, что обе стороны сошлись на G.711 a-law.

Версий и сборок у Cisco много, и названия пунктов между ними отличаются. Если у вас интерфейс выглядит иначе — напишите в поддержку, подскажем по вашей версии.

Нужен ли отдельный SIP Trunk Security Profile в CUCM?

Да, удобнее завести отдельный профиль под этот транк: в нём задаются входящий порт и режим безопасности. Если планируете TLS, профиль обязателен — именно в нём включается шифрование сигнализации и указывается сертификат.

Почему CUCM принимает вызов, но абоненту он не уходит?

У транка нет доступа к нужным маршрутам. Вызов с транка получает Calling Search Space, указанный в его настройках inbound calls, и этот CSS обязан содержать partition с route pattern на транк оператора. Иначе номер просто не находится.

Как подставить свой номер в исходящем вызове?

Через Calling Party Transformation: на route pattern или на исходящем транке задаётся преобразование, которое заменяет пришедшую служебную метку платформы на ваш номер. Без этого оператор отклонит вызов.

Что настраивать на Cisco CME вместо CUCM?

Два dial-peer: входящий для вызовов с адреса платформы и исходящий на транк оператора, плюс allow-connections sip to sip в voice service voip. Без этой команды маршрутизация между двумя SIP-плечами запрещена, и вызов завершится сразу.

Звоните со своих номеров через свою АТС

Подробности о подключении и цены — на странице «Подключение своей АТС».

Попробовать бесплатно →