Eingehende Rufnummern werden mit Vorwahl + Rufnummer angezeigt - nicht mit +49

sharbich

Neuer User
Mitglied seit
30 Aug 2012
Beiträge
182
Punkte für Reaktionen
2
Punkte
18
Hallo Ihr Lieben,

ich verzweifle langsam. Leider werden eingehende Anrufe nicht als +49yyyyxxxxxx sondern als 0yyyyxxxxxx angezeigt. Wie kann ich das ändern? Ich Denke über die extensions.conf im Abschnitt [incoming] oder?

Hier der Auszug aus meiner extensions.conf
Bash:
[incoming]
exten => _X.,1,Answer()
same => n,Verbose(D E F A U L T ==> ${CALLERID(num)} kam um ${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)} in UNSPECIFIED an, als es versuchte die Nummer ${EX$
  same => n,Playback(No_permissions)
  same => n,Hangup()

Könnt Ihr mir einen Tipp geben wie ich das Problem behebe?

Gruß von Stefan
 
Deine extensions.conf macht nichts mit der Rufnummer. Wenn sie nicht verändert wird wird sie so im System verarbeitet wie sie von der ankommenden Partei signalisiert wird. Das kann unterschiedlich sein, bspw. ist es bei der Telekom auch abhängig davon, von welchem Fremd-Provider der Ruf reinkommt.
Du müsstest dann die CallerId entsprechend modifizieren.
 
Du müsstest dann die CallerId entsprechend modifizieren.
Kannst Du mir einen Tipp geben wie ich die Call ID modifizieren kann damit diese immer mit +49Vorwahl ohne 0 und Rufnummer angezeigt wird?
 
Für die umgekehrte Richtung geht es so:
Code:
 same => n,ExecIf($["${CALLERID(num):0:3}"="+49"]?Set(CALLERID(num)=0${CALLERID(num):3}))

Du müsstest dann insb. prüfen mit wie vielen 0en die Rufnummer anfängt (0x,1x,2x) und dann entsprechend reagieren.
 
Du müsstest dann insb. prüfen mit wie vielen 0en die Rufnummer anfängt (0x,1x,2x) und dann entsprechend reagieren.
Die Anrufe kommen mit Vorwahl + Rufnummer rein. Z. B. 03012345678. Wie müsste ich das dann anpassen?
 
So in etwa:
Code:
 same => n,ExecIf($["${CALLERID(num):0:1}"="0"]?Set(CALLERID(num)=+49${CALLERID(num):1}))
 
Davor mache ich bei mir noch

Code:
same => n,Set(CALLERID(num)=${If($["${CALLERID(num):0:2}"="00"]?+${CALLERID(num):2}:${CALLERID(num)})})

Sonst werden ausländische Nummern evtl eingedeutscht, weil ${CALLERID(num):0:1}=0 auch auf zwei führende Nullen zutrifft.
 
Zuletzt bearbeitet:
Ich hab auch einen Ansatz, den ich schon seit vielen Jahren einsetze. Da er relativ universell ist, ist er halt etwas umfangreicher. Er funktioniert auch mit Providern die internationale Nummern mit einem + schicken. Ich glaube die ursprüngliche Inspiration für diese Vorgehensweise hab ich sogar hier gefunden vor Jahren.

Code:
exten => extension,1,GotoIf($["${CALLERID(num):0:1}" = "+"]?1000) ;international mit plus
exten => extension,2,GotoIf($["${CALLERID(num):0:2}" = "00"]?2000) ;international mit 00
exten => extension,3,GotoIf($["${CALLERID(num):0:1}" = "0"]?3000) ;national mit 0
exten => extension,4,Set(CALLERID(all)=00${CALLERID(num)})
exten => extension,5,Dial.... oder was auch immer man jetzt tun moechte
exten => extension,6,Hangup
exten => extension,1000,Set(CALLERID(all)=${CALLERID(num):1})
exten => extension,1001,Goto(1)
exten => extension,2000,Set(CALLERID(all)=${CALLERID(num):2})
exten => extension,2001,Goto(1)
exten => extension,3000,Set(CALLERID(all)=49${CALLERID(num):1})
exten => extension,3001,Goto(1)
 
Zuletzt bearbeitet:
Da er relativ universell ist, ist er halt etwas umfangreicher.

... und irgendwie umständlich mit den Gotos und fester Nummerierung ;-)

Wer möchte, hier ein Einzeiler, der für alle Eventualitäten gerüstet ist:

Code:
same => n,Set(CALLERID(num) = ${If($["${CALLERID(num):0:2}"="00"] ? +${CALLERID(num):2} : ${If($["${CALLERID(num):0:1}"="0"] ? +49${CALLERID(num):1} : ${If($["${CALLERID(num)}"!="unknown"] ? +49DeineVorwahl${CALLERID(num)})} )} )}  )

Zur besseren Lesbarkeit habe ich Leerzeichen eingefügt, damit man sieht was wie zusammen gehört.

001234 => +1234
01234 => +491234
1234 => +49Vorwahl1234
unknown => <leer>
 
Hallo sunnyman,

in der Datei
Bash:
/var/log/asterisk/cdr-csv/Master.csv
sehe ich das die Anrufer mit +49 angezeigt werden. Auch im Display des SIP Client (z. B. ZoiPer Android Client). Soweit gut dachte ich.

Aber: An den DECT Telefonen der Gigaset N 510 IP Pro wird die Nummer ohne die +49 angezeigt. Die DECT
Telefone sind in Asterisk als Nebenstellen in der pjsip.conf konfiguriert.

Muss ich dort noch was anpassen?
 
Hallo Ihr Lieben,

habt Ihr keine Idee was ich machen kann?

Gruß von Stefan Harbich
 
Was steht denn im Invite an die Gigasets im From-Header?

Ich habe damit keine Probleme. Intern fahre ich E164-Nummern grundsätzlich ohne führendes +. Die Gigasets machen daraus automatisch 0[Vorwahl][Rufnummer] - alles gut.

Wichtig ist die Einstellung im Gigaset:

Screenshot_20220815_131126.png

Eine Vorwahl habe ich da bewusst nicht drin, weil alle Nummernmanipulationen grundsätzlich in Asterisk gemacht werden (da braucht es ein Konzept dazu, damit kein Chaos entsteht und die Schnittstellen klar sind - FreePBX hilft dabei enorm durch die klare Strukturierung des Callverlaufs) - sonst nirgends (bzw. auf Default bleiben). Asterisk kann auch aus einer Rufnummer ohne Vorwahl automatisch eine ordentliche E164 Nummer machen und für die Telekom z.B. dann noch das führende + dazu.
 
Was steht denn im Invite an die Gigasets im From-Header?
Kurze Nachfrage. Wo kann ich das genau sehen? Im Display des DECT Telefon?

Ich habe Deine Einstellungen übernommen. Ein Anruf wird immer noch mit Vorwahl+Rufnummer angezeigt.
Nicht mit +49(Vorwahl ohne 0)Rufnummer. An meinen SIP Client (ZoiPer) wird die Nummer aber korrekt angezeigt.
Kann es sein das in der Asterisk Konfiguration wasch falsch ist (pjsip.conf / extensions.conf)?
 
Ein Anruf wird immer noch mit Vorwahl+Rufnummer angezeigt.
Das ist doch bestens und korrekt - was willst Du eigentlich noch mehr? Ich kenne kein Gigaset-Mobilteil, mit dem man ein +-Zeichen zum Wählen eingeben könnte. Wozu soll man die +E164-Notation intern haben wollen - erschließt sich mir nicht.

Was Zoiper macht, ist Folge einer inkorrekten Konfiguration. Auch dort will man intern keine +E164-Nummern.

Um die Infos zum From-Header zu bekommen, musst Du einen SIP-Trace machen und verstehen. Wie man das macht überlasse ich Dir zum Selbststudium. Wer einen Asterisk-Server betreibt, sollte das beherrschen. Seiten dazu, wie man das macht, gibt es im Internet wie Sand am Meer - auch ich habe das gefühlt hier in zig Postings schon geschrieben - habe aber mittlerweile keine Lust mehr, das jedesmal vorzubeten.
 
Wozu soll man die +E164-Notation intern haben wollen
Ich nutze ein LDAP Adressbuch mit den +49 Rufnummern weil ich öfters im Ausland bin und dann mit einer E164 Nation Nummer nicht wählen kann. Weil die +49 oder 0049 fehlt.

Da alle Rufnummern in den Kontakten mit +49 beginnen wird bei einen Anruf nicht der Name angezeigt nur die Vorwahl mit Rufnummer.

Beim Zoiper Client wird mir dagegen der Name angezeigt.
 
Dann schalte die Nummernmanipulation im Gigaset ab. An der gleichen Stelle möglich wie im Screenshot von mir weiter oben gepostet. Einfach in der Liste ganz unten auf freie Eingabe oder wie es auch immer heißt, stellen und dann nichts eingeben - dann gehe ich davon aus, dass er die Nummer so übernimmt, wie er sie bekommt. In wie weit trotzdem unabhängig davon das führende + automatisch entfernt wird, weiß ich nicht - wie gesagt - intern hat man üblicherweise keine +-Notation.

Ergänzung:
Gerade mal mit dem Gigaset eigenen deutschen Kontakten getestet (Kontaktliste exportiert und wieder importiert mit unterschiedlichen Nummernvarianten) - auf Basis der im Screenshot weiter oben definierten Vorgabe 49 für Deutschland:

Code:
Nummer in Datei             Nummer nach Import
1. [Rufnummer]              [Rufnummer]
2. [Vorwahl][Rufnummer]     [Vorwahl][Rufnummer]
3. [E164-Nummer]            [Vorwahl][Rufnummer]
4. [+][E164-Nummer]         [Vorwahl][Rufnummer]

Ergo: der interne Filter macht aus fast sämtlichen Formaten immer das Format [Vorwahl][Rufnummer]. Hätte ich eine Vorwahl bei mir im Gigaset hinterlegt, hätte er im ersten Fall sicher auch [Vorwahl][Rufnummer] daraus gemacht.

Den gleichen Filter wendet er auch bei eingehenden Gesprächen an. Daher werden auch alle Varianten gefunden (selbst Variante 1 - wahrscheinlich wird da ein matching von rechts gemacht).

In anderen Worten: aus Deinen deutschen +E164-Nummern im Adressbuch sollte Gigaset eigentlich [Vorwahl][Rufnummer] machen - genauso wie aus dem eingehenden Call +E164. Damit kann erfolgreich gematched werden.

Unter der Annahme, dass das grundsätzliche Verfahren bei LDAP nicht abweichend ist, wüsste ich nicht, warum der in Deinem Fall nicht matchen sollte - falls die LDAP-Anbindung an sich korrekt ist und die Daten korrekt codiert sind (vermutlich UTF-8 - das wird zumindest im frei einbindbaren Adressbuch erwartet) und nicht sonst noch irgendwelche Zeichen dabei sind, die da nicht hingehören.

Noch was:
Im eingehenden Call in der Anruferliste siehst Du auch die ursprünglich übergebene Nummer vom Invite unter Ansehen - dort der CNIP-Eintrag. Dann musst Du keinen Trace aufsetzen.
 
Zuletzt bearbeitet:
Hallo,

ich bin ein wenig weiter gekommen. Wenn ich auf "Anderes Land" einstelle, dann wird mir die Nummer im Mobilteil des Gigaset wie folgt angezeigt "49[Vorwahl ohne Null][Rufnummer].

Das ist ja schon mal ein Teilerfolg. Jetzt muss ich im Asterisk aus der "+" zwei "00" machen und im Adressbuch des LDAP die Nummern wie folgt "0049[Vorwahl ohne Null][Rufnummer] eintragen und der Name beim Anruf müsste angezeigt werden? Oder?
 
Wenn ich auf "Anderes Land" einstelle, dann wird mir die Nummer im Mobilteil des Gigaset wie folgt angezeigt "49[Vorwahl ohne Null][Rufnummer].
Wie ich gesagt habe ...

Verabschiede Dich doch endlich mal von dem +-Zeichen! Die E164 ist eindeutig - eindeutiger geht gar nicht mehr. Schmeiß das +-Zeichen des eingehenden Calls gleich am Eingang im Trunk raus und mach es speziell für den Trunk für ausgehende Calls (falls der Provider das benötigt), wieder dazu. Arbeite intern ausschließlich mit E164-Nummern und gut ist.

Dir fehlt ein tragfähiger, konsequenter Nummernplan mit klarer Definition und klaren Schnittstellen. Aber langsam kommst Du ja in die richtige Richtung.
 
Was ich aber nicht verstehe.
E164 bezieht sich doch explizit auf das"+".
Siehe Was ist E164 Format
 
Ich halte es da mit den offiziellen Definitionen: (E164 - gerne auch im Original nachzulesen)

As defined by the ITU-T, the E.164 general format must contain only digits split as follows:
  • Country code (1 to 3 digits)
  • Subscriber number (max 12 digits)

Im Kapitel 12 im Original ist nachzulesen:
In accordance with [ITU-T E.123], the symbol "+" is recommended to indicate that an international prefix is required.

Die Plus-Notation wiederum ist eine Recommendation basierend auf E123: It provides guidelines for the presentation of telephone numbers, email addresses, and web addresses in print, on letterheads, and similar purposes.

Welchen Sinn hat nun das +-Zeichen überhaupt? Die E.164 ist doch schon eindeutig ...

(bezogen auf ausgehende Calls)
The user or the telephone system should replace the + symbol with international dialing prefix used in the caller's location.

=> Der Anrufer soll das +-Symbol durch den international dialing prefix ersetzen (für Deutschland z.B. 00). Oder mit vielen Beispielen hier erklärt.


Langer Rede kurzer Sinn:
Intern mit E.164-Nummern fahren und im Trunk auf das vom SIP-Provider vorgegebene / gewünschte Format umsetzen. Genauso beim eingehenden Call: die vom SIP-Provider erhaltene Nummer auf E.164 umsetzen / normalisieren. Damit ist sichergestellt, dass die Nummer im Telefonbuch gefunden werden kann (egal aus welchem Land der Call auch immer kam). Alles andere überlasse Deinem SIP-Provider und verhalte Dich entsprechend dessen Vorgaben im Trunk (es gibt ja die Möglichkeit, dass Du mehrere SIP-Provider nutzt und jeder andere Vorstellungen davon hat, wie er einen ausgehenden Call gerne hätte bzw. wie er eingehende Calls präsentiert - Du musst an dieser Stelle normalisieren - am sinnvollsten auf E.164).
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.