[Problem] Rufumleitung tut es nicht!

asterisksven1

Neuer User
Mitglied seit
30 Mrz 2011
Beiträge
14
Punkte für Reaktionen
0
Punkte
0
Hi!

Bin noch etwas unsicher mit asterisk. Ich habe wie im Buch ein Call forward eingerichtet!

Code:
[from-intern]
; Call-Forwarding für einen einzelnen Anschluss
;
; aktivieren
exten => _44X.,1,Answer()
exten => _44X.,n,Set(DB(CF/${CALLERID(num)})=${EXTEN:2})
exten => _44X.,n,SayDigits(${EXTEN:2})
exten => _44X.,n,NoOp(Weiterleitung fuer ${CALLERID(num)} auf ${EXTEN:2} aktiviert.) 
exten => _44X.,n,Hangup()

; deaktivieren
exten => 44,1,Answer()
exten => 44,n,DBdel(CF/${CALLERID(num)})
exten => 44,n,Playback(auth-thankyou)
exten => 44,n,NoOp(Weiterleitung fuer ${CALLERID(num)} deaktiviert.) 
exten => 44,n,Hangup()

[from-extern]
exten => _X.,1,NoOp(Anruf von ${CALLERID(num)} fuer ${EXTEN})
exten => _X.,n,GotoIf($[foo${DB(CF/${EXTEN})} != foo]?normal:forward)
exten => _X.,n(normal),Dial(SIP/${EXTEN})
exten => _X.,n(forward),NoOp(Anruf fuer ${EXTEN} wird verbunden zu ${DB(CF/${EXTEN})})
exten => _X.,n,Dial(local/${DB(CF/${EXTEN})})

Wenn sich die Nebenstelle anrufe sagt ASterisk- CLI :
[Apr 5 12:31:56] NOTICE[21492]: chan_sip.c:20314 handle_request_invite: Call from '20' to extension '4440' rejected because extension not found in context 'default'.
== Using SIP RTP CoS mark 5


Was muss ich noch eintragen? Was fehlt in der Beschreibung vom Buch?

Danke für EUre Hilfe!
 
Hi asterisksven1!
asterisksven1 schrieb:
...Call from '20' to extension '4440' rejected because extension not found in context 'default'.
...Was muss ich noch eintragen?
Der Apparat mit dem du anrufst landet im Context [default] (Eintrag in der sip.conf). Entweder dort auf [from-intern] ändern oder ein include => [from-intern] in die extensins.conf beim Context [default].
 
Jo, geht jetzt und sagt es sei aktiviert. Dake erst einmal.
Using SIP RTP CoS mark 5
-- Executing [4440@default:1] Answer("SIP/Ulf-00000012", "") in new stack
-- Executing [4440@default:2] Set("SIP/Ulf-00000012", "DB(CF/20)=40") in new stack
-- Executing [4440@default:3] SayDigits("SIP/Ulf-00000012", "40") in new stack
-- <SIP/Ulf-00000012> Playing 'digits/4.gsm' (language 'en')
[Apr 5 14:06:23] NOTICE[22256]: channel.c:3137 __ast_read: Dropping incompatible voice frame on SIP/Ulf-00000012 of format ulaw since our native format has changed to 0x8 (alaw)
-- <SIP/Ulf-00000012> Playing 'digits/0.gsm' (language 'en')
-- Executing [4440@default:4] NoOp("SIP/Ulf-00000012", "Weiterleitung fuer 20 auf 40 aktiviert.") in new stack

Wenn ich nun die Extension anrufe, wird die Weiterleitung nicht ausgeführt es klingt lediglich Extension 20. Hat jemand eine Lösung dafür?
-- Executing [20@default:1] Dial("SIP/Office_Phone-00000013", "SIP/Ulf@Ulf") in new stack
== Using SIP RTP CoS mark 5
-- Called Ulf@Ulf
-- SIP/Ulf-00000014 is ringing
-- SIP/Ulf-00000014 is ringing
== Spawn extension (default, 20, 1) exited non-zero on 'SIP/Office_Phone-00000013'
 
Könntest Du die CLI Auszüge bitte in Code-Tags packen, das ist ja augenfeindlich.

Du hast noch ein Durcheinander in den Contexten. Die Umleitung wäre in from-extern definiert, dort befindest Du Dich aber nicht. Priorität 1 wäre dann nämlich ein Noop und nicht gleich ein Dial wie in Deinem Auszug.

Btw: die Zeile
Code:
exten => _X.,n,GotoIf($[foo${DB(CF/${EXTEN})} != foo]?normal:forward)

ist doch falsch, oder? Wenn es keinen AstDB Eintrag gibt, wäre foo${DB...}!=foo falsch, und damit wird nach forward gesprungen, obwohl keine Umleitung eingerichtet ist. Oder denke ich grad falsch rum? Wenn ja bitte Gande, ich bin blond.
 
Ich bin mir nicht sicher worauf du hinauswillst . Ich habe die Vorlage aus http://www.das-asterisk-buch.de/ Kapitel 15.6. Wenn ich die config von der Console neulade erhalte ich Warnings für [from-extern]. Liegt es daran, das die Umleitung nicht geht? Der eintrag ist in der Datenbank zu finden!

-- Added extension '_44X.' priority 1 to from-intern (0x2aaaac55ef60)
-- Added extension '_44X.' priority 2 to from-intern (0x2aaaac55ef60)
-- Added extension '_44X.' priority 3 to from-intern (0x2aaaac55ef60)
-- Added extension '_44X.' priority 4 to from-intern (0x2aaaac55ef60)
-- Added extension '_44X.' priority 5 to from-intern (0x2aaaac55ef60)
-- Added extension '44' priority 1 to from-intern (0x2aaaac55ef60)
-- Added extension '44' priority 2 to from-intern (0x2aaaac55ef60)
-- Added extension '44' priority 3 to from-intern (0x2aaaac55ef60)
-- Added extension '44' priority 4 to from-intern (0x2aaaac55ef60)
-- Added extension '44' priority 5 to from-intern (0x2aaaac55ef60)
-- Registered extension context 'from-extern' (0x2aaaac0042a0) in local table 0xe5ae790; registrar: pbx_config
[Apr 6 13:16:13] WARNING[4328]: pbx_config.c:1480 pbx_load_config: Can't use 'next' priority on the first entry at line 84!
[Apr 6 13:16:13] WARNING[4328]: pbx_config.c:1480 pbx_load_config: Can't use 'next' priority on the first entry at line 85!
[Apr 6 13:16:13] WARNING[4328]: pbx_config.c:1480 pbx_load_config: Can't use 'next' priority on the first entry at line 86!
[Apr 6 13:16:13] WARNING[4328]: pbx_config.c:1480 pbx_load_config: Can't use 'next' priority on the first entry at line 87!
-- Registered extension context 'default' (0x2aaaac004930) in local table 0xe5ae790; registrar: pbx_config
-- Including context 'from-intern' in context 'default'
-- Including context 'from-extern' in context 'default'
 
Schon wieder keine Code-Tags! [noparse]
Code:
...
[/noparse]

Du hast einen Fehler im Dialplan:
pbx_config.c:1480 pbx_load_config: Can't use 'next' priority on the first entry at line 84!

Da der from-extern in default eingebunden ist, hast Du vermutlich zwei exten's, die sich überschneiden.

Du hast oben
Code:
[from-extern]
exten => _X.,1,NoOp(Anruf von ${CALLERID(num)} fuer ${EXTEN})

stehen, aber es wird

Code:
Executing [20@default:1] Dial("SIP/Office_Phone-00000013", "SIP/Ulf@Ulf")

ausgeführt. Also muss es noch irgendwo im default eine exten geben, die auf 20 passt und Dial(SIP/Ulf@Ulf) macht.
 
leider noch komplizierter: Hier der Auszug aus meiner Extensions.conf:

[incoming]
exten => s,1,Set(Var_TO=${SIP_HEADER(TO)})
exten => s,2,GotoIf($["${Var_TO}" = "<sip:[email protected]>"]?incoming6,s,1:3)
...

[incoming6]
exten => s,1,Dial(SIP/20&81&82&83)

[from-intern]
; Call-Forwarding füen einzelnen Anschluss
;
; aktivieren
exten => _44X.,1,Answer()
exten => _44X.,n,Set(DB(CF/${CALLERID(num)})=${EXTEN:2})
exten => _44X.,n,SayDigits(${EXTEN:2})
exten => _44X.,n,NoOp(Weiterleitung fuer ${CALLERID(num)} auf ${EXTEN:2} aktiviert.)
exten => _44X.,n,Hangup()

; deaktivieren
exten => 44,1,Answer()
exten => 44,n,DBdel(CF/${CALLERID(num)})
exten => 44,n,Playback(auth-thankyou)
exten => 44,n,NoOp(Weiterleitung fuer ${CALLERID(num)} deaktiviert.)
exten => 44,n,Hangup()

[from-extern]
exten => _X.,1,NoOp(Anruf von ${CALLERID(num)} fuer ${EXTEN})
exten => _X.,n,GotoIf($[foo${DB(CF/${EXTEN})} != foo]?normal:forward)
exten => _X.,n(normal),Dial(SIP/${EXTEN})
exten => _X.,n(forward),NoOp(Anruf fuer ${EXTEN} wird verbunden zu ${DB(CF/${EXTEN})})
exten => _X.,n,Dial(local/${DB(CF/${EXTEN})})

[default]
include=from-intern
include=from-extern

exten => _20,1,Dial(SIP/Ulf@Ulf)
...

Hilft dir das weiter? Wäre klasse!
 
Sag mal, willst Du mich ärgern? Beim ersten Post hast Du es doch auch geschafft, Deinen Code in entsprechende Tags zu setzen.

Das Stichwort ist "extension matching" bzw. "longest match". Rate mal warum die Umleitung unter _X. nicht ausgeführt wird, wenn es eine exten=>20 gibt und 20 angerufen wird. :rolleyes:

_X. würde bei 20 zwar passen, 20 passt aber noch besser und deshalb führt Asterisk nicht die exten=>_X. aus, sondern die exten=>20, und dort steht nichts von Umleitung sondern nur ein Dial.
 
Gute Frage wie das beim ersten Mal noch war mit dem Code! Zu deiner Antwort! Ich verstehe was du sagen willst, tue mich aber schwer damit es umzusetzen. Kannst du mir schreiben wie es deiner Meinung nach lauten soll in der Extension.conf?
 
Entweder [noparse]
Code:
hier kommt der Code
[/noparse] oder auf Erweitert und dann den #-Button.

Asterisk verwendet die exten's nicht der Reihe nach, sondern nach dem longest-match Prinzip. Wie bereits beschrieben verwendet es deshalb bei einem Anruf auf 20 auch die exten=>20 und nicht die exten=>_X.
In Deiner exten=>20 gibt es aber keine Rufumleitung, also wird auch nicht umgeleitet. Entweder baust Du das ganze Zeugs in der exten=>20 auch ein, oder Du nimmst die ganze exten=>20 raus damit der Anruf über die exten=>_X. abgewickelt wird.
 
Ok, versuch es mal. Was du schreibst war mir klar! Das folgende (X. durch 20 zu ersetzen) hatte ich schon ausprobiert, geht aber nicht:

Code:
[from-extern]
exten => _X.,1,NoOp(Anruf von ${CALLERID(num)} fuer ${EXTEN})
exten => _X.,n,GotoIf($[foo${DB(CF/${EXTEN})} != foo]?normal:forward)
exten => _X.,n(normal),Dial(SIP/${EXTEN})
exten => _X.,n(forward),NoOp(Anruf fuer ${EXTEN} wird verbunden zu ${DB(CF/${EXTEN})})
exten => _X.,n,Dial(local/${DB(CF/${EXTEN})})
 Neu:

[from-extern]
exten => _20,1,NoOp(Anruf von ${CALLERID(num)} fuer ${EXTEN})
exten => _20,n,GotoIf($[foo${DB(CF/${EXTEN})} != foo]?normal:forward)
exten => _20,n(normal),Dial(SIP/${EXTEN})
exten => _20,n(forward),NoOp(Anruf fuer ${EXTEN} wird verbunden zu ${DB(CF/${EXTEN})})
exten => _20,n,Dial(local/${DB(CF/${EXTEN})})

Er wählt immer noch die 20 direkt an! Was mach ich falsch?
 
Zeig mal CLI. Ich bin ja immer noch der Meinung, dass das != im GotoIf ein = sein müsste.

So wirst Du ein anderes Problem bekommen, weil ggf. Local/40 gewählt wird und es jetzt keine exten mehr gibt, die zu 40 passen würde.
 
Zuletzt bearbeitet von einem Moderator:

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
246,300
Beiträge
2,249,713
Mitglieder
373,904
Neuestes Mitglied
Elemir
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.