Beiträge durchsuchen

Themenreihe FreePBX/Asterisk Teil 3-Registrieren am Telekom DeutschlandLAN SIP-Trunk

Hier eine Anleitung wie man FreePBX/Asterisk am SIP-Trunk der Telekom registriert:

Bevor mit der eigentlichen Konfiguration begonnen werden kann, muss das TCP-Protokoll aktiviert werden, da die Telekom VOIP-Anschlüsse nur über TCP und nicht über UDP kommunizieren. Dazu wie folgt vorgehen:

Aktivieren des TCP-Protokolls

In FreePBX unter Einstellungen/Asterisk SIP-Einstellungen unter dem Punkt “Transporte”, Unterpunk “tcp” das TCP-Protokoll wie im nachfolgenden Screenshot gezeigt aktivieren:

Das TCP-Protokoll muss dann auch in der Konfiguratiin des SIP-Trunk aktiviert werden.

Einrichten des SIP-Trunk

Auf dem Telekom-Schreiben mit den Zugangsdaten findet man unter Punkt 3-Telefonie einrichten folgende Daten:

Telefonie-Benutzername: 550123456789

Telefonie-Passwort: geheim

Outbound-Proxy: reg.sip-trunk.telekom.de

Registrar: sip-trunk.telekom.de

Wir gehen in diesem Beispiel von folgender Telefonnummer aus:

Vorwahl: 05555

Stammnummer: 12345

Zentrale Durchwahl: 0

Diese Daten müssen im FreePBX exakt wie folgt eingetragen werden:

Hauptleitung (Trunk)

Achtung

Achtung! Im Feld “Transport” muss das tcp-Protokoll eingestellt sein.

In Feld “Context” muss stehen: from-pstn-pciheader

Dann den folgenden Context in die extensions_custom.conf eintragen:

[from-pstn-pciheader]
exten => _.,1,NoOp(Attempting to extract DID from SIP PAI header)
exten => _.,n,NoOp(SIP From: ${PJSIP_HEADER(read,From)})
exten => _.,n,NoOp(SIP To : ${PJSIP_HEADER(read,To)})
exten => _.,n,NoOp(SIP P-Called-Party-ID : ${PJSIP_HEADER(read,P-Called-Party-ID)})
exten => _.,n,NoOp(SIP PAI : ${PJSIP_HEADER(read,P-Asserted-Identity)})
exten => _.,n,NoOp(SIP PPI : ${PJSIP_HEADER(read,P-Preferred-Identity)})
exten => _.,n,NoOp(SIP Via : ${PJSIP_HEADER(read,Via)})
exten => _.,n,NoOp(SIP Call-ID : ${PJSIP_HEADER(read,Call-ID)})
exten => _.,n,NoOp(SIP Subject : ${PJSIP_HEADER(read,Subject)})
exten => _.,n,gotoif($[“${CHANNEL(channeltype)}”=”SIP”]?SIP)
exten => _.,n,gotoif($[“${CHANNEL(channeltype)}”=”PJSIP”]?PJSIP)
exten => _.,n,NoOp(Unable to determine SIP channel type)
exten => _.,n,goto(from-pstn,${EXTEN},1))
exten => _.,n(SIP),Goto(from-pstn,${CUT(CUT(SIP_HEADER(P-Called-Party-ID),@,1),:,2)},1)
exten => _.,n(PJSIP),Goto(from-pstn,${CUT(CUT(PJSIP_HEADER(read,P-Called-Party-ID),@,1),:,2)},1)

Erläuterung: Die Telekom macht da etwas anders als die anderen Provider. Im Normalfall wird die angerufene Nummer im “to” Feld des Headers übergeben. Das macht die Telekom zwar, aber leider nicht im einheitlichen Format. Meistens kommt die Nummer im Format +4912345… an. Manchmal aber auch als 012345 oder 004912345. Will man die angerufene Nummer dann über eine Inbound-Route an eine Nebenstelle oder Rufgruppe weiterleiten müsste man für jeder Nebenstellennummer und jedes mögliche Format eine Inbound-Route anlegen. Das kann man aber umgehen. Im SIP-Header-Feld “P-Called-Party-ID” wird die angerufene Nummer einheitlich im internationalen Format gesendet. Der Context [from-pstn-pciheader] liest dieses Feld anstelle des “To”-Feldes aus. So spart man sich mehrere Inbound-Routen für die selbe Nebenstelle oder Rufgruppe.

Achtung Fehlerteufel im Feld “Server URI”. Muss heißen: sip:sip-trunk.telekom.de

Und die Reihenfolge der Codecs wie folgt einstellen:

Achtung! Nochmal der Fehlerteufel. Der Codec g722 muss an erster Stelle stehen. Also mit der Maus einfach dahin verschieben und falls das Häkchen beim verschieben rausgeht, anschließend wieder reinklicken.

Inbound Route

In der Inbound Route muss die Telefonnummer wie folgt angegeben werden, damit die Weiterleitung über diese Route erfolgt.

Also: +49555123450 für die Zentrale, Z. B. +49555512345100, +49555512345200 usw. für die anderen Nebenstellen oder Rufgruppen.

Für jede Nebenstelle oder Rufgruppe die per Durchwahl direkt von außen erreichbar sein soll, muss jeweils eine Inbound Route angelegt werden

16 Kommentare zu Themenreihe FreePBX/Asterisk Teil 3-Registrieren am Telekom DeutschlandLAN SIP-Trunk

    1. Das ist eine FB 7590. Ist bei dieser Konfiguration aber egal, weil der Router lediglich die Internetverbindung bereit stellt. Die Freepbx registriert ja direkt am SIP-Trunk der Telekom.

  1. Wissen Sie, was ich bei der Inbound Route als DID angeben muss, um +4912345 als auch 012345 in die gleiche Nebenstelle weiterzuleiten. Kann man das mit einem Pattern abfangen? Aktuell habe ich für jede Nebenstelle 2 Inbound Routes angelegt. das geht doch sicherlich schöner.
    Die Telekom reicht die DID unterschiedlich durch. Übers Handy als +4912345, als Ortsgespräch mit 012345.
    Viele Grüße Thomas

      1. Danke für die schnelle Antwort.
        die Zeile “[from-pstn-custom]”, muss die genau so heißen, oder ist das der Name des Contextes des trunks “[from-pstn-toheaqder]”?

        1. Normalerweise müsste es so funktionieren wie von mir angegeben, da [from-pstn-custom] eigentlich in jedem Fall abgearbeitet wird.
          Das Wort custom sagt ja auch, dass es genau für solche nutzerspezifischen Anpassungen gedacht ist.
          Aber wie gesagt: ich hab’s nicht getestet. Aber es spricht ja nichts dagegen, wenn [from-pstn-custom] nicht funktioniert, es mal mit [from-pstn-toheader] zu probieren.

  2. Hallo,
    ich habe das alles so nachvollzogen wie angegeben. Allerdings wird der Trunk nicht registriert (rejected). Bei meinem Recherchen bin ich auf einen Forumsbeitrag bei community.freebox.org gestoßen, in dem Sie wohl dort auch diese Frage gestellt haben.
    Leider ergibt sich aus dem Beitrag keine Lösung.
    Ich nehme an dass Sie das Problem lösen konnten – können Sie mir einen Hinweis geben wo bei einem PJ-SIP Trunk der srvlookup eingetragen werden muss.
    Ich weiter gefunden, dass bei Asterisk (ohne freepbx) hier der sip.conf eingetragen werden soll, aber wird nicht diese Datei bei Updates von freepbx überschrieben?
    Sollte das dann in die sip_custom.conf eingetragen werden? Oder welche der *_custom.conf Dateien soll verwendet werden?
    Viele Grüße
    Norbert Zosig

    1. Hallo,
      ich habe gerade in den letzten 10 Tagen wieder 3 Installationen mit Registrierung am Telekom SIP-Trunk durchgeführt. Das hat geklappt ohne Probleme und extra Aktivierung eines SRV-Lookup.
      Bei mir hat der allererste Versuch am SIP-Trunk zu registrieren auch nicht geklappt und da habe ich auch im Web recherchiert. Da bin ich auf einen Beitrag gestoßen, dass es am SRV-Lookup liegen würde. War aber ein Beitrag über die Konfiguration von Chan-Sip. Für PJSIP hat das nicht zugetroffen.
      Tatsächlich habe ich Problem dann dadurch gelöst, in dem ich die Zugangsdaten zum SIP-Trunk in unterschiedlichen Varianten und in unterschiedliche Felder in der SIP-TRUNK-Konfiguration der FreePBX eingetragen habe.
      Also sollte das Problem recht einfach lösbar sein. Ich versuche Dir noch mal ein paar wichtige Hinweise zu geben, woran es liegen könnte.
      1. Die von mir beschriebene Konfiguration habe ich mit FreePBX14 / Asterisk 13 durchgeführt. Habs auch schon mit FreePBX 14 / Asterisk 15 probiert. Da hat die Registrierung auch geklappt aber da gibts noch einige Bugs. Also noch nicht empfehlenswert.
      2. Du musst die Anleitung 100%ig befolgen. Wirklich 100%ig. Ein klassischer Fehler ist zum Beispiel die Angabe des Trunk-Namen (das erste Feld im Reiter “General” der Trunk-Konfiguration). In meiner Anleitung steht da “550123456789”. Normalerweise ist der Trunk-Name frei wählbar. Nicht aber beim Telekom SIP-Trunk. Beim Telekom SIP-Trunk muss in das Feld “Trunk Name” zwingend der “Telefonie-Benutzername” aus Deinen Telefonie-Zugangsdaten rein. Das rauszufinden hat mich Tage gekostet.
      3. Was ich im Beitrag im Screenshot zwar gezeigt, aber nicht extra erwähnt habe ist die Verwendung des TCP-Protokolls. Die Telekom VOIP’s kommunizieren ausschließlich über TCP. Ich habe den Beitrag entsprechend ergänzt. Schau ihn bitte noch mal an.
      4. In meiner Anleitung, in dem Screenshot zum Reiter “erweitert” in der SIP-Trunk Konfiguration der FreePBX steht in dem Feld “Server-URI” ein falscher Wert. Der richtige Wert steht unterhalb des Screenschots hinter der Bemerkung “Achtung Fehlerteufel!”.
      5. Eins fällt mir noch ein. Die Telekom bietet ja 2 Typen von VOIP-Anschlüssen an. Zum einen den Telekom ALL-IP Anschluss als Ersatz für den früheren ISDN-Mehrgeräte-Anschluss (Da hatte man meistens 3 MSN’s) und den Telekom DeutschlandLAN SIP-Trunk als Ersatz für früheren ISDN-Anlagenanschluss (Das war der Anschluss mit den Durchwahlnummern). Meine Anleitung bezieht sich auf den Telekom DeutschlandLAN SIP-Trunk. Beim ALL-IP Anschluss wird eine andere Konfiguration erforderlich sein.

      Wenn Du also FreePBX 14 / Asterisk 13 verwendest und die Anleitung und meine Hinweise genau befolgst dann muss das auch klappen.

      Ich hoffe die Hinweise helfen. Gib mal ‘ne Info ob’s geklappt hat.

      Schönes Osterfest

      1. Hallo,
        danke für die schnelle Antwort. Ich habe den Unterschied erkannt. Ich verwende Asterisk 15 weil ich irgendwo gelesen habe dass es da angeblich keine Probleme gibt. Ich setze jetzt mal genau die gleiche Version auf und versuche es erneut.
        Ich melde mich dann wieder.
        Danke, schöne Ostern und Grüße aus Franken.
        Norbert

        1. Hallo,
          ich habe es nicht ausgehalten und es gleich probiert. Asterisk 14 war die Lösung! Endlich war die Registrierung erfolgreich!
          Vielen, vielen Dank für die tolle Anleitung und die fast schon lebensrettenden Hinweise.
          Ich bin ja erst seit Juli 2018 drüber.
          Viele Grüße
          Norbert Zosig

  3. Hi Danke für die wirklich gute Themenreihe! Leider funktionierte. Der Custom Extension Context bei uns nicht, da die Abfrage ob PJSIP oder normal SIP in deinem Beispiel nicht funktionierte. Da der Trunk eh von uns als PJSIP Trunk konfiguriert wurde ist die Abfrage eh hinfällig, sodass wir mit -.,n,Goto(from-pstn,${CUT(CUT(PJSIP_HEADER(read,P-Called-Party-ID),@,1),:,2)},1)

    Ohne das (PJSIP) in den Klammern wunderbar hinkommen 🙂

    Und warum hast du den g722 Codec erst an dritte Stelle und nicht an erster Stelle gesetzt? Das führt dazu, dass HD-Voice Anrufe nicht funktionieren weil die Telekom wohl dem Client den Vortritt bei der Wahl des Codecs lässt, obwohl beide Teilnehmer eines Anrufs HD-Voice fähig sind.

    Wollte meine Erfahrungen hier mal kund tun damit auch andere davon etwas haben 🙂

    1. Hallo, danke das Du Deine Erfahrungen mit uns teilst. Warum der Context nicht funktionieren soll ist mir nicht ganz klar. Den Code habe ich aus meiner eigenen Konfiguration kopiert. Da funktioniert er. Aber da PJSIP eh moderner ist, kann man mit Deinem Workaround erst mal leben. Der Codec G722 gehört tatsächlich an die erste Stelle. Das habe ich bei der Dokumentation einfach übersehen. Diese Anleitung habe ich einstmals für eine Anfrage eines Interessenten förmlich zusammengeschossen weil ich unbedingt und schnell helfen wollte. Und da haben sich eben leider einige Fehler eingeschlichen. Soll man eben nicht machen. Einige habe ich selbst bereits korrigiert. Einen hast Du jetzt noch gefunden. Das werde ich gleich einbauen. Ich habe ohnehin seit längerer Zeit vor diese ganze Themenreihe mal auf den aktuellen Stand zu bringen. Da wird dieser Beitrag auch vollständig überarbeitet werden.

  4. Hi,

    ich habe die Anleitung Schritt für Schritt befolgt, allerdings funktioniert bei mir das Rein-Telefonieren nur, wenn ich bei der Inbound Route statt +49 die 0 nehme, soweit in Ordnung.
    Allerdings kann ich von den Telefonen aus nicht nach draußen telefonieren, woran könnte das liegen? Habe schon versucht, eine Outbound Route wie in Teil 2 beschrieben anzulegen, funktioniert allerdings nicht.
    Weiterhin hätte ich die Frage, ob ich die beschriebene Änderung in der extensions_custom.conf irgendwie über die Weboberfläche machen kann. Bin leider ein Neuling in der Sache.

    Vielen Dank im Voraus

    1. Hast Du denn in der Outbound-Route auch die entsprechende Hauptleitung eingestellt? Falls Du Wählmuster (Patterns) in der Route angegeben hast, dann nimm sie zum Test mal alle raus und probiere dann.
      Die ectensions_custom.conf kannst Du auch ändern in der Weboberfläche im Menü Administrator/Config Edit.

      Grüße

      1. Hi,

        vielen Dank für deine schnelle Antwort! Die Outbound-Route habe ich tatsächlich schon mit allen möglichen Wählmustern versucht, überall einen Punkt “.”, alles einmal ausgefüllt mit “.”, oder tatsächlich keine. Mittlerweile hab ich folgende Fehlermeldung im Log gefunden:

        [2019-08-13 14:00:56] WARNING[2241] res_pjsip_outbound_registration.c: No response received from ‘sip:sip-trunk.telekom.de’ on registration attempt to ‘sip:+495xxxxx7770@sip-trunk.telekom.de’, retrying in ’60’

        Die “x” in der Nummer sind natürlich Ziffern…

        Ich denke mal, das wird damit zusammenhängen. Könnte es sein, dass die Outbound registration aufgrund von unpassenden Daten nicht funktioniert?

        Vielen Dank

        1. Vorweg eine kurze Erläuterung. Es gibt keine Outbound-Registrierung. Man registriert eine Hauptleitung beim Provider und schafft damit eine Verbindung zwischen FreePBX/Asterisk und dem Provider. Über diese Verbindung werden dann ausgehende und eingehende Gespräche geführt. Mit den Outbound- und Inbound-Routen wird nur der Weg beschrieben, den das Gespräch zwischen der Nebenstelle und der Hauptleitung nimmt. Da ist der Log-Eintrag etwas verwirrend. Ohne die Situation genau zu kennen, kann ich nur raten: Wenn Du bei eingehenden Gesprächen eine 0 statt einer +49 nehmen musst, vermute ich, dass Du als Anschluss keinen Telekom DeutschlandLAN SIP-Trunk sondern einen Telekom DeutschlansLAN IP-Anschluss hast. Wenn das so ist, dann bist Du im vollkommen falschen Beitrag. Du musst dann die Registrierung nach Teil 4 meiner Themenreihe durchführen.
          Diese Anleitungen sind Nachbauanleitungen. Wenn Du die selben Programmversionen und die richtigen Beiträge verwendest wird es auch funktionieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.