Rufnummern Patternmatching

Hallo,

ich schaffe es mal wieder nicht Rufnummern-Patterns zu schreiben die auch funktionieren. Was ich gerne hätte ist ziemlich simpel. Folgendes soll für ausgehende Calls im Sip-Trunk matchen, so, dass ich passende Nummern übermitteln kann: Das Ziel hat 4-Stellige Durchwahlen un die Nummern sehen wie folgt aus: 09123-456-1234. Was bei mir nicht funktioniert: _X.9123456XXXX

Wie sagte ich es dem System so, dass es mich versteht? :slight_smile:

TIA
Matthias

Hallo Matthias,

sollte dann nicht 09123456${CALLERID(num)} funktionieren.
Siehe auch https://www.pascom.net/doc/de/trunks/rules/

Ansonsten poste bitte einmal deine ausgehenden Regeln.

LG Maik

Danke Maik, aber in die falsch Richtung gedacht. Es geht hier darum erst mal zu erkennen welche Nummer von innen angerufen wird damit dann die CDI passend gesetzt werden kann. Mein Problem ist dass mein Patternmatching für die Erkennung der Nummer die von innen nach aussen angerufen wird nicht funktioniert.

Klar ist, dass das Übermitteln “irgend welcher” Rufnummern nur mittel CLIP no screening geht.

Hallo Matthias,

…lass mal den . (Punkt) weg od. _09123456XXXX

cu
Christoph

Wie wird die Nummer für deinen Provider vorbereitet? mit führender 0 oder +49? Vielleicht auch ohne? Also nur 951…XXXX? Bei letzterem, ist das X. zu viel
Grüße
Jasper

Danke für die Tips. In der Kombination eines Telekom Deutschland LAN-IP und eines SIP-Trunk in der Anlage unter der Annahme, dass für alles immer nur die 0 vorgewählt werden soll und die Übermittlung der Rufnummern nur anhand der Nebenstelle und/oder des Ziels ermittelt werden soll funktioniert folgendes:

_X.9123456XXXX

Es könnte auch mit _00499123456XXXX funktionieren, das habe ich aber nicht getestet. Ist auch egal, da es das X. generisch macht.

@Tyrion - danke, das überzählige X hatte ich übersehn.

Noch eine Verständnisfrage, da jede Doku immer nur wieder das gleiche wiederholt und eine entscheidende Frage nicht beantwortet. Zumindest habe ich das nicht gefunden :slight_smile:

Welches Pattern matcht 123, in ALL diesen Fällen ?

  • 123
  • 123456
  • 456123
  • 456123456

Wobei 456 eine Anzahl N sein soll, nicht genau 3. Oder muss man alle 4 Fälle im Dialplan haben, also:

  • 123
  • _123X.
  • _X.123
  • _X.123X.

Hallo Matthias,

es gibt kein einziges - einzelnes - Pattern für Dein Beispiel. Nr1 und Nr2 funktionieren. Nr3 funktioniert auch, ist aber unsauber. Nr4 funktioniert nicht.

Wenn in den gewählten Rufnummern kein System zu erkennen ist, wird es schwierig mit RegEx. Es wird Zahl für Zahl verglichen und nach best-match entsprechend ausgewählt. Du musst also vorher wissen, wie viele Stellen Deine Telefonnummer hat und RegEx entsprechend danach ausrichten. Wenn Du es automatisieren willst und die Anzahl der Stellen unbekannt ist, wird das wohl auf ein pre-dial-Skript hinaus laufen, das diese Aufgabe übernimmt.
Wie schon von @maik vorgeschlagen, kommst Du an asterisk-Variablen nicht vorbei, die Du dann, nach allen Regeln der Kunst, zerlegen und auswerten musst.
Die ausgehende Rufnummer steht in:
MDC_CALLEE_NUM_INTERNAT (Internationales Format)
MDC_CALLEE_NUM_NAT (Nationales Format)

…und dann ist da noch die Sache mit dem . (Punkt)

Er steht für alles andere/alles was übrig bleibt, egal was - und sonst nix mehr

Wenn Du die Telefonnummern im TelBuch stehen hast, kannst Du sie evtl. über ein Label identifizieren. (nur so ein Gedanke…)

cu
Christoph

Danke, langsam verstehe ich warum ich das nicht verstehe. Mein Problem ist offensichtlich dass ich in anderem Kontext dauernd echte “regular expressions” verwende und das hier damit nichts zutun hat. Im richtigen Leben, ausserhalb von Asterisk, matcht mir /123/ einfach 123, egal wo es im Sting steht und Wildcards funktionieren überall und beliebig oft.

Wenn ich das jetzt richtig verstanden habe, dann ist es so, dass Asterisk (warum auch immer, gibt es dafür technische Gründe oder ist das nur so “historisch gewachsen”?) nur Zeichen für Zeichen vergleichen kann. Da der Punkt aber eine beliebige Anzahl von Zeichen matcht kann er sinnvoll nur am Ende eines Patterns verwendet werden.

Praktisch heisst das dann, da es am Anfang keine Wildcards geben kann muss ich immer das korrekte Format im passenden Kontext kennen und muss den Anfang der Nummern immer ganz im korrekten Format schreiben. Das Pattern kann dann beliebig X, Z, N, [] enthalten und bei Bedarf einen Punkt am Ende haben.

Ich habe es jetzt auch erst verstenden :smiley: Bisher habe ich so wie du gedacht

Freut mich. Für mich war in erster Linie das Problem, dass das nirgends so ausdrücklich steht bzw. ich habe nichts der Gleichen gefunden …

Was ich dabei nicht verstehe ist warum das so sein muss und warum in Asterisk nicht “einfach” “normale regular expressions” verwendet werden können. Mich würde wirklich der Hintergrund interessieren.

…warum das so ist bzw. ob das iwi historisch gewachsen ist, weiß ich auch nicht zu sagen.

…ja genau!
Die 123 lässt sich schon identifizieren. Wenn Du nicht weißt an welcher Stelle, musst Du halt alle Möglichkeiten abbilden.

_0XXX123X.
_0XXXX123X.
_0XXXXX123X. …usw.

Die Aufgabenstellung aus dem ersten Post ist ja klar, aber…

ich gestehe, dass ich die zweite Aufgabenstellung nicht wirklich nachvollziehen kann. Hast Du wirklich für ausgehende Rufnummern solche Anforderungen… zB.
040 731235574
0711 12363841
07021 9281239
07158 6912320

(od. verstehe ich - Anzahl N - falsch!?)

cu
Christoph

Nein, mit geht es dabei um das grundsätzliche … ich möchte das ein mal ganz verstehen um nicht immer wieder Probleme zu haben.