DEV Community

Ekim
Ekim

Posted on • Edited on

Brief intro of Asterisk Manager

Weekly sharing

Hi everyone, I am Ekim, a fresh Bootcamp graduate and an IT helper (I don't dare to call myself a programmer yet). Every Friday, I will share some of the work that I've done over the last week in a bid to get feedbacks from you guys and record my journey to become a programmer.

Previously

Make calls through Asterisk CLI

Introduction

After being able to make calls and play around with playback and record dialplan applications, it's time to prepare ourselves for using those functions through codes. But before that, we need to know what Asterisk Manager Interface is.

**Warning: **Only try the following within your own local network.

What is Asterisk Manager Interface ?

  • It is like a remote control of the asterisk.
  • Unlike running asterisk commands on the CLI, the state and process of which cannot be seen and controlled, the asterisk manager interface resolves those issues and helps monitor the operation of the asterisk.
  • Since AMI allows you to remotely control the asterisk, it is advised that you do not use AMI directly with a public IP address without protection like SSL connection or a VPN tunnel.

Steps using AMI

  • Check if port 5038 is available as we are going to use it.
 netstat -lpn 
Enter fullscreen mode Exit fullscreen mode
  • Configure the manager.conf
 [general] enabled = yes ;by default, it is "no" for security reason. port = 5038 bindaddr = 0.0.0.0 ;bind the ip address to localhost for lcoal testing, need to change when remote control it [ekim] ;login username, often for CRM, ERP or dialer secret=xxxxxxxx ;login password, should be complex deny=0.0.0.0/0.0.0.0 ;deny everything --> much safer to permit each ip address we trust permit=XXX.XXX.XX.XX/255.255.255.0 ;permit local network after an entire denial, this can also be done in acl.conf read=all ;read all logs write=all ;write all logs 
Enter fullscreen mode Exit fullscreen mode
  • Restart asterisk after IP and port changes
 sudo service asterisk restart 
Enter fullscreen mode Exit fullscreen mode
  • Use telnet to connect to AMI

    • telnet allows access to remote servers, which is based on the TELNET protocol. Only recommend you use telnet to connect within your own network.
 # telnet <permitted IP address> <port> telnet XXX.XXX.XX.XX 5038 
Enter fullscreen mode Exit fullscreen mode
 # after that, tab "enter" once as we need to continue to login Action:login Username:ekim Secret:xxxxxxxx # when finish registering, tab "enter" twice for signaling you're done 
Enter fullscreen mode Exit fullscreen mode
  • After that, you should see the Response: Success and could see all actions in the asterisk.
 Response: Success Message: Authentication accepted Event: FullyBooted Privilege: system,all Uptime: 67 LastReload: 67 Status: Fully Booted 
Enter fullscreen mode Exit fullscreen mode

ami

  • Now, you have accessed to your own asterisk server and entered the AMI. That means you are no longer playing on the CLI. You are 'remotely controlling' your asterisk pbx.

  • So, why not we try to originate a call (make a call) and see what would happen ?

  • The below is based on our first tutorial pjsip and dialplan settings

 Action:Originate Channel:PJSIP/7000 Exten:7100 Context:interaction Priority:1 # remember to tab 'enter' twice to signal that you are finished 
Enter fullscreen mode Exit fullscreen mode

7000

7000

Mine is working now, how about yours ? Btw, if you want to leave the AMI, you could do this

 Action:logoff # remember to tab 'enter' twice to signal that you are finished 
Enter fullscreen mode Exit fullscreen mode

Conclusion

You might want to keep your eyes close to the log data shown in AMI since those are the things we might need if we touch on the coding part. That's all for today. In the meantime, stay healthy and stay tuned for more content !!!

Top comments (0)