Der Asterisk Manager ist ein Client/Server-Modell über TCP am Port 5038. Mit dem Asterisk Manager Interface (AMI) kannst Du die Asterisk Telefonanlage steuern, Anrufe tätigen, den Mailbox-Status prüfen, Kanäle und Warteschlangen überwachen sowie Asterisk-Befehle ausführen. Alternativ dazu kannst Du AGI verwenden um einem entfernten Prozess die Ausführung von Dialplan-Anwendungen zu ermöglichen oder das Asterisk RESTful Interface (ARI) verwenden um beides via REST zu machen.
Konfiguration
Am Asterisk Server musst Du das /etc/asterisk/manager.conf
File entsprechend bearbeiten:
nano /etc/asterisk/manager.conf
[general]
enabled = yes
port = 5038
bindaddr = 127.0.0.1
webenabled = no
Durch die bindaddr stellen wir sicher, dass der AMI ausschließlich von lokalen Scripts angesteuert werden kann. Keine Internetapp oder Hacker können von außerhalb auf Deinen Server üer AMI zugreifen!
Weiters musst Du im manager.conf File einen AMI Benutzer anlegen. Hier habe ich folgende Daten verwendet:
- Benutzername: deleteme
- Passwort: secretForDemo4711
Den Zugang habe ich nur von dem lokalen Asterisk Server erlaubt (siehe deny und permit)
[deleteme]
secret=secretForDemo4711
deny=0.0.0.0/0.0.0.0 ; deny all IP/netmask
permit=127.0.0.1/255.255.255.0 ; permit only from localhost
read=all ; Receive all types of events
write=all ; Allow this user to execute all actions
;read = system,call,log,verbose,command,agent,user,originate
;write = system,call,log,verbose,command,agent,user,originate
Last but not least muss die Asterisk Konfiguration neu geladen werden:
service asterisk reload
Testen
Testen kann man das nun indem man auf dem Asterisk server eine Telnet session auf den AMI Port macht:
telnet 127.0.0.1 5038
Und die Kommandos einfach in das Terminal pasted:
Action: Login
ActionID: 1
Username: deleteme
Secret: secretForDemo4711
Danach drücke 2 x die RETURN Taste.
Nun bist Du in der AMI session.
Um diese zu verlassen gibst Du folgendes ein:
Action: Logoff
Und auch hier drückst Du 2 x die RETURN Taste.
Beispiel – Alle peers anzeigen
Willst Du e.g. ein Kommando absetzen so kannst Du das in einem tun:
telnet 127.0.0.1 5038
und dann pastest DU folgendes ins Terminal:
Action: Login
ActionID: 1
Username: deleteme
Secret: secretForDemo4711
Action: Command
Command: sip show peers
Action: Logoff
Und auch hier drückst Du 2 x die RETURN Taste.
Beispiel – Einen Anruf veranlassen
In folgendem Beispiel wird das SIP-Phone 5100 angerufen. Wenn dies abhebt (leg 1), wird die extension 800 gewählt (leg 2) und beide legs verbunden:
telnet 127.0.0.1 5038
und dann pastest DU folgendes ins Terminal:
Action: Login
ActionID: 1
Username: deleteme
Secret: secretForDemo4711
Action:Originate
Channel:SIP/5100
Context:phones
Exten:800
Priority: 1
Action: Logoff
Beispiel – Aktive Kanäle bzw. aktive Calls
Im folgenden Beispiel sehen wir alle aktiven Kanäle bzw. Anrufe:
telnet 127.0.0.1 5038
und dann pastest DU folgendes ins Terminal:
Action: Login
ActionID: 1
Username: deleteme
Secret: secretForDemo4711
Action: Command
Command: core show channels
Action: Logoff