Encaminhamento de tráfego para números +999
Para operadores e donos de servidores SIP: como entregar chamadas e mensagens a números +999 e como estas chegam até si. Normas abertas, sem contrato e sem registo. Cada número +999 pertence a uma pessoa verificada através da Persona.
Números +999 para a sua PBX
A forma mais simples de obter números para colaboradores e departamentos: gratuitos, sem operador e sem contrato, num minuto neste site. Aponta o número para a sua PBX na conta e, a partir daí, é um número de entrada normal, exceto que as chamadas para ele não custam nada.
- Um número para cada um. Até três números por pessoa: para departamentos, uma receção, projetos. O número pertence a uma pessoa verificada e não pode ser falsificado.
- Chamadas diretas. Os utilizadores do Armor e outras PBX encontram o seu número no ENUM e ligam diretamente à sua PBX, sem intermediários e sem cobrança ao minuto.
- Ligue também para +999. Os utilizadores da sua PBX marcam qualquer +999 e a PBX encontra o endereço no ENUM. Seguem-se exemplos para Asterisk e FreeSWITCH.
Obtenha um número
Na aplicação Armor e depois inicie sessão na sua conta em armor.tel.
Aponte-o para a sua PBX
Na conta, junto ao número: «Chamadas» → «para a minha PBX» → o nome do servidor, por exemplo pbx.example.com.
Receba na PBX
A chamada chega a sip:+999…@pbx.example.com. A porta vem do registo SRV _sip._udp, caso contrário 5060.
Encaminhamento: ENUM
Cada número emitido tem um registo NAPTR na zona e164.armor.tel. O nome são os dígitos do número por ordem inversa, separados por pontos. A zona é assinada com DNSSEC. Verifique as assinaturas: caso contrário, um registo falsificado significa um número sequestrado.
- Consulta para +999 730 905 13 05: 5.0.3.1.5.0.9.0.3.7.9.9.9.e164.armor.tel IN NAPTR
- Resposta: 10 10 "u" "E2U+sip" "!^.*$!sip:+9997309051305@sip.armor.tel!" .
- NXDOMAIN significa que o número não foi emitido ou foi libertado. Não envie essas chamadas: o servidor responde 404.
- Cache. Os registos têm um TTL de 5 minutos. Um número libertado não é reemitido durante 90 dias.
Sinalização: SIP
- O endereço vem do NAPTR; o servidor e a porta são resolvidos segundo a RFC 3263 (SRV _sips._tcp, _sip._tcp, _sip._udp).
- TLS é recomendado: porta 5061 (SRV _sips._tcp), certificado Let's Encrypt para sip.armor.tel, SNI obrigatório, sem necessidade de certificado de cliente. Sem cifragem: UDP e TCP na porta 5080.
- Sem registo nem palavra-passe. Qualquer servidor que encontre o número no ENUM pode ligar para um +999.
- From é passado ao utilizador tal como está e não é verificado. Indique o número de quem liga em E.164 com um «+».
- Limites: 10 INVITE por segundo a partir de um endereço e 30 chamadas em simultâneo por número. Acima disso: 503 com Retry-After.
- Retransmissões segundo a RFC 3261; em TCP/TLS mantenha a ligação aberta, com keep-alives CRLF.
Média: RTP
- Sem transcodificação. O servidor faz proxy do RTP e não toca nos codecs do SDP: são negociados com o dispositivo do utilizador. Os dispositivos suportam Opus, G.722, G.711 A/µ.
- SRTP e ZRTP passam sem alterações: a=zrtp-hash e os pacotes ZRTP chegam ao utilizador. Se o seu lado suportar ZRTP, a chamada fica cifrada entre si e o utilizador.
- DTMF: RFC 4733 (telephone-event) em RTP.
- Não suportado: early media e late offer. Um INVITE sem SDP recebe 488.
Como decorre uma chamada
100 Trying, depois 180
O servidor acorda com um push os dispositivos adormecidos do utilizador e faz tocar todos ao mesmo tempo. O primeiro 180 pode demorar alguns segundos.
200 OK de quem atender primeiro
Os outros dispositivos deixam de tocar. A média passa pelo servidor Armor; os endereços estão no SDP da resposta.
Erros
404: o número não foi emitido. 480: nenhum dispositivo está online. 486: ocupado ou recusado. 503: limite atingido.
Mensagens
SIP MESSAGE para o mesmo endereço sip:+999…@sip.armor.tel, com corpo text/plain ou message/cpim. O servidor entrega-a a todos os dispositivos do utilizador, e aos que estão offline quando ficarem online; a resposta é 202. A resposta do utilizador vai para o endereço do seu From, que por isso tem de ser acessível a partir da internet.
Tráfego de +999 para si
O servidor Armor não faz chamadas de saída para outras redes. Um utilizador +999 chega aos seus números através de uma conta consigo: adiciona a sua linha à aplicação e liga a partir do seu número. Para si, é um assinante SIP normal.
- O que precisamos de si: acesso SIP (endereço, utilizador, palavra-passe, TLS), reencaminhamento para um endereço SIP e, se quiser, SMS por SIP MESSAGE.
- Para uma configuração em dois toques, dê aos seus utilizadores um código QR com as definições no formato de remote provisioning do Linphone. A aplicação lê-o.
- Catálogo de operadores. Podemos incluí-lo na lista de operadores da aplicação: o utilizador escolhe-o e inicia sessão na sua conta por OAuth, e a aplicação obtém as definições sozinha. Precisa de um início de sessão OAuth e de um endpoint de definições.
- Um número +999 verificado em From ao ligar para si não está disponível. Se precisar, escreva-nos.
Exemplo: Asterisk
PJSIP, Asterisk 18 e posteriores. As chamadas de entrada para os seus números +999 são aceites sem registo, mas só para os números listados. As chamadas de saída para +999 vão para o endereço do 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)- Seguro. O contexto from-armor tem apenas os seus números, por isso a chamada de mais ninguém passa pela PBX.
- Número não emitido: o ENUM está vazio e a chamada termina de imediato, sem tentar ligar.
Exemplo: FreeSWITCH
As chamadas de entrada são aceites pelo perfil external (porta 5080: publique um registo SRV _sip._udp.pbx.example.com com esta porta). As chamadas de saída passam por 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>- O contexto public aceita apenas os números listados: o FreeSWITCH rejeita tudo o resto.
Teste
O número de teste +999 100 000 00 01 atende e diz as horas: uma forma prática de verificar a rota, o transporte e a média. Para perguntas e para entrar no catálogo, escreva para ops@armor.tel.