Die Grundkonfiguration
Als Erstes konfigurieren wir die Anlage so, dass alle Teilnehmer intern telefonieren können und jeder eine persönliche Voicemailbox hat. Danach erweitern wir Stück für Stück um weitere Bausteine.
pjsip.conf für fast 100 Teilnehmer
Für eine Anlage mit knapp 80 Nebenstellen wird die pjsip.conf
schnell unübersichtlich, wenn man jeden Endpoint einzeln mit
endpoint/auth/aor-Blöcken ausschreibt. Deshalb benutzen wir
Templates und führen einzelne Endpoints nur noch mit den
abweichenden Werten.
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0
tos_sip=cs3
tos_audio=ef
; --- Templates: Defaults für alle Mitarbeiter-Telefone ---
[endpoint-template](!)
type=endpoint
disallow=all
allow=ulaw
allow=alaw
allow=g722
direct_media=no
rtp_symmetric=yes
force_rport=yes
rewrite_contact=yes
[auth-template](!)
type=auth
auth_type=userpass
[aor-template](!)
type=aor
max_contacts=1
; --- Hausmeister ---
[150](endpoint-template)
context=hausmeister
callerid="Hausmeister" (150)
auth=150
aors=150
[150](auth-template)
username=150
password=SEHR-GEHEIM-150
[150](aor-template)
[151](endpoint-template)
context=hausmeister
callerid="Hausmeister" (150)
auth=151
aors=151
[151](auth-template)
username=151
password=SEHR-GEHEIM-151
[151](aor-template)
; --- IT ---
[161](endpoint-template)
context=it
auth=161
aors=161
[161](auth-template)
username=161
password=SEHR-GEHEIM-161
[161](aor-template)
; (162, 165 analog)
; --- Geschäftsführung ---
[201](endpoint-template)
context=geschaeftsfuehrung
auth=201
aors=201
[201](auth-template)
username=201
password=SEHR-GEHEIM-201
[201](aor-template)
; (202 analog)
; --- Sekretariat, Verkauf, Versand, Produktion analog ---
; ...
|
Die Passwörter oben sind Platzhalter. In einer realen Installation
benutzen Sie für jedes Telefon ein generiertes, individuelles
Passwort — z. B. aus |
Wer die PJSIP-Konfiguration noch kompakter haben möchte (oder sie aus einer Datenbank ableiten muss), sollte einen Blick auf ARA/Realtime oder auf generierende Tools wie Ansible-Templates werfen. Für die Mehrzahl der Installationen reicht aber die Datei mit Templates vollkommen.
CallerID
Im Endpoint steht zweimal die Option callerid. Sie legt fest, was
beim Angerufenen auf dem Display angezeigt wird. Beispiel:
callerid="Hausmeister" (150)
Damit melden sich beide Hausmeister-Telefone (150 und 151) als "Hausmeister" mit der Rückruf-Nummer 150 — ein Rückruf landet also immer auf dem Büro-Apparat, nicht auf dem Mobil-Apparat.
Der Wählplan (Dialplan)
Im Hello-World-Kapitel haben wir einen
einfachen Dialplan für zwei Telefone gebaut. Bei 80 Teilnehmern
funktioniert derselbe Aufbau — wir fassen Gruppen mit Patterns
zusammen und verknüpfen Contexte per include ⇒.
Die extensions.conf für die Apfelmus GmbH
[globals]
VOICEMAIL_CONTEXT=default
[sonstige]
[hausmeister]
include => interne-gespraeche
include => voicemailsystem-komfort
[it]
include => interne-gespraeche
include => voicemailsystem-komfort
; Die IT-Abteilung kann alle Mailboxen debuggen:
include => voicemailsystem-normal
[geschaeftsfuehrung]
include => interne-gespraeche
include => voicemailsystem-komfort
[sekretariat]
include => interne-gespraeche
include => voicemailsystem-komfort
[verkauf-national]
include => interne-gespraeche
include => voicemailsystem-komfort
[verkauf-ausland]
include => interne-gespraeche
include => voicemailsystem-komfort
[versand]
include => interne-gespraeche
include => voicemailsystem-komfort
[produktion]
include => interne-gespraeche
include => voicemailsystem-komfort
[interne-gespraeche]
exten => _[1-5]XX,1,Dial(PJSIP/${EXTEN},60)
same => n,VoiceMail(${EXTEN}@${VOICEMAIL_CONTEXT},u)
[voicemailsystem-komfort]
; Der User muss nicht die Mailbox-Nummer eingeben.
exten => 800,1,VoiceMailMain(${CALLERID(num)}@${VOICEMAIL_CONTEXT})
[voicemailsystem-normal]
exten => 801,1,VoiceMailMain()
Der Context [interne-gespraeche] sagt: Alle Nummern 100–599 rufen
per Dial() den entsprechenden PJSIP-Endpoint für 60 Sekunden,
danach landet der Anrufer auf der Voicemailbox. Wer 800 wählt, hört
die eigene Mailbox ab — welche genau, bestimmt
$\{CALLERID(num)}. 801 ist der IT-Debug-Zugang mit expliziter
Mailbox-Auswahl.
Schwarze Löcher im Rufnummernplan
Genau genommen müsste der Dialplan etwas feingranularer sein — es gibt laut Rufnummernplan Bereiche (z. B. 270–299), die gar keine Telefone haben. Wenn ein Anrufer dort versehentlich landet, hinterlässt er eine Nachricht auf einer Mailbox, die niemand abhört. Wer das sauber abbilden möchte, schreibt das Pattern enger:
[interne-gespraeche]
exten => _1[5-6]X,1,Dial(PJSIP/${EXTEN},60)
same => n,VoiceMail(${EXTEN}@${VOICEMAIL_CONTEXT},u)
exten => _2[0-6]X,1,Dial(PJSIP/${EXTEN},60)
same => n,VoiceMail(${EXTEN}@${VOICEMAIL_CONTEXT},u)
exten => _[358]XX,1,Dial(PJSIP/${EXTEN},60)
same => n,VoiceMail(${EXTEN}@${VOICEMAIL_CONTEXT},u)
exten => _4[0-4]X,1,Dial(PJSIP/${EXTEN},60)
same => n,VoiceMail(${EXTEN}@${VOICEMAIL_CONTEXT},u)
Für die Einführung bleiben wir bei der simplen Variante mit
_[1-5]XX. Sie trifft im Zweifel "zu viel", aber das merkt man beim
Erstellen der Mailboxen.
voicemail.conf
Die voicemail.conf bleibt so, wie in
„… und jetzt mit
einem Anrufbeantworter" beschrieben — wir fügen lediglich mehr
Einträge hinzu:
[general]
format = wav49|gsm
serveremail = voicemail@apfelmus-gmbh.de
maxmsg = 200
maxsecs = 300
attach = yes
delete = no
[default]
150 => GENERIERT,Hans Hausmeister,hausmeister@apfelmus-gmbh.de
201 => GENERIERT,Ernst Wichtig,ernst.wichtig@apfelmus-gmbh.de
202 => GENERIERT,Hans Toll,hans.toll@apfelmus-gmbh.de
; ... (restliche Einträge analog)
|
Die Passwörter (hier symbolisch |