Das Asterisk Manager Interface
Das Asterisk Manager Interface ist in Asterisk integriert und
erhält seine Konfiguration in der Datei manager.conf (per Default in
/etc/asterisk/manager.conf).
Der Aufbau der manager.conf
Die Datei manager.conf hat einen globalen Bereich und einen oder mehrere
Sektionen (Benutzerbereiche) für den authentifizierten Zugang zum AMI. Die
Bereiche werden in eckigen Klammern [Bereich] eingeschlossen und markieren
damit den Anfang des Bereichs in der Konfigurationsdatei.
Der globale Bereich der manager.conf
Der globale Bereich konfiguriert das AMI
grundsätzlich und beginnt mit dem Eintrag [general].
In der General-Sektion gibt es die Konfigurationseinträge
- enabled = [yes|no]
Über die Option enabled wird das Asterisk Manager Interface aktiviert
oder deaktiviert. Sollte keine Software auf das AMI zugreifen,
sollte es, speziell wenn Asterisk an einer öffentlichen IP-Adresse
betrieben wird, deaktiviert werden.
Wird das Manager-Interface von Asterisk verwendet und an eine
öffentliche IP-Adresse gebunden (siehe bindaddr), so muss eine
Firewall das AMI vor unbefugtem Zugriff schützen.
- bindaddr = [IP-Adresse|0.0.0.0]
Mit der Option bindaddr wird bestimmt, an welche IP-Adresse des
Rechners, das Asterisk Manager Interface gebunden ist. Die IP-Adresse,
die hier verwendet wird, kann entweder die 127.0.0.1 (localhost, der
Zugriff ist nur vom selben rechner aus möglich), die bzw. eine IP-Adresse
des Rechners, auf dem Asterisk läuft, oder 0.0.0.0 sein. Ist es eine
IP-Adresse des Rechners, kann von anderen Rechnern über das Netzwerk auf
das AMI genau über diese IP-Adresse zugegriffen werden. Ist es 0.0.0.0
kann über das Netzwerk auf den Asterisk-Manager über eine beliebige
IP-Adresse des Rechners, auf dem Asterisk installiert ist, zugegriffen
werden.
timestampevents=yes
Event: PeerStatus
Privilege: system,all
Timestamp: 1385914057.947166
Peer: SIP/510
PeerStatus: Registered
timestampevents=no
Event: PeerStatus
Privilege: system,all
Peer: SIP/510
PeerStatus: Registered
- port = [portnummer]
Um auf das Asterisk-Manager-Interface zuzugreifen, wird neben der
IP-Adresse auch ein (TCP-)Port benötigt. Die Option port gibt an, auf
welchem TCP-Port das AMI auf Befehle wartet.
- webenabled = [yes|no]
Seit der Version 1.4 hat Asterisk einen integrierten WebServer, mit
dessen Hilfe über das http-Protokoll auf das Manager-Interface zugegriffen
werden kann. Über die Option httpenabled wir der Zugriff über http
aktiviert oder deaktiviert.
- httptimeout = [timeout]
Die Option httptimeout gibt durch eine posivive Ganzzahl die Anzahl der
Sekunden an, bis ein Timeout bei http-Verbindungen zum Manager-Interface
auftritt.
- displaysystemname = [yes|no]
Mit dieser Option wird entschieden, ob der Manager den Systemnamen
in Events und Respones meldet.
- displayconnects = [yes|no]
Hier wird eingestellt, ob eine Anmeldung an das Asterisk-Manager-Interface,
im der Asterisk CLI (Command Line Interface) angezeigt wird.
- timestampevents = [yes|no]
Die Option timestampevents besagt, dass Events, die mittels des
Asterisk-Manager-Interface gemeldet werden, einen Zeitstempel beinhaltet.
Ist timestampevents eingeschaltet, wird innerhalb des Events ein Zeitstempel
als Unix-Zeit (Anzahl der vergangenen Sekunden seit dem 1. Januar 1970 00:00 Uhr UTC)
eingefügt.
Die General-Sektion endet mit dem Anfang der ersten Benutzer-Sektion
und muss nicht explizit abgeschlossen werden.
Der Benutzerbereich der manager.conf
Um das Asterisk-Manager-Interface verwenden zu können, müssen sich die
Programme als Benutzer am Manager-Interface authentifzieren. Die Benutzer, Passworte und
Zugriffsrechte werden in den Benutzerbereichen der manager.conf eingerichtet.
Um das AMI verwenden zu können, muss mindestens ein Benutzer angelegt werden.
Jeder Benutzerbereich wird mit einer Sektion mit dem Benutzernamen(z.B. [Benutzer])
eingeleitet danach werden die Optionen für diesen benutzer festgelegt:
- secret = [Passwort]
Hier wird das Passwort für den Benutzer eingetragen.
- deny = [IP-Adresse|IP-Netz|0.0.0.0]
Eine Liste mit IP-Adressen oder IP-Netzwerken, aus denen sich dieser
Benutzer am Asterisk-Manager-Interface nicht anmelden darf,
wenn die Anmeldung nicht explizit durch die Option allow
erlaubt wird.
- permit = [IP-Adresse|IP-Netz|0.0.0.0]
Eine Liste mit IP-Adressen oder IP-Netzwerken, aus denen sich der
Benutzer anmelden darf.
- read=[Kommagetrennte Liste der Leseklassen]
Die option read gibt an, auf welche Klassen von Befehlen (Manager-Kommandos)
der Benutzer lesend zugreifen darf. Lesender Zugriff bedeutet im Fall des
AMI, dass der angemeldete Benutzer Events dieser Klasse empfängt.
- write[Kommagetrennte Liste der Schreibklassen]
Mit der Option write wird festgelegt, auf welche Klassen von Befehlen
der Benutzer schreibend zugreifen darf, also Kommandos senden und
Antworten auf diese Kommandos empfangen kann.
- writetimeout=[Ganzzahl]
Eine positive Ganzzahl in Millisekungen, in der ein Schreibkommando
abgeschlossen werden muss.
Befehlsklassen für die Optionen read und write
- system
Generelle Systeminformationen erhalten und Kommandos absetzen,
die den Systemstaus verändern.
- call
Informationen zu Asterisk-Kanälen und Veränderung Informationen und Stati
von laufenden Kanälen.
- log
Log-Informationen empfangen. (Read-Only)
- verbose
Weitergehende Informationen empfangen (Read-Only)
- command
Command Line Interface (CLI) Kommados absetzen. (Write-Only)
- agent
Informationen über Warteschlangen (Queues) und Agenten (Agents) erhalten
und Agenten zu einer Warteschlange hinzufügen, entfernen oder verändern.
- user
Das Recht Benutzer-Events zu senden und empfangen.
- config
- dtmf
Events zu DTMF-Übertragungen erhalten. (Read-Only)
- reporting
Systeminformationen erhalten.
- cdr
Die Ausgabe des CallDetailRecord-Manager emfangen, wenn der
CDR-Manager geladen ist.
- dialplan
Benachritigung empfangen, wenn Variablen verändert werden oder neue
Extensions hinzugefügt werden.
- originate
Das Recht, neue Anrufe zu initiieren. (Write-Only)
Eine einfaches Beispiel einer manager.conf
[general]
enabled = yes
webenabled = no
port = 5038
bindaddr = 127.0.0.1
[user1]
secret = passwort1
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config
Veränderungen an der manager.conf
Damit Veränderungen an der manager.conf in Asterisk wirksam werden,
muss Asterisk entweder neu gestartet werden oder das Asterisk Manager Interface
innerhalb Asterisk neu geladen werden. Dies wird in der CLI von Asterisk mit dem Befehl
module reload manager oder aus der
Linux-Shell mit dem Befehl asterisk -rx "module reload manager"
gemacht.
Test des Asterisk-Manager-Interfaces
Nachdem die Einstellungen für das AMI in der manager.conf durchgeführt wurden und Asterisk gestartet wurde,
sollte die Funktion des manager Interfaces von Asterisk getestet werden. Als erstes sollte man nachschauen,
ob das AMI auf dem Asterisk-Server an die gewünsche IP-Adresse / den gewünschten Port gebunden ist.
Dies wird durch die Eingabe des Befehls
netstat -an | grep 5038
in einer Linux-Shell durchgeführt, sofern der AMI auf den Standardport 5038 konfiguriert ist.
Die Ausgabe sollte in etwa so aussehen:
cptk:/etc/asterisk# netstat -an | grep 5038
tcp 0 0 0.0.0.0:5038 0.0.0.0:* LISTEN
cptk:/etc/asterisk#
Anschließend kann man sich per Telnet auf den Port verbinden und die ersten einfachen Kommandos eingeben.
Kommandos, die einzutippen sind, sind fett markiert. Bitte beachten, dass die <enter>-Taste
zum Abschluß eines Kommandos zweimal gedrückt werden muss:
cptk:/etc/asterisk# telnet 127.0.0.1 5038 <enter>
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Asterisk Call Manager/1.0
action: login <enter>
username: user1 <enter>
secret: passwort1 <enter> <enter>
Response: Success
Message: Authentication accepted
action: logoff <enter> <enter>
Response: Goodbye
Message: Thanks for all the fish.
Connection closed by foreign host.
cptk:/etc/asterisk#
Entlasten Sie Ihre IT und entscheiden Sie sich für unsere Produkte und Support.
Wir machen uns stark für Ihren Erfolg.