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

Anrufe extern --> Asterisk SIP-Gerät

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von cmohr, 21 Okt. 2005.

  1. cmohr

    cmohr Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi,

    über ein und denselben SIP-Account kommen verschiedene Rufnummern an, diese möchte ich unterscheiden und verschiedene Aktionen ausführen (zum korrekten Gerät weiterleiten, Voicemail, Rufweiterleitung etc.)

    Wie kann ich dies realisieren?

    Meine Konfig-Dateien sehen bislang wie folgt aus.
    Im speziellen landen momentan zwei Nummern auf der 1004. Ich müsste aber die Rufnummer xxx14 weiterleiten. Das klappt aber so nicht

    sip.conf

    Code:
    
    [general]
    context=default                 ; Default context for incoming calls
    register => ...
    
    [toplink-voice.de]              ; Anmeldung am Toplink-Server
    type=peer
    host=toplink-voice.de
    username=User
    fromuser=User
    fromdomain=toplink-voice.de
    secret=PW
    nat=yes
    context=sip
    
    [incoming]                           ; für ankommende Gespräche
    type=friend
    username=User
    host=toplink-voice.de
    fromuser=User
    fromdomain=toplink-voice.de
    nat=no
    context=default
    canreinvite=no
    
    [1002]                          
    type=friend
    host=dynamic
    defaultip=192.168.1.101
    dtmfmode=rfc2833
    context=sip
    callerid="..." <1002>
    
    [1003]                        
    type=friend
    host=dynamic
    defaultip=192.168.1.102
    dtmfmode=rfc2833
    context=sip
    callerid="..." <1003>
    
    [1001]                        
    type=friend
    host=dynamic
    defaultip=192.168.1.103
    dtmfmode=rfc2833
    context=sip
    callerid="..." <1001>
    
    [1004]                        
    type=friend
    host=dynamic
    username=1004
    secret=...
    defaultip=192.168.1.104
    disallow=all
    allow=ulaw
    allow=alaw
    allow=gsm
    canreinvite=yes
    dtmfmode=rfc2833
    context=sip
    

    extensions.conf

    Code:
    [GLOBALS]
    FAXNUMMER=SIP/12345678910@toplink-voice.de
    TOPLINK1=20180204
    TOPLINK2=20180214
    
    [default]                               ;incoming
    exten => ${TOPLINK1},1,Dial(SIP/1004,60)
    exten => ${TOPLINK1},2,Congestion
    exten => ${TOPLINK1},102,Busy
    exten => ${TOPLINK2},1,Dial(${FAXNUMMER})               ; Rufnummer ...14 wird an Web.de Faxnummer (s.o.) weitergeleitet
    
    
    [sip]
    include => default           
    exten => _0X.,1,Dial(SIP/${EXTEN}@toplink-voice.de)     
    exten => _X.,1,Goto(anruferauswertung, ${CALLERIDNUM},1)
    
    [anruferauswertung]
    exten => ${TOPLINK1},1,Dial(SIP/1004)
    exten => ${TOPLINK2},1,Dial(${FAXNUMMER})
    
    

    Oder muss ich mit der Funktion SIPGetHeader arbeiten um den "To-Header" zu bekommen?
    Aber wie binde ich das dann ein, also wie muss die Regel aussehen?


    Vielen Dank im Voraus!
     
  2. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Indem Du die Dokumentation zu Asterisk liest, hier die Suchen-Funktion im Forum benutzt und/oder Dir einfach mal die Beispiel-Konfigurationsdateien die mit Asterisk geliefert werden, anschaust.
     
  3. cmohr

    cmohr Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    da finde ich nur Informationen dazu, wenn man mehrere Accounts hat, mit je einer Nummer...

    Nicht aber mehrere Nummern auf einem Account

    :doof:
     
  4. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Wenn ich Dich richtig verstanden habe, hast Du bei Toplink 2 Rufnummern, beide Rufnummern werden schon bei Toplink auf einen SIP-account von Dir gemapped, nennen wir ihn ToplinkID. Die Anrufe (egal auf welche Deiner beiden Nummern) erfolgen also immer von Toplink zu Dir auf Deine ToplinkID, Du erfährst also gar nicht welche Nummer gewählt wurde, da hilft nur 2 SIP accounts bei Toplink zu haben, für jede Nummer einen...

    Gruß,
    Tin
     
  5. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Du denkst viel zu kompliziert

    jede Nummer, die über Deinen Account reinkommt, hat ja irgendeine Id anhand derer sie erkannt wird. Wie die ID genau aussieht, ist von Provider zu Provider unterschiedlich. Bei Sipgate ist es z.B. die 7-stellige User-ID.

    Wenn Du nun also 3 Sipgate Accounts mit 3 verschiedenen IDs hast, dann werden die einfach so im incoming-Context sortiert:
    Code:
    exten => 1234567,1,Dial(SIP/10)
     ; ruft bei Anrufen auf die Sipgate Nummer 1 das SIP-Gerät 10  an
    exten => 2345671,1,Dial(SIP/10)
     ; ruft bei Anrufen auf die Sipgate Nummer 2 ebendfalls das SIP-Gerät 10  an
    exten => 3456712,1,Dial(SIP/10)
     ; ruft bei Anrufen auf die Sipgate Nummer 3 ebenfalls das SIP-Gerät 10  an
    
    Welches SIP-Gerät Du welcher ankommenden Rufnummer zuordnest, bleibt einzig und alleine Dir selbst überlassen.
    Ich hoffe, das Prinzip ist klargeworden. Übrigens sind das Asterisk-Grundlagen. Deshalb hatte ich das genaue Studium der Doku empfohlen.


    --- EDIT ---

    wie das allerdings im vorliegenden Fall gehandhabt wird, wenn schon vom Provider keine UNterscheidung gemacht wird, müßte man anhand des SIP Debug einmal analysieren
     
  6. cmohr

    cmohr Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    wie TinTin korrekt verstanden hat habe ich nur einen Toplink-Account, auf den mehrere Nummern gemapped werden.
    Nicht mehrere Accounts!

    Die Information, welche Nummer angewählt wird, kommt schon bei Asterisk an, das kann ich mit Hilfe des Debuggings erkennen (in der Form <+49301234567@toplink-voice.de>).

    Habe versucht dies so in die Regel einzubauen

    Code:
    exten => +49301234567,1,Dial(SIP/10)
    
    dann wird ein Anruf aber überhaupt nicht mehr durchgeleitet, es klingelt kein Telefon

    Muss ich hier ein anderes Format wählen, ist das so grundsätzlich der korrekte Ansatz?
     
  7. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Ist das der String, der dann als ${EXTEN} ankommt ?
    dann könntest Du den im Dialplan auf jeden Fall bearbeiten, daß letztendlich nur noch die extrahierte Rufnummer verwendet wird.
     
  8. cmohr

    cmohr Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    um genau zu sein, erfolgt folgende Ausgabe bei Asterisk:

    Code:
    build_route: Record-Route hop: <sip:+4930xxxxxxx@213.218.12.2:5060;tpl-nat=yes;lr=on>
    build_route: Record-Route hop: <sip:1001--+4930xxxxxxx@213.218.10.130;ftag=37193fd086bf8d2;lr=on>
    build_route: Record-Route hop: <sip:+4930xxxxxxx@213.218.10.2;ftag=37193fd086bf8d2;lr=on>
    build_route: Contact hop: <sip:+49177xxxxxxx@195.2.177.66:5060;user=phone>
        -- Executing Dial("SIP/D1090xxxxx-e5da", "SIP/1004|60|Ttr") in new stack
    SIMPLE DIAL (NO URL)
    Setting NAT on RTP to 0
    Outgoing Call for 1004
    Call from user '1004' is 1 out of 0
        -- Called 1004
    (Provisional) Stopping retransmission (but retaining packet) on '7d03f5005abd2a7a0600c99b54c09dc2@192.168.1.2' Request 102: Found
    (Provisional) Stopping retransmission (but retaining packet) on '7d03f5005abd2a7a0600c99b54c09dc2@192.168.1.2' Request 102: Found
        -- SIP/1004-42d2 is ringing
    update_user_counter(1004) - decrement outUse counter
    
    in dem Eintrag
    <sip:+4930xxxxxxx@213.218.12.2:5060;tpl-nat=yes;lr=on>
    steht also genau die angewählte Nummer, auch wenn sie über den gleichen Toplink-Account angerufen werden.
    Die IP ist die aufgelöste Domain 'toplink-voice.de'
     
  9. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hast Du es denn schon versucht mit SIPGetHeader(testvariable=To) und dann GotoIF... versucht? (Geht nur mit Asterisk 1.2)

    Zum testen was drinsteht reicht auch erstmal ein:

    1004,1,SIPGetHeader(testvariable=To)
    1004,2,Noop(${testvariable})

    Gruß,
    Tin
     
  10. cmohr

    cmohr Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    du meinst ich soll den String ${EXTEN} bspw. mit der Funktion Substr() extrahieren? Und wie soll ich diesen dann weiterverwenden? So wie ich das vorher schon angedacht habe?
    exten => 1234567,1,Dial(SIP/1004)


    den kompletten String
    <sip:+49301234567@toplink-voice.de>

    kann ich nicht in der Regel verwenden, oder?
     
  11. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Mach doch in Deinen Dialplan mal ein exten => _.,1,NoOP( ${EXTEN}) und poste die Ausgabe auf der CLI, wenn dieser Befehl ausgeführt wird. Dann sehen wir, was in der EXTEN überhaupt ankommt. (ich befürchte mal, Dein Username ...)

    Ansonsten solltest Du mal den Weg von TinTin probieren.
     
  12. cmohr

    cmohr Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi,

    das hier ist die Ausgabe der CLI, wenn ich die Zeile mit NoOp mit einfüge:

    D109xxxx is not a local user
    Stopping retransmission on '137ef102c1f00185f5c6150dbe22b26d@gw1-0.toplink-voice.net' of Response 118258650: Found
    Setting NAT on RTP to 0
    Check for res for D109xxxxx
    D109xxxxx is not a local user
    build_route: Record-Route hop: <sip:+493022180204@213.218.12.2:5060;tpl-nat=yes;lr=on>
    build_route: Record-Route hop: <sip:1001--+493022180204@213.218.10.130;ftag=cbb1fc2eb2125fa;lr=on>
    build_route: Record-Route hop: <sip:+493022180204@213.218.10.2;ftag=cbb1fc2eb2125fa;lr=on>
    build_route: Contact hop: <sip:+49177xxxxxx@195.2.177.66:5060;user=phone>
    -- Executing NoOp("SIP/D109xxxx-2013", "22180204") in new stack
    -- Timeout on SIP/D109xxxxx-2013
    == CDR updated on SIP/D109xxxxxx-2013
    -- Executing NoOp("SIP/D109xxxxxx-2013", "t") in new stack
    -- Timeout on SIP/D109xxxxxx-2013
    == CDR updated on SIP/D109xxxxx-2013
    -- Executing NoOp("SIP/D109xxxxxx-2013", "t") in new stack
    -- Executing NoOp("SIP/D109xxxxxx-2013", "h") in new stack
    update_user_counter(D109xxxxxxx) - decrement inUse counter
    D109xxxxxx is not a local user
    Stopping retransmission on 'e3a38a114b099b6d6a3b6646bd584b21@gw1-0.toplink-voice.net' of Response 703569241: Found


    Die Rufnummer an sich kommt also in der EXTEN an, aber wenn ich allerdings die Rufnummer mit der ...14 hinten anrufe kommt im NoOp trotzdem die Ausgabe der ...04 !?
     
  13. cmohr

    cmohr Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    dann habe ich noch mal den Vorschlag von TinTin berücksichtigt. Aber er scheint SIPGetHeader nicht zu kennen, ist diese auch erst ab der Version 1.2 verfügbar?

    Habe noch 1.0.08


    No application 'SIPGetHeader' for extension (default, 22180204, 2)
    No application 'SIPGetHeader' for extension (default, h, 2)
     
  14. voja

    voja Mitglied

    Registriert seit:
    25 Juli 2005
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Laut voip-info.org:
    Code:
    See bug 2838 - introduced for/in Asterisk 1.1
    .

    Da aber Asterisk 1.2 inzwischen eh released worden ist, schadet es sicher nicht upzudaten. Ich habe allerdings bisher weder von Problemen noch von Erfolgsberichten gehört. Ich werde auch in absehbarer Zeit umsteigen.

    Vorher gibts auf jeden Fall ein Backup der Konfiguration, damit ich im Notfall downgraden kann. *g*

    Volker
     
  15. cmohr

    cmohr Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    habe soeben via CVS ein update durchgeführt.

    allerdings sagt er mir trotz erfolgreicher Installation noch Version 1.0.8
    und die Applikation SIPGetHeader kennt er auch noch nicht

    hmm...
     
  16. cmohr

    cmohr Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    habe ein update via CVS mit

    cvs checkout -r v1-0 zaptel libpri asterisk asterisk-addons asterisk-sounds

    durchgeführt. sollte doch so klappen, oder?

    Mich verwundert sehr, dass er 1.0.8 anzeigt und SIPGetHeader nicht kennt...
     
  17. voja

    voja Mitglied

    Registriert seit:
    25 Juli 2005
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hast Du auch neu compiliert und auch ein make install gemacht?

    Volker
     
  18. voja

    voja Mitglied

    Registriert seit:
    25 Juli 2005
    Beiträge:
    242
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Das v1-0 ist sicher falsch. Versuche da mal v2-0 oder schau auf der Webseite nach wie der CVS-Zweig für die 2.0 heißt.

    Volker
     
  19. rbaer

    rbaer Mitglied

    Registriert seit:
    7 Okt. 2004
    Beiträge:
    280
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    München
    2-0?

    Warum gehst du nicht einfach auf http://asterisk.org/ und benutzt da die Links zu den 1.2 sources?
     
  20. cmohr

    cmohr Neuer User

    Registriert seit:
    9 Sep. 2005
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    erledigt ;=)

    jetzt geht's weiter mit dem SIPGetHeader