[Gelöst] SIP-Telefon mit 2 Leitungen integrieren

hicksel

Neuer User
Mitglied seit
5 Nov 2014
Beiträge
10
Punkte für Reaktionen
0
Punkte
1
Hi,

bei dem Versuch Asterisk 11 als neue Telefonanlagenlösung für meine 2 Grandstream GXP 1400 einzusetzen hat sich folgendes Problem aufgetan. Wenn ich beide Leitungen,die man mit dem Telefon gleichzeitig registrieren kann mit verschiedenen Accounts an Asterisk anmelde,dann kann ich nicht festlegen,dass Anrufe dynamisch zwischen den beiden Leitungen verteilt werden(Beispiel https://youtu.be/PLRKl8jIVUY). Mit folgender Config klingeln logischerweise beide Leitungen eines Telefons bei einem Anruf gleichzeitig, was ja sinnlos ist.

extensions.conf
Code:
[eingehende-anrufe]
exten => 49----------,1,Dial(SIP/1a&SIP/1b&SIP/2a&SIP/2b,120,tT)
sip.conf
Code:
[sipphone](!)
host=dynamic
type=friend
qualify=yes
context=unwichtig
secret=abc

[1a](sipphone)
fullname=Telefon 1 Leitung 1

[1b](sipphone)
fullname=Telefon 1 Leitung 2

[2a](sipphone)
fullname=Telefon 2 Leitung 1

[2b](sipphone)
fullname=Telefon 2 Leitung 2

Mein Ziel ist, dass wie im Video ein Anruf an jedem Telefon immer nur auf einer Leitung gleichzeitig klingelt. Mir ist bewusst,dass es auch möglich wäre nur eine Leitung zu konfigurieren und dann über Asterisk halte- und Anklopffunktion umzusetzen, jedoch versuche ich das zu vermeiden,da solch ein System bei den Nutzern nur Verwirrung stiften würde und ich lieber die Hardwaretasten am Telefon nutzen möchte. Meine Frage ist ob es eine "ideale" Möglichkeit gibt das ganze zu realisieren, da ich noch keine passende Funktion gefunden habe. Mein aktueller Ansatz wäre eine Funktion zu schreiben die überprüft, ob eine Leitung eines Telefons schon belegt ist und in dem Fall den Anruf auf der anderen Leitung klingeln lässt, aber dafür müsste es doch eine bessere Lösung geben oder?
 
Zuletzt bearbeitet:
So ganz verstehe ich das Problem nicht. Man kann, zumindest bei allen Telefonen, die mir bis jetzt untergekommen sind, über einen Account mehrere Gespräche gleichzeitig führen, dazu muss man das Telefon doch nicht doppelt registrieren?!

Falls Du dennoch diesen Weg gehen möchtest, DEVICE_STATE oder GROUP/GROUP_COUNT können das.
 
Also wenn es die Funktion gibt, dann habe ich sie bei meinen Telefonen noch nicht gefunden, da wenn das Telefon nur mit einem Account registriert ist und ich ein Telefonat führe mir nicht angezeigt wird, wenn ich von jemand anderem angerufen werde.

Ein Workaround in Asterisk wäre als sowas oder?
Code:
[eingehende-anrufe]
exten => 49----------,1,dialifunused(2,1a,1b)
exten => 49----------,1,dialifunused(2,2a,2b)

[macro-dialifunused]
;dialifunused(anzahl leitungen,name der leitung 1,name der leitung 2,...)
exten => s,1,Set(i=0)
exten => s,2,While($[${ARG1}>${i}])
exten => s,3,GotoIf($["$DEVICE_STATE(SIP/$[ARG[${i}]]))"=="NOT_INUSE"]?5)
exten => s,4,Set(i=$[${i}+1])
exten => s,5,EndWhile
exten => s,n,Dial(SIP/$[ARG[2+${i}]])
 
Auf meinem GXV3240 wird es einwandfrei angezeigt, wenn ein zweiter Anruf - auch auf der gleichen Leitung - eingeht. Sicher dass das GXV1400 richtig konfiguriert wurde?
 
Mich würde das auch wundern, wenn das Ding kein Anklopfen könnte. Sogar mein China-Noname Tischtelefon kriegt das hin.

Ein Workaround in Asterisk wäre als sowas oder?

Etwas ungestüm, abgesehen davon, dass die Syntax Macro(<macroname>,<args>) ist, und Macros schon seit 1.8 deprecated sind und durch Subroutinen ersetzt werden sollten.

Ich würde das irgendwie so ähnlich machen:
Code:
exten => 49xxxxx,1,Set(tel1=${IF($[${DEVICE_STATE(1a)}=NOT_INUSE]?1a:1b)})  ; wenn 1a frei ist wird 1a gewählt, sonst 1b
 same => n,Set(tel2=${IF($[${DEVICE_STATE(2a)}=NOT_INUSE]?2a:2b)})          ; gleiches für 2
 same => n,Dial(SIP/${tel1}&SIP/${tel2})

Nicht vergessen, passende hints zu setzen.
 
Dank rentier-s hab es jetzt wie vorgeschlagen per Subroutine gelöst.

Code:
[choose-line]
exten = s,1,NoOp("Checking which line is free:${ARG1} or ${ARG2}")
exten = s,n,NoOp("${ARG1}=${DEVICE_STATE(SIP/${ARG1})}")
exten = s,n,NoOp("${ARG2}=${DEVICE_STATE(SIP/${ARG2})}")
exten = s,n,Set(lf=${IF($[${DEVICE_STATE(SIP/${ARG1})}=NOT_INUSE]?${ARG1}:${ARG2})})
exten = s,n,Return()
 
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.