[Gelöst] Asterisk ausgehende Rufnummer abhängig von der internen Rufnummer belegen

Kuli70

Neuer User
Mitglied seit
26 Jan 2022
Beiträge
54
Punkte für Reaktionen
1
Punkte
8
Ich habe 2 registrierte externe Rufnummern (z.B. privat und geschäftlich).
Im Dialplan der extensions.conf steht für ausgehende Gespräche folgender Eintrag:

exten => _0Z.,1,Dial(PJSIP/telekom_Rufnummer-1_out/sip:${EXTEN}@tel.t-online.de,60)
exten => _0Z.,n,Hangup()

Jetzt möchte ich eine Wählregel abhängig von der ausgewählten internen Rufnummer estellen.
Dafür habe ich am SIP-Telefon 2 RUfnummern registriert z.B. PJSIP/10 und PJSIP/11.

Wenn ich intern die Leitung 1 (PJSIP/10) belege soll die externe telekom_Rufnummer-1 abgehend belegt werden,
wenn ich intern die Leitung 2 (PJSIP/11) belge soll die externe telekom_Rufnummer-2 abgehend belegt werden.

Hat jemand das so schon eingerichtet bzw. realisiert und kann mir ein Tip geben oder ein Biespiel senden?
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
14,126
Punkte für Reaktionen
576
Punkte
113
Moinsen


Im Wahlplan kannst du CallIDs matchen und nur diese dürfen die Extension wählen.
Für andere Nummern (User/Peers) existiert die Extension dann sozusagen nicht.
Hört sich komplizierter an als es ist.
Beispiel, deine Extension _0Z. darf nur die 10 nutzen, dann...
Rich (BBCode):
exten => _0Z./_10,1,Dial(PJSIP/telekom_Rufnummer-1_out/sip:${EXTEN}@tel.t-online.de,60)
exten => _0Z./_10,n,Hangup()
Siehe: Matching on Caller ID
 

Kuli70

Neuer User
Mitglied seit
26 Jan 2022
Beiträge
54
Punkte für Reaktionen
1
Punkte
8
Hallo.
So oder so ähnlich habe ich auch schon experimentiert. Jetzt setht im dialplan:

;national, mit 0 vorneweg
exten => _0Z./_10,1,Dial(PJSIP/telekom_Rufnummer-1_out/sip:${EXTEN}@tel.t-online.de,60)
exten => _0Z./_10,n,Hangup()
exten => _0Z./_11,1,Dial(PJSIP/telekom_Rufnummer-2_out/sip:${EXTEN}@tel.t-online.de,60)
exten => _0Z./_11,n,Hangup()

Funktioniert leider nicht.

[Mar 12 15:02:57] NOTICE[21362]: res_pjsip_session.c:4027 new_invite: 10: Call (UDP:192.168.3.2:5060) to extension 'Rufnummer' rejected because extension not found in context 'internalsip'.
[Mar 12 15:03:06] NOTICE[21362]: res_pjsip_session.c:4027 new_invite: 11: Call (UDP:192.168.3.2:5060) to extension 'Rufnummer' rejected because extension not found in context 'internalsip'.

Vielleicht funktioniert die Verknüpfung vom Syntax noch anders? Er soll ja erst schauen, ob mit "0" vorgeg gewählt wird und dann noch nach der internen Rufnummer.
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
14,126
Punkte für Reaktionen
576
Punkte
113
Hm, wie sieht denn die CallerID aus?
Ausgabe beispielsweise mit: exten => _0Z.,n,Verbose(1, CID: ${CALLERID(num)})

@Kuli70 - Check auch in der Asterisk-Konsole deinen Wahlplan auf (In)Konsistenz
Beispielausgabe CID Extensions...
Rich (BBCode):
*CLI> dialplan show [email protected]
[ Context 'demo' created by 'pbx_config' ]
  '4' (CID match '_1000') =>  1. answer(250)                                [extensions.conf:569]
                    2. Verbose(1, CID: ${CALLERID(num)})          [extensions.conf:570]
                    3. sayunixtime(,CET,akM,j)                    [extensions.conf:571]
                    4. wait(0.5)                                  [extensions.conf:572]
                    5. goto(2)                                    [extensions.conf:573]
  '4' (CID match '_1001') =>  1. answer(250)                                [extensions.conf:575]
                    2. Verbose(1, CID: ${CALLERID(num)})          [extensions.conf:576]
                    3. sayunixtime(,CET,akM,j)                    [extensions.conf:577]
                    4. wait(0.5)                                  [extensions.conf:578]
                    5. goto(2)                                    [extensions.conf:579]

-= 2 extensions (10 priorities) in 1 context. =-
 
Zuletzt bearbeitet:

Kuli70

Neuer User
Mitglied seit
26 Jan 2022
Beiträge
54
Punkte für Reaktionen
1
Punkte
8
Der dialplan sagt (für Rufnummern die mit führender "0" gewählt werden):

'_00X.' => 1. Hangup() [extensions.conf:39]
'_0Z.' (CID match '_10') => 1. Dial(PJSIP/telekom_Rufnummer-1_out/sip:${EXTEN}@tel.t-online.de,60) [extensions.conf:42]
2. Hangup() [extensions.conf:43]
'_0Z.' (CID match '_11') => 1. Dial(PJSIP/telekom_Rufnummer-2_out/sip:${EXTEN}@tel.t-online.de,60) [extensions.conf:44]
2. Hangup() [extensions.conf:45]

Sieht doch eigentlich ganz richtig aus, aber es funktioniert nicht.
Liegt es daran, dass ich mit pjsip arbeite?
Wie kann ich denn die caller ID überprüfen?
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
14,126
Punkte für Reaktionen
576
Punkte
113
Das _00X. 1. Hangup() ist nicht gut, weil es so von Allen als Erstes angesprungen wird, also Priorität über _0Z. hat/bekommt.
...eine Verschlimmbesserung...
:rolleyes:
Nimm das CID Match für eine Extension wieder raus, oder mach einfach eine Neue und nimm als erste Priorität...
exten => _0Z.,1,Verbose(1, CID: ${CALLERID(num)})
( Gilt jetzt wieder für Alle )
...oder etwas informativer...
exten => _0Z.,n,Verbose(1, CID: ${CALLERID(all)})
...um die CID's deiner 10 und 11 zu sehen um die mal eindeutig matchen zu können.
Denn die CID's _10 und/oder _11 matchen offensichtlich nicht im Kontext: [internalsip]
Ach ja, schraub verbose und debug level hoch, mindestens 3 bis höchstens 9, mit...
Code:
core set verbose 3
core set debug 3
Und noch was, solche RegEx-Extensions, wie du sie nutzt, werden mit Fantasienummern gecheckt mit "dialplan".
...oder eben Nummern, die auf gar keinen Fall matchen dürfen, Je nachdem halt.
Match-Tests auf real Existierende, also Die die erreicht werden sollen, sind natürlich: Pflicht
Beispiel 1:1 eintippen: dialplan show [email protected]
...oder alle Kontexte nach nem Match durchpflügen lassen: dialplan show [email protected]
 
Zuletzt bearbeitet:

Kuli70

Neuer User
Mitglied seit
26 Jan 2022
Beiträge
54
Punkte für Reaktionen
1
Punkte
8
In das _00x.1.Hangup() im Dialplan läuft er eigentlich nur bei internationelen Rufnummern mit "00".

Dafür hatte ich in der extension.conf

exten => _+X.,1,Hangup()
exten => _00X.,1,Hangup()

aufgenommen.

Die Wahl funktioniert z.B. bei Rufnummern beginnend mit "0" beim Eintrag:

exten => _0Z.,1,Dial(PJSIP/telekom_Rufnummer-1_out/sip:${EXTEN}@tel.t-online.de,60)
exten => _0Z.,n,Hangup()

aber nicht mit

exten => _0Z./_10,1,Dial(PJSIP/telekom_Rufnummer-1_out/sip:${EXTEN}@tel.t-online.de,60)
exten => _0Z./_10,n,Hangup()

Wie meinst du das mit "exten => _0Z.,1,Verbose(1, CID: ${CALLERID(num)})"?
Wo muss das hin und wie soll das aussehen? Vielleicht kannst du hier etwas ausführlicher werden?
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
14,126
Punkte für Reaktionen
576
Punkte
113
Der Einsprung in die Extension, also Priorität 1, für Alle...
Rich (BBCode):
exten => _0Z.,1,Verbose(1, CID: ${CALLERID(all)})
; Jetzt die CID match Prioritäten
exten => _0Z./10,n,Dial(PJSIP/telekom_Rufnummer-1_out/sip:${EXTEN}@tel.t-online.de,60)
exten => _0Z./11,n,Dial(PJSIP/telekom_Rufnummer-2_out/sip:${EXTEN}@tel.t-online.de,60)
exten => _0Z,n,Hangup()
( Was in <hier> ausgegeben wird ist die CID )
Beispielausgabe: CID: "ULE FON" <torwache>
Bei CID match: exten => 4/torwache,n,Verbose(1, CID: ${CALLERID(all)})
Wie du siehst, können CIDs auch lesbare Namen/Wörter sein ;)

Ein _ vor dem CID Pattern (Muster)) leitet ein RegEx ein.
Versuchs mal, wie im Beispiel, ohne.
Denn das Muster /_koyaanisqatsi würde nicht auf die CID koyaanisqatsi passen, nur auf einzelnen Buchstaben.
Mit /_[a-z]! würde koyaanisqatsi matchen und ohne Unterstrich /koyaanisqatsi müsste ganz genau matchen und würde dann auch die höchste Priorität bekommen.
 
Zuletzt bearbeitet:

Kuli70

Neuer User
Mitglied seit
26 Jan 2022
Beiträge
54
Punkte für Reaktionen
1
Punkte
8
Hallo danke, so funktioniert es :)
Interessanter weise mit und ohne Unterstrich "_" vor der CID.

-- Zusammenführung Doppelpost gemäß Boardregeln by stoney

Ich habe mal noch ein Frage:

Kann ich auch mehrere CID in einem Ausdruck verknüpfen?
Also z.B wenn der Anruf von CID 10 oder 20 initierert wird, weil andere Teilnehmer mit dem Eintrag "exten => _0Z.,1,Verbose(1, CID: ${CALLERID(all)})" ja sonst nicht mehr raus wählen können.

so wie:
exten => _0Z./_10 oder 20,n,Dial(PJSIP/telekom_Rufnummer-1_out/sip:${EXTEN}@tel.t-online.de,60)

Also eine echte Oderverknüpfung und nich mich mit Pattern Matching "_X0".
 
Zuletzt bearbeitet von einem Moderator:

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
14,126
Punkte für Reaktionen
576
Punkte
113
Dazu braucht es nur ein wenig RegEx Denkmeditation.
Beispiel, ich denke, das CID Pattern müsste dann so aussehen: /_[12]0
Wobei [12] nicht 12 sondern 1 oder 2 entspricht und die Null am End lediglich noch dazukommt, damit es genau auf entweder 10 oder 20 matcht.
...deswegen auch ohne Punkt oder Ausrufezeichen am Ende.
/_[1-2]0 ist ein Bereich von 1 bis 2 und würde in diesem Fall ( 10 oder 20 ) auch passen ;)
Wenn du noch mehr Zweistellige brauchst dann die einzelne Null ersetzen, bspw.: /[12][0-1]
...für die Bereiche: 10 bis 11 und 20 bis 21
 
Zuletzt bearbeitet:

Statistik des Forums

Themen
242,272
Beiträge
2,178,519
Mitglieder
367,267
Neuestes Mitglied
sheldon7839
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.