Asterisk AMI Interface

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

This Post Has One Comment

Schreibe einen Kommentar