[Problem] rejected because extension not found in context

Ciatronical

Neuer User
Mitglied seit
25 Jun 2010
Beiträge
40
Punkte für Reaktionen
1
Punkte
8
Hey All,

ich betreibe seit längerem Asterisk. Ich benutze es lediglich um Anrufdaten in mein ERP zu übertragen.
Dabei werden die Anrufe von bzw. zur Fritzbox via Asterisk weitergeleitet. (und eine Funktion aufgerufen die Callerid in eine Postgresql-DB schreibt)

Da ich nun neue Telefonnummern habe und etwas an der extension.ael und an der sip.con geändert habe, bekomme ich folgende Fehlermeldung:
Code:
chan_sip.c:25545 handle_request_invite: Call from '620' (192.168.178.2:5060) to extension '630' rejected because extension not found in context 'von-voip-804000'

Rauswählen funktioniert, reinwählen mit 804000 klappt auch doch wenn ich via 804040 reinwähle bekomme ich die o.g. Fehlermeldung.

Hier meine extension.ael und meine sip.conf

Code:
[general]
language=de
port=5060
bindport=5060           ; Port to bind to (SIP is 5060)
bindaddr=0.0.0.0    ; Address to bind to (all addresses on machine)

nat=no

localnet=192.168.178.0/255.255.255.0 ;(substitute your lan subnet address
registerattempts=0
registertimeout=5
maxexpirey=3600
defaultexpirey=1800
notifyprivacy=no
externrefresh=120
allowguest=no
;contex=default
alwaysauthreject=yes

register => 620:[email protected]/620
register => 630:[email protected]/630



;Telfon AutoProfis
[2000]
defaultuser=2000
callerid=device <2000>
context=Autoprofis
type=peer
secret=mypasswd
qualify=yes
nat=no
host=dynamic
dtmfmode=rfc2833
canreinvite=no
deny=0.0.0.0/0.0.0.0
permit=192.168.178.0/255.255.255.0


;Telfon Flerohr
[2001]
defaultuser=2001
callerid=device <2001>
context=Flexrohr24
type=peer
secret=mypasswd
qualify=yes
nat=no
host=dynamic
dtmfmode=rfc2833
canreinvite=no
deny=0.0.0.0/0.0.0.0
permit=192.168.178.0/255.255.255.0


;Autoprofis
[620]
type=peer
context=von-voip-804000
defaultuser=620    
fromuser=620
secret=mypasswd
host=192.168.178.2
insecure=port,invite
canreinvite=no
nat=no
dtmfmode=rfc2833
qualify=no 
deny=0.0.0.0/0.0.0.0
permit=192.168.178.0/255.255.255.0

;Flexrohr24
[630]
type=peer
context=von-voip-test
defaultuser=630    
fromuser=630
secret=mypasswd    
host=192.168.178.2
insecure=port,invite
canreinvite=no
nat=no
dtmfmode=rfc2833
qualify=no 
deny=0.0.0.0/0.0.0.0
permit=192.168.178.0/255.255.255.0

Code:
context Autoprofis {
    _0. => {
        Dial(SIP/${EXTEN}@620);
        
    }
}



context Flexrohr24 {
    _0. => {
        Dial(SIP/${EXTEN}@630);
        
    }
}

context von-voip-804000 {
    620 => {
        Dial(SIP/2000);
    }

}

context von-voip-test {
    630 => {
        Dial(SIP/2001);
    }

}


context default {
    includes {
        Autoprofis;
        von-voip-804000;
        Flexrohr24;
        von-voip-test;
    }
}

Vielen Dank

Ronny
 
Moin


Da Anrufe von der Box immer in...
von-voip-804000
...aufschlagen, brauchst du dadrinne auch eine 630er Extension.
...wie in...
von-voip-test
 
Zuletzt bearbeitet:
Warum kommen diese immer in von-voip-804000 an??
Kommen dort sämtliche Anrufe der FB an? Warum?

Ich habe doch in der FB den user 630 angelegt.
 
Du hast die /620 und /630 als Extension beim "register =>" angegeben.
Die landen immer im Kontext des ersten register.
"Klingt komisch, iss aber so"
Kannst aber "von-voip-test" in "von-voip-804000" inkludieren.

Übrigens: [default] kannst du eigentlich dicht machen
 
Du hast die /620 und /630 als Extension beim "register =>" angegeben.
Kannst aber "von-voip-test" in "von-voip-804000" inkludieren.

Kann ich register nicht weglassen??

Ich wollte das eigentlich schön übersichtlich.
Ein Eintrag (context) in der sip.conf wird in einem Eintrag der extension.ael behandelt.
Geht das so??

Übrigens: [default] kannst du eigentlich dicht machen

Mit 'dicht machen' meinst du löschen??

Dank und Gruß

Ronny
 
Dicht machen
Bedeutet: Nichts drinstehen haben
Oder: exten => _X.,1,Hangup()
Je nachdem welcher Kontext dafür zuständig ist, definiert wurde, da schlagen die anonymen, nicht registrierten Anrufe auf.
Standard: [default] ab und zu wird auch [public] definiert

Wenn nur authentifizierte/registrierte User/Peer Verbindungen möglich sein sollen, wird in der sip.conf unter...
[general]
allowguest=no
...definiert.
Dann kommen "Unauthorisierte" nicht einmal bis [default] oder [public].

So hab ich es hier auch definiert. Fritz!Box <--> Asterisk authentifizieren sich ja untereinander.
Fremde, direkte Anrufe an Asterisk sind untersagt.
 
Zuletzt bearbeitet:
Vielen Dank für deine Hilfe. Da ich heute leider nicht mehr im Hause bin, werde ich es morgen gleich mal versuchen. Melde mich dann noch mal.

- - - Aktualisiert - - -

Hey,

also ich habe
Code:
;register => 620:[email protected]/620
;register => 630:[email protected]/630

kommentiert.

Code:
;Flexrohr24
[630]
type=peer
context=von-voip-test
defaultuser=630    
fromuser=630
secret=mypasswd    
host=192.168.178.2
insecure=port,invite
canreinvite=no
nat=no
dtmfmode=rfc2833
qualify=no 
deny=0.0.0.0/0.0.0.0
permit=192.168.178.0/255.255.255.0
habe ich testweise komplett entfernt.

Doch eigenartiger Weise kommen immernoch eingehende Anrufe von der Fritzbox (user: 630!) in contex von-voip-804040 an.
Wie kann das sein??

contex default in extension.ael ist leer.
 
Moin

Vielleicht nach Änderung vergessen: sip reload
...für die sip.conf, und...
dialplan reload
...für die extensions.ael & .conf ?
(mit der .ael arbeite ich noch nicht)
Steht noch was relevantes in der extensions.conf ?

Die kommentierten register (warum?) sollten auch hier verschwunden sein: sip show registry
 
Code:
sip reload 
ael reload

führe ich nach jeder Änderung durch. register ist wieder drin.
Ich verwende jetzt einen einzigen contex für alle eingehenden Gespräche.
Es funktioniert so ersteinmal - obwohl ich es anders geplant hatte.

Code:
[general]
language=de
port=5060
bindport=5060           ; Port to bind to (SIP is 5060)
bindaddr=0.0.0.0    ; Address to bind to (all addresses on machine)

nat=no

localnet=192.168.178.0/255.255.255.0 
registerattempts=0
registertimeout=5
maxexpirey=3600
defaultexpirey=1800
notifyprivacy=no
externrefresh=120
allowguest=no
;contex=default
alwaysauthreject=yes

register => 620:[email protected]/620
register => 630:[email protected]/630
;register => 670:[email protected]/670


;Telfon AutoProfis
[2000]
defaultuser=2000
callerid=device <2000>
context=Autoprofis
type=peer
secret=mypasswd
qualify=yes
nat=no
host=dynamic
dtmfmode=rfc2833
canreinvite=no
deny=0.0.0.0/0.0.0.0
permit=192.168.178.0/255.255.255.0


;Telfon Flerohr
[2001]
defaultuser=2001
callerid=device <2001>
context=Flexrohr24
type=peer
secret=mypasswd
qualify=yes
nat=no
host=dynamic
dtmfmode=rfc2833
canreinvite=no
deny=0.0.0.0/0.0.0.0
permit=192.168.178.0/255.255.255.0


;Autoprofis
[620]
type=peer
context=von-voip
defaultuser=620    
fromuser=620
secret=mypasswd
host=192.168.178.2
insecure=port,invite
;insecure=port
canreinvite=no
nat=no
dtmfmode=rfc2833
qualify=no 
deny=0.0.0.0/0.0.0.0
permit=192.168.178.0/255.255.255.0

;Flexrohr24
[630]
type=peer
context=von-voip
defaultuser=630    
fromuser=630
secret=mypasswd    
host=192.168.178.2
insecure=port,invite
;insecure=port
canreinvite=no
nat=no
dtmfmode=rfc2833
qualify=no 
deny=0.0.0.0/0.0.0.0
permit=192.168.178.0/255.255.255.0

Code:
context Autoprofis {
    _0. => {
        Dial(SIP/${EXTEN}@620);
        
    }
}



context Flexrohr24 {
    _0. => {
        Dial(SIP/${EXTEN}@630);
        
    }
}

context von-voip {
    620 => {
        Dial(SIP/2000);
    }
    630 => {
        Dial(SIP/2001);
    }
}

//context von-voip-804040 {
//    630 => {
//        Dial(SIP/2001);
//    }
//}



context default {
    includes {
        Autoprofis;
        von-voip;
        Flexrohr24;
        //von-voip-804040;
    }
}

Kannst ja noch mal schauen.

Dank und Gruß

Ronny
 
Zuletzt bearbeitet:
Hm, die kommentierte "670" (630 eigentlich auch) wäre vielleicht erkärungsbedürftig ?
(Die IP-Telefone der Fritz!Box heissen eigentlich 620 bis 629)

Warum brauchst du die Inkludierungen im [default] Kontext (noch) ?

...
 
Zuletzt bearbeitet:
630 ist der Username, dieser kann in der FB 7490 frei gewählt werden.

Die Inkludierungen brauche ich um raustelefonieren zu können.
 
Finde ich super, dass das ab einer gewissen Firmwareversion geht, führt aber zur Verwirrung wenn es nicht mal erwähnt wird.

[default] Inkludierungen würdest du nicht benötigen, wenn du 1. deinen Usern den entsprechenden Kontext mit "context=" in der sip.conf zuweisen tust.
Oder 2. in der extensions.conf (.ael?) unter [general] den Standardkontext für User mit "userscontext=" angibst.
...wobei 1. immer Vorrang zu 2. bekommt.
 
Zuletzt bearbeitet:
Abgehende Gespräche im default Context zu erlauben ist absolut gefährlich, so lange allowguest nicht explizit auf no steht, und selbst dann wie in Deinem Fall nicht zu empfehlen, weil Du die abgehende Callerid nicht (so einfach) zugeordnet bekommst.

Ändere den type Deiner beiden Telefone in friend, das erzeugt ein zusätzliches user Objekt, über das dann über den zugewiesenen Context telefoniert werden kann.

Die Erklärung, warum ankommende Anrufe immer im gleichen Context landen ist die fehlende Authentifizierung. Die Fritzbox meldet sich nicht am Asterisk an, sondern wird dank insecure nur über ihre IP-Adresse zugeordnet. Das ist die einzige Information, die Asterisk zur Verfügung hat. Kommt ein Anruf, durchsucht Asterisk die sip.conf von oben nach unten nach einem Peer mit passendem host Eintrag und ausreichendem insecure, und verwendet den Context des ersten gefundenen.
 
Ich hab da einfach für eingehende Gespräche einen extra Peer gemacht um zu vermeiden das es falsch einsortiert wird, der nur folgendes enthält:
type=peer
context=incoming...
host=ipadresse

Und die vorhandenen beiden Peers nur ausgehend verwenden.
 
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.