Instradamento del traffico verso i numeri +999
Per operatori e proprietari di server SIP: come consegnare chiamate e messaggi ai numeri +999 e come arrivano a te. Standard aperti, senza contratto e senza registrazione. Ogni numero +999 appartiene a una persona verificata tramite Persona.
Numeri +999 per il tuo PBX
Il modo più semplice per avere numeri per dipendenti e reparti: gratis, senza operatore e senza contratto, in un minuto su questo sito. Nell'account punti il numero al tuo PBX e da quel momento è un normale numero in ingresso, con la differenza che le chiamate verso di esso non costano nulla.
- Un numero per ciascuno. Fino a tre numeri per persona: per reparti, una reception, progetti. Il numero appartiene a una persona verificata e non si può falsificare.
- Chiamate dirette. Gli utenti Armor e gli altri PBX trovano il tuo numero in ENUM e chiamano direttamente il tuo PBX, senza intermediari e senza costi al minuto.
- Chiama tu stesso i +999. Gli utenti del tuo PBX compongono un +999 qualsiasi e il PBX trova l'indirizzo in ENUM. Qui sotto trovi esempi per Asterisk e FreeSWITCH.
Prendi un numero
Nell'app Armor, poi accedi al tuo account su armor.tel.
Puntalo al tuo PBX
Nell'account, accanto al numero: «Chiamate» → «al mio centralino» → il nome del server, ad esempio pbx.example.com.
Ricezione sul PBX
La chiamata arriva a sip:+999…@pbx.example.com. La porta viene dal record SRV _sip._udp, altrimenti è 5060.
Instradamento: ENUM
Ogni numero emesso ha un record NAPTR nella zona e164.armor.tel. Il nome è formato dalle cifre del numero in ordine inverso, separate da punti. La zona è firmata con DNSSEC. Verifica le firme: altrimenti un record falsificato significa un numero dirottato.
- Query per +999 730 905 13 05: 5.0.3.1.5.0.9.0.3.7.9.9.9.e164.armor.tel IN NAPTR
- Risposta: 10 10 "u" "E2U+sip" "!^.*$!sip:+9997309051305@sip.armor.tel!" .
- NXDOMAIN significa che il numero non è stato emesso o è stato rilasciato. Non inviare queste chiamate: il server risponde 404.
- Caching. I record hanno un TTL di 5 minuti. Un numero rilasciato non viene riemesso per 90 giorni.
Segnalazione: SIP
- L'indirizzo proviene da NAPTR; server e porta si risolvono secondo la RFC 3263 (SRV _sips._tcp, _sip._tcp, _sip._udp).
- TLS è consigliato: porta 5061 (SRV _sips._tcp), certificato Let's Encrypt per sip.armor.tel, SNI obbligatorio, nessun certificato client necessario. Senza cifratura: UDP e TCP sulla porta 5080.
- Nessuna registrazione né password. Qualsiasi server che trova il numero in ENUM può chiamare un +999.
- From viene passato all'utente così com'è e non viene controllato. Inserisci il numero del chiamante in E.164 con il «+».
- Limiti: 10 INVITE al secondo da un singolo indirizzo e 30 chiamate simultanee per numero. Oltre: 503 con Retry-After.
- Ritrasmissioni secondo la RFC 3261; su TCP/TLS mantieni aperta la connessione, con keep-alive CRLF.
Media: RTP
- Nessuna transcodifica. Il server fa da proxy per l'RTP e non tocca i codec dell'SDP: vengono negoziati con il dispositivo dell'utente. I dispositivi supportano Opus, G.722, G.711 A/µ.
- SRTP e ZRTP passano attraverso: a=zrtp-hash e i pacchetti ZRTP arrivano all'utente. Se la tua parte supporta ZRTP, la chiamata è cifrata tra te e l'utente.
- DTMF: RFC 4733 (telephone-event) nell'RTP.
- Non supportati: early media e late offer. Un INVITE senza SDP riceve 488.
Come procede una chiamata
100 Trying, poi 180
Il server sveglia con un push i dispositivi dell'utente in standby e li fa squillare tutti insieme. Il primo 180 può richiedere qualche secondo.
200 OK dal primo che risponde
Gli altri dispositivi smettono di squillare. I media passano per il server Armor; gli indirizzi sono nell'SDP della risposta.
Errori
404: il numero non è emesso. 480: nessun dispositivo online. 486: occupato o rifiutato. 503: limite raggiunto.
Messaggi
SIP MESSAGE allo stesso indirizzo sip:+999…@sip.armor.tel, con un corpo text/plain o message/cpim. Il server lo consegna a tutti i dispositivi dell'utente, e a quelli offline quando tornano online; la risposta è 202. La risposta dell'utente va all'indirizzo nel tuo From, che quindi deve essere raggiungibile da internet.
Traffico da +999 verso di te
Il server Armor non effettua chiamate in uscita verso altre reti. Un utente +999 raggiunge i tuoi numeri tramite un account presso di te: aggiunge la tua linea all'app e chiama dal tuo numero. Per te è un normale abbonato SIP.
- Cosa ci serve da te: accesso SIP (indirizzo, login, password, TLS), inoltro a un indirizzo SIP e, se vuoi, SMS tramite SIP MESSAGE.
- Per una configurazione in due tocchi, dai ai tuoi utenti un codice QR con le impostazioni nel formato remote provisioning di Linphone. L'app lo legge.
- Catalogo dei provider. Possiamo inserirti nell'elenco dei provider nell'app: l'utente ti sceglie e accede al tuo account tramite OAuth, e l'app recupera da sola le impostazioni. Servono un accesso OAuth e un endpoint delle impostazioni.
- Un numero +999 verificato in From quando chiama te non è disponibile. Se ti serve, scrivici.
Esempio: Asterisk
PJSIP, Asterisk 18 e successivi. Le chiamate in arrivo ai tuoi numeri +999 vengono accettate senza registrazione, ma solo per i numeri elencati. Le chiamate in uscita verso +999 vanno all'indirizzo ricavato da 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)- Sicuro. Il contesto from-armor contiene solo i tuoi numeri, quindi la chiamata di nessun altro può passare attraverso il PBX.
- Numero non emesso: ENUM è vuoto e la chiamata termina subito, senza tentare di connettersi.
Esempio: FreeSWITCH
Le chiamate in arrivo sono accettate dal profilo external (porta 5080: pubblica un record SRV _sip._udp.pbx.example.com con questa porta). Le chiamate in uscita passano da 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>- Il contesto public accetta solo i numeri elencati: FreeSWITCH rifiuta tutto il resto.
Test
Il numero di prova +999 100 000 00 01 risponde e dice l'ora: un modo pratico per verificare instradamento, trasporto e media. Per domande e per entrare nel catalogo, scrivi a ops@armor.tel.