Ein Provider pro User

phunatic

Neuer User
Mitglied seit
27 Nov 2006
Beiträge
3
Punkte für Reaktionen
0
Punkte
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
 
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.
 
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
 
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
 
> 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".
 
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.