We are looking for a VOIP Dialer system to support several Use Cases including:
1. Call and play recorded message for a list of numbers
2. Same as #1 with Press 1 to talk to live person, Press 2 to decline
3. Insert specific time/day/event information into message played
4. Call a list of numbers in the order provided and do a screen pop of profile for person called and order referenced
We have heard Asterisk and FreePBX are popular but have no experience with these or other systems such as Vicidial, vTiger, plivo, etc and so we are looking for some guidance from someone who works with this technology.
Asterisk is indeed the underlying technology behind FreePBX, and plenty of other distributions. I mostly work with the bare-metal Asterisk builds and don't venture into GUIs, so I cannot comment on FreePBX specifically. What I do know is that it probably does not have all the features you require out of the box in the GUI, and it may actually hinder you building a solution because it is harder to interact directly with the underlying software.
There is another possible solution though. Another distribution known as Elastix. I have not had a need to use it myself as I haven't yet deployed Asterisk in a call centre environment, but I do know it includes a custom call centre module as standard, built on top of Asterisk's manager interface. This is a huge benefit, because it features a predictive dialer. Most third-party services which you might outsource your campaign to would use this technique; a statistical model is built by the system based on the average length of a call, average length of time to answer etc and the average availability of an agent to take a call. Combining all those factors, it will determine the optimum time to place a call to a new number to ensure the agents are kept busy and therefore the performance of your campaign is improved.
I should add that in most jurisdictions, there are legal directives to only have x number of "abandoned calls" per hour / day / week or some other unit of time. This is typically a problem if you call and want to connect the call directly to an agent; to keep the agents busy, the system might make many calls and then connect the first one to be answered, leaving the others with silence. I am no lawyer and I don't know where you're based, so I can't comment on the legalities of your particular campaign, but whether the inclusion of a pre-recorded message avoids these problems I cannot say. It is interesting that many telemarketing campaigns now feature recorded messages on answer -- whether that's to reduce the number of agents needed or work around legal issues I don't know. Either way, you'll want to make sure you're covered, because the laws are often very strict in this regard -- they are here in the UK, and in the US too, I believe.
Asterisk does have support for text-to-speech synthesis which can be compiled in. By default, this uses the Festival package on the Linux system to produce the speech. It can be temperamental and may not be what you had in mind, but there are plenty of other packages available (many free) which also add this support.
The typical way of doing a "screen pop" is using Jabber, which is effectively a form of Instant Messaging (IM). Asterisk integrates with Jabber, again provided the support is compiled in (there are some pre-requisite packages required on the server before Asterisk is built from source). Each agent would need to have an IM client capable of communicating with the Jabber server on their PC. Asterisk would be programmed with each agent's Jabber ID (which could perhaps be their extension number, for simplicity's sake). This would require custom code to transmit details on connection with a call, but it shouldn't be too difficult to implement. Elastix also has IM support out of the box, so it may actually be set up to do exactly this in a call centre environment - again, I've not had occasion to work directly with Elastix so I cannot comment.
One of the many benefits to using Asterisk or one of its derivatives, besides it being free, is the community is huge and the scope for customisation is massive. If it cannot do something you would like it to do, there is probably some code on the Internet which someone has put together already. If not, it is just built atop standard Linux in C, so you can quite happily add new features. I've never had a need to develop anything new, because most things (even very advanced stuff) have already been thought about and are available.
Many of the proprietary systems are more restricted in terms of how much you can customise and how you can build a platform to suit your needs, and where this is allowed, it will typically require many hours of time from a developer specially trained to work with the particular PBX you use.
Have a look at Elastix. Your mileage may vary, and you may still need a small bit of custom development work to get it configured exactly how you wish. I would also suggest you speak to someone who deals with Asterisk when you build any system out, because the cost of getting a properly designed system will far outweigh the problems you will have in the future if things are not configured according to best practices, documented and tested etc from the start.
-Matt