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

Ein Provider pro User

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von phunatic, 27 Nov. 2006.

  1. phunatic

    phunatic Neuer User

    Registriert seit:
    27 Nov. 2006
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Forenuser,

    als absoluter Einsteiger in der Asterisk-Thematik drängt sich mir schon seit einiger Zeit die Frage auf, ob bzw. wie es möglich ist, einem Nutzer einen speziellen Provider zuzuordnen, ohne dass eine Vorwahl von Seiten des Users auf Clientseite erforderlich ist (hoffe, das ist das richtige Forum). Das Schema soll lauten:

    user 1 -> provideraccount 1
    user 2 -> provideraccount 2
    ...
    user N -> provideraccount N
    (Eine Automatisierung über Makros o.ä. ist nicht notwendig, da es maximal 6 Accounts werden sollen).

    Meine Idee dabei war (nach der Anleitung auf http://www.voip-info.org/wiki/index.php?page=Asterisk+variables), für jeden User einen Outgoing-"Kontext" aufzusetzen a la:

    extension.conf:

    [incoming]
    exten => 3000,1,Dial(SIP/DERNAME1,30,rt)
    exten => 3000,2,Hangup

    [sipdiscount-outgoing1]
    ; Variante 1
    ;; 1 nach EXTEN weg, damit keine vorwahl mehr
    ;exten => _0.,1,SetCIDName(Anonymous)
    ;exten => _0.,2,Dial(SIP/${EXTEN}@sipdiscount)
    ;exten => _0.,3,Congestion
    ;exten => _0.,4,Busy
    ; Variante 2
    exten => _0./3000,1,SetCIDName(Anonymous)
    exten => _0./3000,2,Dial(SIP/${EXTEN}@sipdiscount)
    exten => _0./3000,3,Congestion
    exten => _0./3000,4,Busy


    sip.conf:

    [DERNAME1]
    type=friend
    username=DERNAME1
    secret=DASPASSWORT1
    callerid="DER NAME1" <DERNAME1>
    host=dynamic
    disallow=all
    allow=gsm
    allow=alaw


    Die erstere Variante funktioniert (nützt im Sinne der Problemstellung aber nichts), die zweitere, die nur dem User mit der UserID 3000 (ist das überhaupt eine Userid?) das Dialin ermöglichen soll, funktioniert leider nicht. Es kommt beim Versuch mit Variante 2 am Softphone von User 3000 zu der Meldung, die angewählte Nr sei nicht existent.

    Weitere Informationen:
    Der Provider ist aktuell Sipdiscount, der Asterisk liegt in der Version 1.0.7 (.deb-Pakete) vor und läuft unter Debian.


    Ich habe nun schon etliche Foren, Wikis und Howtos durchstöbert, aber entweder entsprechen meine Suchbegriffe nicht dem Kern des Themas oder ich bin einfach zu blind, die Lösung in den Abschnitten zu finden. Bitte klärt mich auf :)


    Vielen Dank im voraus!


    Gruß

    phunatic
     
  2. kombjuder

    kombjuder IPPF-Promi

    Registriert seit:
    2 Nov. 2004
    Beiträge:
    3,086
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Weil am Rhein
    Hallo,

    es gibt prinzipiell zwei Möglichkeiten. Du springst je User in einen eigenen Kontext oder du wertest den Absender aus. Wenn du ISDN-Telefone verwendest geht nur die letzte Möglichkeit, da der Konext nur auf den Kanal aber nicht das Gerät wirkt.

    In dem Beispiel unten ist sipgate-id = provideraccount 1 ...n (Du kannst ststt sipgate-id auch alles andere schreiben, solange das von Asterisk nicht schon benutzt wird.
    Für einen weiteren User musst du den Kontext [DERNAME1] kopieren und entsprechend umbenennen. In der Zeile 1 dann noch sipgate-id für den User eintragen, fertig.
    In [DERNAME1] kommen alle userspezifischen Einträge. In [raus] erfolgt dann die Globalbehandlung, also alles was für alle User gleich ist.


    In deiner sip.conf unter [DERNAME1] fehlt context=DERNAME1

    In deiner extensions.conf

    [DERNAME1]
    exten => _X.,1,Set(sipgate-id=12345)
    exten => _X.,n,Goto(raus,${EXTEN},1)

    [raus]
    exten => _X.,1,SetCIDName(Anonymous)
    exten => _X.,2,Dial(SIP/${EXTEN}@sipgate-id)
    exten => _X.,3,irgendwas

    Wenn die User mehr als einen Account haben, in [DERNAME...] eine weitere Zeile mit Set.
    In [raus] dann die Regeln wann welcher Account zu verwenden ist.
     
  3. phunatic

    phunatic Neuer User

    Registriert seit:
    27 Nov. 2006
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi,

    vielen Dank für die schnelle Antwort, werde das ganze alsbald möglich (wenn ich wieder an den Server komme) ausprobieren und dann Rückmeldung geben :)

    Gruß

    phunatic
     
  4. phunatic

    phunatic Neuer User

    Registriert seit:
    27 Nov. 2006
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi,

    habe die Lösung (hoffentlich richtig) implementiert und zumindest in Ansätzen verstanden, stehe jedoch immer noch vor dem Problem, dass es nicht funktionieren will, folglich muss ich irgendeinen Aspekt übersehen haben.

    Gegenwärtig sieht die Konfiguration folgendermaßen aus:

    sip.conf:

    ;; provider-accounts
    [sipdiscount]
    type=peer
    host=sip1.sipdiscount.com
    ...
    [sipdiscount2]
    type=peer
    host=sip1.sipdiscount.com
    ...

    ;; user-accounts
    [USERNAME]
    type=friend
    username=USERNAME
    secret=PASSWORD
    callerid="USERNAME" <USERNAME>
    host=dynamic
    disallow=all
    allow=gsm
    allow=alaw
    context=USERNAMEtel


    extension.conf:

    [USERNAMEtel]
    exten => _X.,1,Set(account=sipdiscount2)
    exten => _X.,2,Goto(sipdiscount-outgoing,${EXTEN},1)

    (Wofür steht die 1 am Ende? Führt das dazu, dass die Variable erst nach dem ${EXTEN} übergeben/eingefügt wird?)

    [sipdiscount-outgoing]
    exten => _X.,1,SetCIDName(Anonymous)
    exten => _X.,2,Dial(SIP/${EXTEN}@account)
    exten => _X.,3,Congestion
    exten => _X.,4,Busy


    Die /var/log/asterisk/messages vermeldet beim Versuch zu telefonieren Folgendes:

    Nov 28 17:34:25 WARNING[30332]: No application 'Set' for extension (USERNAMEtel, GEWÄHLTETELEFONNUMMER, 1)

    Wenn ich das jetzt richtig interpretiere, wird der Nutzer USERNAME, der den Kontext USERNAMEtel nutzen soll, mit dem Provider Nr. 2 (sipdiscount2) verbunden, die Telefonnummer wird aber scheinbar nicht richtig übergeben (kennt der Asterisk eventuell kein Set?).

    Gruß

    phunatic
     
  5. TobiasUnsleber

    TobiasUnsleber Neuer User

    Registriert seit:
    22 Juli 2005
    Beiträge:
    67
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    > Nov 28 17:34:25 WARNING[30332]: No application 'Set' for extension
    > (USERNAMEtel, GEWÄHLTETELEFONNUMMER, 1)

    D. h. Du hast vermutlich Asterisk 1.0.x am laufen und das Kommando "Set" gibt's da nicht. Verwende "SetVar".