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
 

kombjuder

IPPF-Promi
Mitglied seit
2 Nov 2004
Beiträge
3,086
Punkte für Reaktionen
0
Punkte
0
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.
 

phunatic

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

phunatic

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

TobiasUnsleber

Neuer User
Mitglied seit
22 Jul 2005
Beiträge
67
Punkte für Reaktionen
0
Punkte
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".
 

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
232,829
Beiträge
2,027,151
Mitglieder
350,907
Neuestes Mitglied
SimonsT