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

    Сървърът събужда спящите устройства на потребителя с push и ги звъни всички едновременно. Първото 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.