Einzelnen Beitrag anzeigen
Alt 12.07.2008, 14:26   #11
laureen
IPPF-Fan
 
Registriert seit: 17.10.2004
Beiträge: 369
hallo,

ich hab euch das hier mal gemacht, inklusive leuchtender LED am snom, wenn das telefon in der queue ist. ich habe für dieses beispiel 2-stellige nebenstellen angenommen, meine queue soll "board" heißen. 4 Schritte sind notwendig:

1. einen hint anlegen für jedes telefon, das sich zur queue hinzuschalten kann (für die LED). dazu im dialplan folgendes hinzufügen:
Code:
...
[internal]
...
exten = qm-board-10,hint,DS/qm-board-10
exten = qm-board-11,hint,DS/qm-board-11
; usw
...
schema: "qm-<queuename>-<callerid>"
wenn ihr mehrere queues verwendet, brauch ihr einen hint pro queue/telefon kombination

2. im dialplan context, in dem die telefone landen, wenn sie einen anruf absetzen ("context=" in der sip.conf), einen featurecode für das beitreten und verlassen der queue anlegen, ich nehme mal "*30*" dafür, sowie eine extension, wenn am telefon die taste neben der LED gedrückt wird (toggle-funktion):
Code:
...
[internal]
...
; === queuemanagement ===
exten = *30*,1,Macro(queuemgmt,board)
exten = _qm-board-XX,1,Goto(*30*,1)
...
3. im dialplan folgendes macro hinzufügen:
Code:
...
[macro-queuemgmt]
exten = s,1,NoOp(Macro queuemgmt called for extension ${CALLERID(num)})
exten = s,n,NoCDR()
exten = s,n,Set(CID=${CALLERID(num)})
exten = s,n,Set(QUEUENAME=${ARG1})
exten = s,n,Set(PEERCHANNELNAME=SIP/${SIPCHANINFO(peername)})
exten = s,n,Set(QUEUEHINTNAME=qm-${QUEUENAME}-${CALLERID(num)})
exten = s,n,Set(QUEUEMEMBERS=${QUEUE_MEMBER_LIST(${QUEUENAME})})
exten = s,n,Set(MEMBERCOUNTER=1)
 
exten = s,n(begin),Set(CURRENTPEER=${CUT(QUEUEMEMBERS,\,,${MEMBERCOUNTER})})
exten = s,n,GotoIf($["${CURRENTPEER}"=""]?add)
exten = s,n,GotoIf($["${CURRENTPEER}"="${PEERCHANNELNAME}"]?remove)
exten = s,n,Set(MEMBERCOUNTER=${MATH(${MEMBERCOUNTER}+1)})
exten = s,n,Goto(begin)
 
exten = s,n(add),AddQueueMember(${QUEUENAME},${PEERCHANNELNAME})
exten = s,n,Devstate(${QUEUEHINTNAME},2)
exten = s,n,Goto(end)
 
exten = s,n(remove),RemoveQueueMember(${QUEUENAME},${PEERCHANNELNAME})
exten = s,n,Devstate(${QUEUEHINTNAME},1)
exten = s,n,Goto(end)
 
exten = s,n(end),Answer()
exten = s,n,Wait(1)
exten = s,n,Hangup()
...
Code:
*CLI> dialplan reload
4. auf dem snom telefon eine funktions-taste belegen, ich nehme mal die P7 (rechts oben auf dem 12er block mit den LEDs). dazu im webfrontend des telefons (beispiel callerid "10") den typ auf "Nebenstelle" und den wert auf "<sip:qm-board-10@192.168.0.100>" stellen, wobei

"qm-board-10" ist der hint für dieses telefon (z.b. extension 10)
"192.168.0.100" ist die ip der asterisk

und schon sollte es funktionieren: der benutzer kann sich mit einer betätigung der belegten funktionstaste am snom der queue hinzufügen (wenn er kein member isr) oder aus dieser entfernen (wenn er bereits member ist), ist er member der queue, dann leuchtet die LED neben der funktionstaste P7. auf telefonen, die das nicht unterstützen, kann der benutzer "*30*" wählen, um das gleiche zu machen.

[EDIT]
hier noch meine "/etc/asterisk/queues.conf":
Code:
[general]
persistentmembers = yes
autofill = yes
monitor-type = MixMonitor
 
[board]
musicclass = default
timeout = 30
retry = no
es sind hier KEINE members in der queue definiert.
[/EDIT]

grüße,
laureen
__________________
Debian Etch 4.0
Asterisk 1.4.22 + BriStuff 0.4.0-RC3d (ZaKoTel Packages)
6 x snom360 7.1.30
34 x snom370 7.1.30
3 x asterBoard

"Wer Rechtschreibfehler findet, darf diese behalten, wenn er sie gut behandelt!"

Geändert von laureen (13.07.2008 um 19:19 Uhr).
laureen ist offline   Mit Zitat antworten