Gezielte Ansteuerung der LEDs
Bisher haben wir Hints mit konkreten Geräten wie PJSIP/21 verbunden
— die LED reagiert dann auf den Status dieses Telefons. Oft möchte
man aber eine LED willkürlich steuern, zum Beispiel um anzuzeigen,
ob der Weihnachtsbetrieb läuft, ob man in einer Queue eingeloggt ist
oder ob der Rasensprenger aktiv ist.
Dafür gibt es in Asterisk Custom Device States: virtuelle Geräte, deren Zustand Sie selbst setzen.
Hint auf ein Custom-Device
Ein Hint kann neben PJSIP/…, IAX2/… oder ConfBridge:… auch
auf ein frei gewähltes Custom:… zeigen:
[interne-benutzer]
exten => 99,hint,Custom:mein-status
Ein Telefon, das 99@interne-benutzer abonniert (über eine BLF-Taste
auf 99), bekommt fortan den Zustand von Custom:mein-status
angezeigt.
Den Zustand setzen
Geschrieben wird der Zustand mit der Funktion DEVICE_STATE(), entweder
im Dialplan oder direkt auf dem CLI.
Im Dialplan:
exten => *91,1,Set(DEVICE_STATE(Custom:mein-status)=RINGING)
same => n,Hangup()
exten => *92,1,Set(DEVICE_STATE(Custom:mein-status)=INUSE)
same => n,Hangup()
exten => *93,1,Set(DEVICE_STATE(Custom:mein-status)=NOT_INUSE)
same => n,Hangup()
Auf dem CLI:
*CLI> devstate change Custom:mein-status RINGING
Changing mein-status to RINGING
*CLI> devstate list
--- Custom Device States --------------------------------------------
--- Name: 'Custom:mein-status' State: 'RINGING'
Zustandswerte und LED-Anzeige
| Wert | Bedeutung | Typische Anzeige am Telefon[1] |
|---|---|---|
|
unbekannt, noch nie gesetzt |
aus |
|
nicht erreichbar |
aus |
|
frei |
aus |
|
im Gespräch |
leuchtet dauerhaft |
|
besetzt |
leuchtet dauerhaft |
|
klingelt |
blinkt |
|
klingelt und im Gespräch |
blinkt |
|
in der Warteschleife |
blinkt (langsam) |
|
ungültig |
aus |
Direkt nach einem Asterisk-Neustart, bevor DEVICE_STATE() das erste
Mal gesetzt wurde, hat ein Custom-Device den Status UNKNOWN.
Kontrolle im CLI
*CLI> core show hints
99@interne-benutzer : Custom:mein-status State:Ringing Watchers 0
*CLI> devstate list
--- Name: 'Custom:mein-status' State: 'RINGING'
Typische Einsatzfälle
-
Queue-Login-Anzeige: Beim Einloggen in eine Queue setzt man
DEVICE_STATE(Custom:agent-<nst>)=INUSE, beim AusloggenNOT_INUSE. Eine BLF-Taste zeigt dem Supervisor sofort, wer gerade eingeloggt ist. -
Manuelle Statusanzeige: Ein Mitarbeiter drückt eine Taste, die per Kurzwahl eine DTMF-Extension anruft, die dann
Custom:praesenz-<user>toggelt. -
Alarme: Ein externes Skript setzt per
asterisk -rx "devstate change Custom:alarm RINGING"eine blinkende LED, sobald das Monitoring einen Fehler meldet.