AMI vs Call Files


I have developped a set of scripts that allow asterisk to place few hundreds (400-500) simultaneous outgoing calls to a customer base for vocal notification (total base is around 20K people).

The scripts work fairly well, occasionnally I have some files left in /var/spool/asterisk/outgoing/

  • but due to this happening when significant calling is being done, debugging is not that easy and I’ve lieved with it so far.

I am in the process of reworking that section, and I was wondering if it made sense to use AMI instead of call files. Will there be any performance improvements, any drawbacks ? I am currently on asterisk 1.8.7, but have no issue upgrading - until I find one !

Thanks for sharing your thoughts,


Any ideas anyone ?

If you have any programming experience, I would consider writing a wrapper class around AMI. I’ve done this and it is incredibly powerful. I can do everything from calling/broadcasting/transfering/hangup/etc and can do it automated from a client I connect to my AMI wrapper.

I know that’s not terribly specific but if you have particulars let me know.

thanks for the reply.

It is really around performance that I am interested. I am not sure I am able to maintain a socket connection up all the time, and I fear that the permanent log on/off from the AMI cause some slowdown.
Even if I were to overcome this log on/off issue, would the processing be faster via AMI ou Call files - it seems to me that Asterisk can process a lot of call files at once, and hence be more efficient. But it is just guessing

In your case then, call file is probably the way to go. I use AMI more as a way to expose a programmable interface to Asterisk so I can automate and integrate other systems into Asterisk. And I don’t send out nearly the volume of calls that you do. AMI wrapper would probably be a lot of work to implement (well) and wouldn’t really offer better performance…in fact it would increase complexity. I like it but it’s definitely not for every situation.

thanks for the heads up. it helps - at least, it comforts me in being “lazy” and keeping my current code :wink: