Application based on Asterisk - advice needed


I’m developing an application which should:

  1. Make many calls when the user press a button (maybe 1000 calls; 30 contemporary)
  2. when users answer the phone an IVR menu should be spoken
  3. After IVR, it should be possible to accept a voice message and record it
  4. Phone book, IVR choices and vocal message should be recorded into a SQL database

So, for sure, I have to make an app which provides a button that when clicked tells Asterisk to make the calls.

Main questions are:
a) I could achieve the target of point 1) by simply telling Asterisk to “start” (and letting him do everything by scripting/configuring it) or should I do better using Asterisk “as a driver” and controlling each step of the call (answering/proposing IVR/record voice) by the main app?
b) Should I let Asterisk interact with SQL db on his own? Or it’s better to control SQL/Asterisk from the main app?
c) I was thinking about using AGI to control Asterisk from the application (MONO C#); but there is also AMI…

What do you suggest?
Thank you all

AGI can only be used for inbound calls, it cannot be used to schedule outbound calls (well, that’s not totally true) so you really need to use the AMI for your software.

Use the AMI for the entire thing. Don’t hand off control to Asterisk for anything except initiating the calls.