Verkehr zu +999-Nummern routen
Für Betreiber und Besitzer von SIP-Servern: wie Sie Anrufe und Nachrichten an +999-Nummern zustellen und wie sie zu Ihnen gelangen. Offene Standards, ohne Vertrag und ohne Registrierung. Jede +999-Nummer gehört einer über Persona verifizierten Person.
+999-Nummern für Ihre Telefonanlage
Der einfachste Weg zu Nummern für Mitarbeiter und Abteilungen: kostenlos, ohne Betreiber und ohne Vertrag, in einer Minute auf dieser Website. Sie richten die Nummer im Konto auf Ihre Telefonanlage, und von da an ist sie eine gewöhnliche eingehende Nummer, nur dass Anrufe dorthin nichts kosten.
- Eine Nummer für jeden. Bis zu drei Nummern pro Person: für Abteilungen, einen Empfang, Projekte. Die Nummer gehört einer verifizierten Person und lässt sich nicht fälschen.
- Direkte Anrufe. Armor-Nutzer und andere Telefonanlagen finden Ihre Nummer in ENUM und rufen Ihre Telefonanlage direkt an, ohne Zwischenstationen und ohne Minutenpreise.
- +999 selbst anrufen. Die Nutzer Ihrer Telefonanlage wählen eine beliebige +999, und die Telefonanlage findet die Adresse in ENUM. Beispiele für Asterisk und FreeSWITCH finden Sie unten.
Nummer nehmen
In der Armor-App, dann melden Sie sich bei Ihrem Konto auf armor.tel an.
Auf Ihre Telefonanlage richten
Im Konto, neben der Nummer: „Anrufe“ → „an meine Telefonanlage“ → der Servername, zum Beispiel pbx.example.com.
Auf der Telefonanlage empfangen
Der Anruf kommt bei sip:+999…@pbx.example.com an. Der Port stammt aus dem SRV-Eintrag _sip._udp, sonst 5060.
Routing: ENUM
Jede vergebene Nummer hat einen NAPTR-Eintrag in der Zone e164.armor.tel. Der Name besteht aus den Ziffern der Nummer in umgekehrter Reihenfolge, durch Punkte getrennt. Die Zone ist mit DNSSEC signiert. Prüfen Sie die Signaturen: Sonst bedeutet ein gefälschter Eintrag eine gekaperte Nummer.
- Abfrage für +999 730 905 13 05: 5.0.3.1.5.0.9.0.3.7.9.9.9.e164.armor.tel IN NAPTR
- Antwort: 10 10 "u" "E2U+sip" "!^.*$!sip:+9997309051305@sip.armor.tel!" .
- NXDOMAIN bedeutet, dass die Nummer nicht vergeben oder freigegeben wurde. Senden Sie solche Anrufe nicht: Der Server antwortet mit 404.
- Caching. Die Einträge haben eine TTL von 5 Minuten. Eine freigegebene Nummer wird 90 Tage lang nicht neu vergeben.
Signalisierung: SIP
- Die Adresse stammt aus NAPTR; Server und Port werden nach RFC 3263 aufgelöst (SRV _sips._tcp, _sip._tcp, _sip._udp).
- TLS wird empfohlen: Port 5061 (SRV _sips._tcp), ein Let's-Encrypt-Zertifikat für sip.armor.tel, SNI erforderlich, kein Client-Zertifikat nötig. Unverschlüsselt: UDP und TCP auf Port 5080.
- Keine Registrierung und kein Passwort. Jeder Server, der die Nummer in ENUM findet, kann eine +999 anrufen.
- From wird unverändert an den Nutzer weitergegeben und nicht geprüft. Tragen Sie die Nummer des Anrufers in E.164 mit einem „+“ ein.
- Limits: 10 INVITEs pro Sekunde von einer Adresse und 30 gleichzeitige Anrufe pro Nummer. Darüber: 503 mit Retry-After.
- Wiederholungen nach RFC 3261; bei TCP/TLS die Verbindung offen halten, mit CRLF-Keep-Alives.
Medien: RTP
- Kein Transcoding. Der Server leitet RTP durch und verändert die SDP-Codecs nicht: Sie werden mit dem Gerät des Nutzers ausgehandelt. Die Geräte unterstützen Opus, G.722, G.711 A/µ.
- SRTP und ZRTP werden durchgereicht: a=zrtp-hash und ZRTP-Pakete erreichen den Nutzer. Unterstützt Ihre Seite ZRTP, ist der Anruf zwischen Ihnen und dem Nutzer verschlüsselt.
- DTMF: RFC 4733 (telephone-event) in RTP.
- Nicht unterstützt: Early Media und Late Offer. Ein INVITE ohne SDP erhält 488.
Wie ein Anruf abläuft
100 Trying, dann 180
Der Server weckt die schlafenden Geräte des Nutzers per Push und lässt sie alle gleichzeitig klingeln. Das erste 180 kann einige Sekunden dauern.
200 OK vom Ersten, der abnimmt
Die anderen Geräte hören auf zu klingeln. Die Medien laufen über den Armor-Server; die Adressen stehen im SDP der Antwort.
Fehler
404: Die Nummer ist nicht vergeben. 480: Kein Gerät ist online. 486: besetzt oder abgelehnt. 503: Limit erreicht.
Nachrichten
SIP MESSAGE an dieselbe Adresse sip:+999…@sip.armor.tel, mit einem Body vom Typ text/plain oder message/cpim. Der Server stellt sie allen Geräten des Nutzers zu, und Offline-Geräten, sobald sie online kommen; die Antwort ist 202. Die Antwort des Nutzers geht an die Adresse in Ihrem From, sie muss also aus dem Internet erreichbar sein.
Verkehr von +999 zu Ihnen
Der Armor-Server führt keine ausgehenden Anrufe in andere Netze. Ein +999-Nutzer erreicht Ihre Nummern über ein Konto bei Ihnen: Er fügt Ihre Leitung in der App hinzu und ruft von Ihrer Nummer aus an. Für Sie ist er ein gewöhnlicher SIP-Teilnehmer.
- Was wir von Ihnen brauchen: SIP-Zugang (Adresse, Benutzername, Passwort, TLS), Weiterleitung an eine SIP-Adresse und, wenn Sie möchten, SMS über SIP MESSAGE.
- Für die Einrichtung mit zwei Fingertipps geben Sie Ihren Nutzern einen QR-Code mit Einstellungen im Linphone-Remote-Provisioning-Format. Die App liest ihn.
- Anbieterkatalog. Wir können Sie in die Anbieterliste der App aufnehmen: Der Nutzer wählt Sie und meldet sich per OAuth bei seinem Konto an, und die App holt die Einstellungen selbst. Sie brauchen eine OAuth-Anmeldung und einen Endpunkt für die Einstellungen.
- Eine verifizierte +999-Nummer in From ist beim Anruf zu Ihnen nicht verfügbar. Wenn Sie sie brauchen, schreiben Sie uns.
Beispiel: Asterisk
PJSIP, Asterisk 18 und neuer. Eingehende Anrufe an Ihre +999-Nummern werden ohne Registrierung angenommen, aber nur für die aufgeführten Nummern. Ausgehende Anrufe an +999 gehen an die Adresse aus 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)- Sicher. Der Kontext from-armor enthält nur Ihre Nummern, sodass kein fremder Anruf durch die Telefonanlage laufen kann.
- Nummer nicht vergeben: ENUM ist leer, und der Anruf endet sofort, ohne einen Verbindungsversuch.
Beispiel: FreeSWITCH
Eingehende Anrufe nimmt das Profil external an (Port 5080: Veröffentlichen Sie einen SRV-Eintrag _sip._udp.pbx.example.com mit diesem Port). Ausgehende Anrufe laufen über 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>- Der Kontext public nimmt nur die aufgeführten Nummern an: FreeSWITCH weist alles andere ab.
Testen
Die Testnummer +999 100 000 00 01 antwortet und sagt die Uhrzeit an: eine bequeme Möglichkeit, Route, Transport und Medien zu prüfen. Bei Fragen und zur Aufnahme in den Katalog schreiben Sie an ops@armor.tel.