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]

UNKNOWN

unbekannt, noch nie gesetzt

aus

UNAVAILABLE

nicht erreichbar

aus

NOT_INUSE

frei

aus

INUSE

im Gespräch

leuchtet dauerhaft

BUSY

besetzt

leuchtet dauerhaft

RINGING

klingelt

blinkt

RINGINUSE

klingelt und im Gespräch

blinkt

ONHOLD

in der Warteschleife

blinkt (langsam)

INVALID

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 Ausloggen NOT_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.


1. Die Anzeige hängt vom Endgerät ab.