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

Exteren SIP-Anrufe landen im Default-Context (Loop)

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von tango64, 18 Sep. 2006.

  1. tango64

    tango64 Neuer User

    Registriert seit:
    8 Feb. 2006
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo, ich habe das Wochenende einen * nach der Anleitung von betateilchen konfiguriert.
    Ich habe 2 Provider eingebunden, beide Context-Namen bestehen ausschließlich aus Ziffern.
    Folgendes Problem tritt nun auf:
    Obwohl ich in beiden ankommenden ankommenden Kontexten den context incoming eingetragen habe, landen alle ankommenden Anrufe auch/nur im default-context der extensions.conf, werden dort als Rufnummern interpretiert und gehen gleich wieder raus. Das führt dann zu Loops.
    Habe ich da ein Verständnis-Problem? Ich dachte, wenn ich einen context-Befehl innerhalb des ankommenden Kontext benutze, wird nur dieser genutzt.
    Meine sip.conf:
    PHP:
    [general]
    context=default                ; Default context for incoming calls
    port
    =5060                       UDP Port to bind to (SIP standard port is 5060
    bindaddr
    =0.0.0.0          IP address to bind to (0.0.0.0 binds to all)
    srvlookup=yes                   Enable DNS SRV lookups on outbound calls
    language
    =de                     ; Default language setting for all

    localnet 
    192.168.0.0/255.255.0.0
    externhost 
    xxxxxxx.dyndns.org

    ;----------------------------------------------------------------

    register => 49xxxxxxxx:yyyyyyy@sip.1und1.de/49123456789

    [123456789]
    insecure=very
    type
    =peer
    username
    =123456789
    secret
    =yyyyyyy
    host
    =sip.1und1.de
    fromuser
    =123456789
    fromdomain
    =sip.1und1.de
    nat
    =no
    canreinvite
    =no
    qualify
    =yes
    disallow
    =all
    allow
    =ulaw

    [1und1_in]
    type=peer
    fromdomain
    =sip.1und1.de
    host
    =sip.1und1.de
    disallow
    =all
    allow
    =ulaw
    context
    =incoming

    ;-----------------------------------------------------------------

    register => aaaaaa:bbbbbb@sip.sparvoip.de/4956789

    [56789]
    type=peer
    username
    =aaaaaa
    fromuser
    =4956789
    secret
    =bbbbb
    host
    =sip.sparvoip.de
    fromdomain
    =sparvoip.de
    insecure
    =very
    canreinvite
    =no
    nat
    =no
    ;disallow=all
    ;allow=ulaw

    [sparvoip_in]
    type=peer
    fromdomain
    =sparvoip.de
    host
    =sip.sparvoip.de
    ;disallow=all
    ;allow=ulaw
    context
    =incoming

    ;----------------------------------------------------------------
    hier kommen dann die Endgeräte 
    Asterisk-Version ist 1.2.5 von Suse 10.1
    Hat jemand ne Idee, woran es liegen könnte?

    Mit freundlichen Grüßen

    Tango64
     
  2. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Wie soll Asterisk bei diesem register command
    register => 49xxxxxxxx:yyyyyyy@sip.1und1.de/49123456789
    darauf kommen das in der Section [1und1_in] Informationen stehen die verwendet werden sollen?

    Also nimmt Asterisk die Section [general].
     
  3. tango64

    tango64 Neuer User

    Registriert seit:
    8 Feb. 2006
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    [1und1 in] ist der letzte Kontext in der sip.conf, der auf sip.1und1.de verweist und sollte deshalb von allen Kontexten, die vorher auf 1und1 verweisen, für ankommende Rufe verwendet werden.
    Sollte dies im Kurs falsch beschrieben sein, oder hab ich es falsch verstanden?
     
  4. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    In der sip.conf ist beschrieben wie das zu lösen ist.

    register => 49xxxxxxxx:yyyyyyy@sip.1und1.de_proxy1/49123456789
    register => 49xxxxxxxx111:yyyyyyy@sip.1und1.de_proxy2/49123456789555

    [sip.1und1.de_proxy1]
    type=peer
    fromdomain=sip.1und1.de
    host=sip.1und1.de
    context=incoming


    [sip.1und1.de_proxy2]
    type=peer
    fromdomain=sip.1und1.de
    host=sip.1und1.de
    context=incoming_woanders
     
  5. tango64

    tango64 Neuer User

    Registriert seit:
    8 Feb. 2006
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Anrufe landen im Default-Kontext

    Danke für Deine Hilfe, habe gestern noch deine empfohlenen Änderungen in der sip.conf gemacht.

    Zusätzlich habe ich noch "context=incoming" in alle Kontexte eingefügt, sonst ging gar kein externer Anruf.

    Leider war das Ergebnis nicht so richtig richtig zufriedenstellend.
    Die meisten Anruf landen jetzt zwar im incoming-Kontext, aber sporadisch landen einige doch noch im default-Kontext.
    Allerdings kann ich nicht genau nachvollziehen, warum. Es scheint beim Start von Asterisk (bei ersten eingehenden Anruf) und nachdem lange keine Gespräche geführt worden sind, auzutreten.
    Hängt vielleicht auch mit der Registrierung beim Provider zusammen.
    Sparvoip hat ja nur sehr kurze Zeiten, wo die Registrierung gültig ist.

    Meine Lösung (ist nicht ideal, aber sicher): Ich lege für die eingehenden Rufnummern einen zusätzlichen Kontext an, in welchen ich diese Nummern in den incoming-Kontext umleite.
    Diesen binde ich in default ein.
    Eingehende Gespräche, die irrtümlich im default-Kontext landen, kommen so doch noch ans richtige Ziel.

    [incoming_bug]
    ; Umleitung fehlgeleiteter eingehender Anrufe (default-context statt incoming)
    exten => _49xxxxxxxxxx,1,Goto(incoming,49xxxxxxxx,1)
    exten => _49yyyyyyyyy,1,Goto(incoming,49yyyyyyy,1)


    Mit freundliche Grüßen

    Tango64
     
  6. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Die Dauer der Registrierung legst Du in der sip.conf fest: defaultexpirey=

    Eigentlich klappen eingehende Anrufe problemlos, es gibt nur ein paar Dinge zu beachten.

    - in der sip.conf einen default context für Anrufe festelegen die nicht vom registrierten provider kommen oder nicht als solche erkannt werden

    username@sip.1und1.de_proxy1/exten

    In dem Context ein Pattern für username, exten und s programmieren, manche Provider verarbeiten /exten nicht und der Anruf kommt an username oder s-Extension an. Sparvoip gehört dazu, ich meine die kommen auf username rein.

    Zum testen oder um jeden Anruf abzufangen:

    include => der_Rest
    [der_Rest]
    exten => _.,1,NoOp(INFO: der_Rest)
    exten => _.,n,GoTo(wo_auch_immer)