armor.tel

Пропуск трафика с номерами +999

Для операторов и владельцев SIP-серверов: как доставлять звонки и сообщения на номера +999 и как они приходят к вам. Открытые стандарты, без договора и без регистрации. Каждый номер +999 принадлежит человеку, проверенному через Persona.

Номера +999 для вашей АТС

Самый простой способ получить номера для сотрудников и отделов: бесплатно, без оператора и договора, за минуту на этом сайте. Номер направляется на вашу АТС в кабинете, и дальше это обычный входящий номер, только звонки на него ничего не стоят.

  1. Возьмите номер

    В приложении Armor, затем войдите в кабинет на armor.tel.

  2. Направьте на АТС

    В кабинете у номера: «Звонки» → «на свою АТС» → имя сервера, например pbx.example.com.

  3. Примите на АТС

    Звонок придёт на sip:+999…@pbx.example.com. Порт — из SRV _sip._udp, иначе 5060.

Маршрутизация: ENUM

Для каждого выданного номера в зоне e164.armor.tel есть запись NAPTR. Имя — цифры номера в обратном порядке через точку. Зона подписана DNSSEC; проверяйте подписи — иначе подмена записи означает перехват номера.

Сигнализация: SIP

Медиа: RTP

Как идёт звонок

  1. 100 Trying, затем 180

    Сервер будит спящие устройства абонента пушем и вызывает все сразу. До первого 180 может пройти несколько секунд.

  2. 200 OK от первого ответившего

    Остальным устройствам — отбой. Медиа идёт через сервер Armor, адреса — в SDP ответа.

  3. Ошибки

    404 — номер не выдан. 480 — ни одно устройство не на связи. 486 — занято или отклонено. 503 — лимит.

Сообщения

SIP MESSAGE на тот же адрес sip:+999…@sip.armor.tel, тело text/plain или message/cpim. Сервер доставляет на все устройства абонента, офлайн-устройствам — при появлении на связи; ответ 202. Ответ абонента придёт на адрес из вашего From, он должен быть достижим из интернета.

Трафик от +999 к вам

Сервер Armor не делает исходящих звонков в чужие сети. Абонент +999 дозванивается до ваших номеров через учётную запись у вас: он добавляет вашу линию в приложение и звонит с вашего номера. Для вас это обычный SIP-абонент.

Пример: Asterisk

PJSIP, Asterisk 18 и новее. Входящие на ваши +999 принимаются без регистрации, но только на перечисленные номера. Исходящие на +999 идут по адресу из ENUM.

; pjsip.conf
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060

; Calls to your +999: the caller found the PBX in ENUM, no registration
[anonymous]
type=endpoint
context=from-armor
disallow=all
allow=opus,g722,alaw,ulaw
rtp_symmetric=yes
rewrite_contact=yes
direct_media=no

; Calls to +999 from your PBX
[armor]
type=endpoint
context=from-armor
disallow=all
allow=opus,g722,alaw,ulaw
from_domain=pbx.example.com
direct_media=no
; extensions.conf
[from-armor]
; your +999 number -> an extension
exten => +9997309051305,1,Dial(PJSIP/101,30)
 same => n,Hangup()

; include in your users' context: include => to-armor
[to-armor]
exten => _+999XXXXXXXXXX,1,Set(URI=${ENUMLOOKUP(${EXTEN},sip,,1,e164.armor.tel)})
 same => n,GotoIf($["${URI}" = ""]?missing)
 same => n,Dial(PJSIP/armor/sip:${URI},60)
 same => n,Hangup()
 same => n(missing),Hangup(1)

Пример: FreeSWITCH

Входящие принимает профиль external (порт 5080: опубликуйте SRV _sip._udp.pbx.example.com с этим портом). Исходящие — через mod_enum.

<!-- autoload_configs/enum.conf.xml (and mod_enum in modules.conf.xml) -->
<configuration name="enum.conf" description="ENUM">
  <settings>
    <param name="default-root" value="e164.armor.tel"/>
  </settings>
  <routes>
    <route service="E2U+SIP" regex="sip:(.*)" replace="sofia/external/$1"/>
  </routes>
</configuration>
<!-- dialplan/public/armor.xml: calls to your +999 -->
<include>
  <extension name="armor-in">
    <condition field="destination_number" expression="^\+9997309051305$">
      <action application="bridge" data="user/1001@${domain_name}"/>
    </condition>
  </extension>
</include>

<!-- dialplan/default/armor.xml: calls to +999 from the PBX -->
<include>
  <extension name="armor-out">
    <condition field="destination_number" expression="^(\+999\d{10})$">
      <action application="enum" data="$1 e164.armor.tel"/>
      <action application="bridge" data="${enum_auto_route}"/>
    </condition>
  </extension>
</include>

Проверка

Тестовый номер +999 100 000 00 01 отвечает и произносит время: удобно проверить маршрут, транспорт и медиа. Вопросы и подключение к каталогу — ops@armor.tel.