.titleBar { margin-bottom: 5px!important; }

context zwischen extension ??

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von thomas_p75, 22 Nov. 2011.

  1. thomas_p75

    thomas_p75 Neuer User

    Registriert seit:
    8 Feb. 2006
    Beiträge:
    11
    Zustimmungen:
    0
    Punkte für Erfolge:
    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:passwort@sip.fairytel.at/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:passwort@sip.fairytel.at/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()
     
  2. LooserOuting

    LooserOuting Neuer User

    Registriert seit:
    28 Nov. 2011
    Beiträge:
    85
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  3. rentier-s

    rentier-s Guest

    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.
     
  4. wichard

    wichard IPPF-Promi

    Registriert seit:
    16 Juni 2005
    Beiträge:
    6,954
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Aachen
    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