context zwischen extension ??

thomas_p75

Neuer User
Mitglied seit
8 Feb 2006
Beiträge
11
Punkte für Reaktionen
0
Punkte
0
Hallo,
Leider ist in allen HowTo nicht genau erklährt wie der Zusammenhang zwischen extension context zustande kommt.
Genauer, es wird eine simple Konfiguration abgebildet wo die Providernummer 123456 sich durch die sip.conf und extension.conf zieht.

zb:
------- sip.conf ---------
register => 123456:p[email protected]/123456

[123456]
type=peer
username=123456
fromuser=123456
secret=passwort
host=sip.fairytel.at
formdomain=sip.fairytel.at
insecure=invite
canreinvite=no
nat=yes

---------------- extensions.conf ----------------
[general]
static=yes
writeprotect=no

[default]
include => fairytel_in

[default_out]
include => lokal
include => fairytel_out

[fairytel_out]
;(0)664 0000000 bis (0)664 9999999 mobilkom austria Aktiengesellschaft
exten => _0043664XXXXXXX,1,Dial(SIP/${EXTEN}@123456,45,r)
exten => _0043664XXXXXXX,n,Hangup()

;nach Deutschland
exten => _0049XXXXXXXXXX,1,Dial(SIP/${EXTEN}@123456,45,r)
exten => _0049XXXXXXXXXX,n,Hangup()


---- Bis hierher funktioniert alles, Anruf nach D genauso wie anruf ins A1 Netz

aber wehe die Konfig wird geändert.
Ein Anruf auf 00436648833xx funktioniert noch, aber bei einem Anruf nach Deutschland
wird ins Log geschrieben.
[Nov 22 18:03:43] NOTICE[1770] Ext. 00497023xxxxx: "extension.conf [fairytel_out] _0049XXXXXXXXXX "
[Nov 22 18:03:43] ERROR[1770] netsock2.c: getaddrinfo("fairytel_out__sip__conf", "(null)", ...): Name or service not known

Woher weiß der * ob es sich bei fairytel_out__sip__conf um einen context, eine extension, eine hostnamen, eine domaine handelt und welche nummer er wählen soll???

Mmein * hat die ver.1.8.4.4 auf einem Ubuntu Server 11.10

Danke Thomas


------- sip.conf ---------
register => 123456:p[email protected]/fairytel_in__sip__conf

[fairytel_out__sip__conf]
type=peer
username=123456
fromuser=123456
secret=passwort
host=sip.fairytel.at
formdomain=sip.fairytel.at
insecure=invite
canreinvite=no
nat=yes

---------------- extensions.conf ----------------
[general]
static=yes
writeprotect=no

[default]
include => fairytel_in

[default_out]
include => lokal
include => fairytel_out

[fairytel_out]
;(0)664 0000000 bis (0)664 9999999 mobilkom austria Aktiengesellschaft
exten => _0043664XXXXXXX,1,Dial(SIP/${EXTEN}@fairytel_out__sip__conf,45,r) ;ist OK
exten => _0043664XXXXXXX,n,Hangup()

;nach Deutschland
exten => _0049XXXXXXXXXX,1,Dial(SIP/${EXTEN}@fairytel_out__sip__conf,45,r) ;ist nicht OK
exten => _0049XXXXXXXXXX,n,Hangup()
 
Also:
Anruf kommt rein.
die asterisk sucht jetzt nach einem peer in der sip.conf
wurde ein peer gefunden wird der beim peer hinterlegte contect verwendet.
ist kein contect hinterlegt gilt der defaultcontext
ist den context bekannt geht's dann ab in den dialplan. Hier stehen die extensions. die extension ist der userpart in der request-Uri
 
Woher weiß der * ob es sich bei fairytel_out__sip__conf um einen context, eine extension, eine hostnamen, eine domaine handelt und welche nummer er wählen soll???

Kurz gesagt, aus der Befehlssyntax.

Ein Dial erwartet Technologie und Nummer, und optional Parameter. Ab dem @ gilt das als Parameter für die Technologie SIP. Das veranlasst den chan_sip die gewählte Nummer nicht direkt, sondern über einen Gateway zu wählen. Dazu sucht Asterisk nach einer gleichnamigen Peer-Definition und verwendet dessen host, oder nimmt den Parameter direkt als Gateway wenn es kein passendes Peer gibt.

Ein Goto würde zB. einen Context und/oder eine Extension erwarten. Bei Dial über chan_local wird als Parameter ebenfalls ein Context erwartet.

Das was in der register Zeile nach dem / kommt, verwendet Asterisk als Contact. Dh. das muss nicht zwangsläufig dem Namen des Peer entsprechen, sondern das wirst Du bei ankommenden Anrufen in der erwähnten Request-URI wiederfinden und dementsprechend als extension im Context für ankommende Anrufe definieren müssen.

Warum Deine zweite Config zu diesem Fehler führt, verstehe ich nicht. Lediglich formdomain sollte fromdomain heißen.

Btw. Dein Thread-Titel ist nicht recht vielsagend, bitte in was sinnvolleres ändern. Und für conf's oder Logs bitte [noparse]
Code:
...
[/noparse] verwenden.
 
Frage am Rande: Ist es Absicht, dass Du lediglich genau 10-stellige Rufnummern (ohne führende Null und Landesvorwahl) in Deutschland erreichen willst? Oder wäre nicht die Arbeit mit Pattern angebracht?
(also
Code:
exten => _0049X.,1,Dial(SIP/${EXTEN}@fairytel_out__sip__conf,45,r) ;ist nicht OK
exten => _0049X.,n,Hangup()
)

Gruß,
Wichard
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,840
Beiträge
2,219,268
Mitglieder
371,543
Neuestes Mitglied
Brainbanger
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.