Ansteuerung der LEDs
Damit eine BLF-Taste am Telefon den Zustand einer Nebenstelle anzeigen
kann, müssen zwei Dinge zusammenkommen: Der Endpoint in pjsip.conf
muss SUBSCRIBEs annehmen dürfen, und Asterisk muss wissen, welche
Extension welchen Zustand anzeigt (Hint).
pjsip.conf
Am überwachenden Endpoint (dem Telefon, das die BLF-Taste hat) werden die folgenden Optionen benötigt:
[21]
type=endpoint
context=interne-benutzer
disallow=all
allow=ulaw
allow=alaw
auth=21
aors=21
mailboxes=21@default ; MWI (nur wenn Voicemail genutzt wird)
allow_subscribe=yes ; Telefon darf SUBSCRIBE senden
sub_min_expiry=30
notify_early_inuse_ringing=yes
device_state_busy_at=1 ; ab wie vielen Gesprächen gilt der Endpoint als "busy"
call_group=2 ; für Pickup (siehe unten)
pickup_group=2
device_state_busy_at=1 lässt Asterisk das Telefon als busy melden,
sobald es im Gespräch ist. Wer Transfers oder Zweitgespräche zulassen
möchte, setzt einen höheren Wert.
call_group und pickup_group sind nur relevant, wenn Sie auch
Anrufe heranholen wollen (siehe Heranholen eines
Anrufs). Ein Endpoint mit pickup_group=2 darf Anrufe von Endpoints
mit call_group=2 übernehmen. Asterisk kennt die Gruppen 0 bis 63.
Hints
Ein Hint ist ein spezieller Dialplan-Eintrag mit der "Priorität"
hint. Er verknüpft eine Extension mit dem Gerätestatus eines
konkreten Channels — zum Beispiel PJSIP/21. Wenn sich der Status
dieses Channels ändert (klingelt, im Gespräch, frei), verschickt
Asterisk ein SIP NOTIFY an alle Telefone, die den Hint abonniert
haben.
Wichtig: Die Hints müssen in dem Context stehen, den der überwachende
Endpoint in pjsip.conf als context= gesetzt hat. Sonst lehnt
Asterisk die SUBSCRIBE-Anfrage ab. Das ist Absicht und lässt sich für
eine einfache Berechtigungssteuerung nutzen: Wer nichts sehen soll,
bekommt einen eigenen Context ohne Hints.
Hint pro Nebenstelle
[interne-benutzer]
exten => 21,hint,PJSIP/21
exten => 21,1,Dial(PJSIP/${EXTEN},40)
same => n,VoiceMail(${EXTEN},u)
exten => 22,hint,PJSIP/22
exten => 22,1,Dial(PJSIP/${EXTEN},40)
same => n,VoiceMail(${EXTEN},u)
Hints per Pattern
Ab Asterisk 1.6 funktionieren Hints auch mit Pattern, und das ist heute der übliche Weg:
[interne-benutzer]
exten => _2X,hint,PJSIP/${EXTEN}
exten => _2X,1,Dial(PJSIP/${EXTEN},40)
same => n,VoiceMail(${EXTEN},u)
|
Während der Interpretation eines Hints besteht noch kein Channel. Bis
auf |
Gruppen-Hint
Ein Hint kann auch mehrere Geräte gemeinsam überwachen — mit &
getrennt. Das ist typisch für Sammelrufe:
[interne-benutzer]
exten => 20,hint,PJSIP/21&PJSIP/22
exten => 20,1,Dial(PJSIP/21&PJSIP/22,40)
same => n,VoiceMail(21,u)
Die LED zeigt den gemeinsamen Zustand an: klingelt, wenn irgendein beteiligtes Telefon klingelt; frei, wenn alle frei sind.
|
Bei vielen Contexten kann es sinnvoll sein, alle Hints in einen
eigenen Context |
Nach Änderungen laden Sie den Dialplan neu:
# asterisk -rx "dialplan reload"