[Frage] Wozu Dial Pattern?

mani9876

Neuer User
Mitglied seit
5 Jun 2016
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Hallo,

wozu ist es eigentlich notwendig Dial Patterns zu erstellen?
Ist es nicht möglich, wenn ich ohnehin nur einen SIP Trunk mit einer Rufnummer ausgehend habe, einfach alle externen Rufnummern über diesen einen Trunk zu schicken?

Wenn ja, gibt es eine einfache Möglichkeit das ganze einzugeben, oder muss ich für jede Rufnummernlänge einen eigenen Eintrag machen?

Danke
Lg
 
Moins


Das kannst du gerne so machen...
Code:
; Trifft auf alle Nummern zu
exten => _X.,1,NoOp(${EXTEN})

Aber wie willst du dann, zum Beispiel, auf den Anrufbeantworter kommen :?:
 
Hallo,

umgehe ich nicht mit "*97" also mit den Stern den outbound call?

Aber ist es nicht umständlich jede einzelne Länge einzutragen?

Eine Festnetznummer kann doch bswp. zwischen 3 und 9 ziffern lang sein ( + Ortsvorwahl! ), müsste ich für jede Länge damit einen eigenen Eintrag machen?

Danke für die Hilfe, bin leider noch etwas neu in dem Bereich
Lg
 
Probiers aus, das ist nicht nötig, wenn ein . dran ist.
Für Nummern, die mit + beginnen, braucht man auch noch was.
 
Bei mir ist *97 unbekannt und asterisk quittiert das mit: Unknown extension
...da wird also nichts mit umgangen.

Das "Pattern Matching" folgt einer Logik der Prioritäten.
Wobei _X. immer die unterste Priorität bekommt, wenn eine andere Extension genauer trifft.
Die hat dann immer Vorrang.

Das macht besonders dann Sinn, wenn bestimmte Kontexte inkludiert werden.
Beispiel (welche Extension bekommt die höchste Priorität wenn zwei ** als Präfix gewählt werden)
asterisk -rvvvvv
Code:
osmc*CLI> dialplan show **799@osmc
[ Context 'osmc' created by 'pbx_config' ]
  '_**.' =>         1. NoOp(Fritz!Box internal Codes)             [pbx_config]
                    2. TrySystem(/etc/asterisk/osmc_notify.sh \"${CALLERID(name)} (${CALLERID(num)})\" "${EXTEN}") [pbx_config]
                    3. Dial(SIP/${EXTEN}@fbfgateway9,90)          [pbx_config]
                    4. Goto(s,${DIALSTATUS})                      [pbx_config]

-= 1 extension (4 priorities) in 1 context. =-
Antwort: Nur Eine

Nächster Versuch, 200 eine Zeitansage...
Code:
osmc*CLI> dialplan show 200@osmc
[ Context 'osmc' created by 'pbx_config' ]
  '200' =>          1. Verbose(Zeitansage)                        [pbx_config]
                    2. TrySystem(/etc/asterisk/osmc_notify.sh \"${CALLERID(name)} (${CALLERID(num)})\" "${EXTEN}") [pbx_config]
                    3. Gosub(Zeitansage)                          [pbx_config]
                    4. Gosub(Zeitansage)                          [pbx_config]
                    5. Goto(moh,start)                            [pbx_config]
[ Included context 'Zeitansage' created by 'pbx_config' ]
  '_X.' =>          40000. NoOp(Zeitansage: ${EXTEN})             [pbx_config]
                    40001. SayUnixTime(,UTC-2,akM)                [pbx_config]
                    40002. Return(0)                              [pbx_config]

[ Included context 'ANI' created by 'pbx_config' ]
  '_X.' =>          50000. NoOp(ANI: ${EXTEN})                    [pbx_config]
                    50001. Wait(0.25)                             [pbx_config]
                    50002. Answer()                               [pbx_config]
                    50003. Playback(vm-from)                      [pbx_config]
                    50004. SayDigits(${CALLERID(ani)})            [pbx_config]
                    50005. Wait(1.25)                             [pbx_config]
                    50006. SayDigits(${CALLERID(ani)})            [pbx_config]
                    50007. Return()                               [pbx_config]


-= 3 extensions (16 priorities) in 3 contexts. =-
Die 200 ist exakt definiert worden und bekommt deshalb die höchste Priorität.
Die zwei inkludierten _X. treffen dabei nicht, aber eine davon wird trotzdem ausgeführt, nämlich aus der Extension 200 heraus ( Gosub(Zeitansage) ).

Also immer schön die Pattern testen, dann gibt es auch keine unliebsamen Überraschungen.
Das gilt auch und insbesondere für die als Öffentliche Kontexte deklarierten: default und/oder public
Die sind für die eingehenden Anrufe zuständig und verdienen besondere Beachtung.
 
Hallo!

Super danke für die ausführliche Antwort.
Dann muss ich mich mal mehr damit beschäftigen und alle eventualitäten durchspielen :).

Danke vielmals
 
Das macht besonders dann Sinn, wenn bestimmte Kontexte inkludiert werden.

Da muss man etwas aufpassen. Innerhalb eines Contextes gilt das longest match Prinzip, wie Du beschrieben hast. Beim include ist das etwas anders: sofern es im Ursprungs-Context keine passende exten gibt wird der Reihe nach in den eingebundenen Contexten gesucht. Das heißt, erst wenn es im ersten include überhaupt keine passende exten/priority gibt wird das zweite include angesprungen usw.

Code:
[telefon]
include => festnetz
include => mobilfunk

[mobilfunk]
exten => _01[5-7]X.,1,Dial(SIP/Billiganbieter/${EXTEN})  ; <== wird nie aufgeführt, trotz longest match

[festnetz]
exten => _X.,1,Dial(SIP/Festnetzanbieter/${EXTEN})

Übrigens springt Asterisk auch in andere extens, wenn es in der aktiven die nächste Priorität nicht gibt und die Verarbeitung nicht irgendwie abgebrochen wird. Das kann lustige Effekte ergeben.

Mehr dazu unter https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching
 
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.