I need a relatively inexpensive solution to make phone calls from the .net platform (C# in particular). it has to be able to dial a number and determine if the line is disconnected, if someone answered, and if someone answer possibly play a message. Thanks for any info.
-
12Using hardware and a phone line, or VOIP and an internet telephony provider, or a mobile device, or something else? (Also isn't this evil?) – Rup Mar 25 '11 at 16:43
-
Glad to hear there's a good reason! But isn't constantly changing your number bad for business? – Rup Mar 25 '11 at 16:54
-
Folks, if you don't want to answer this, don't answer it. I've cleaned up over a dozen flags related to the comments here. – Tim Post Mar 25 '11 at 21:41
4 Answers
You can use Twilio to make outgoing calls. They have a REST API you can call from your application. Check out the Making Calls section.
I'm not associated with Twilio - it's just a useful service I use.

- 12,273
- 24
- 72
- 82
-
1Good answer, the licensing overhead should not be a problem for the stated goal. It will be unacceptable for mass-dialing. – H H Mar 25 '11 at 17:33
-
Another vote for Twilio. I just posted another comment about it [here](http://stackoverflow.com/questions/4203211/replacement-technology-for-tapi/6485541#6485541) as I'm researching similar development tools. – TonyG Jun 26 '11 at 17:38
Depending on what resources you have on hand, what you need to use it for, what type of budget you have, there are a bunch of different options. Some will charge you on a per call basis, some let you set something up where you run it in house and you just pay for up front hardware costs and support.
As Tai Squared stated, Twilio is a solid answer. I also know that Cisco has some automated dialer options.
Phone tree is also another that I have used in the past, though integration with them can be hairy. http://www.phonetree.com/
Good luck.

- 661
- 2
- 9
- 20
-
We do have a budget, but if the solution is pricey but is the "best" solution then I'm sure accounting can be persaded. – Nick Dat Le Mar 25 '11 at 20:51
-
What about www.voicent.com? Anyone ever use them and see how well they stack up vs the competition? – Nick Dat Le Mar 25 '11 at 20:54
Another solution is http://wwww.talksoftonline.com - which integrates with most scheduling systems which allow an export of a file.
The below code was working for a while at the company I work for. But, recently TAPI is unable to initialize because some significant changes were made to our phone system, of which I don't know what was changed, as of yet.
Public Class MakeACall
Private m_tobj As TAPIClass
Private m_array_ITAdresses(10) As ITAddress
Private m_bcc As ITBasicCallControl
Public Sub New()
initializetapi3()
End Sub
Dim m_nIPPHONEline As Integer
Dim m_nGetIPPhoneLineNumber As Integer
Public Sub initializetapi3()
Try
For Each ob1 As ITAddress In m_array_ITAdresses
Next
m_tobj = New TAPIClass()
m_tobj.Initialize()
Dim ea As IEnumAddress = m_tobj.EnumerateAddresses()
Dim ln As ITAddress
Dim arg3 As UInteger = 0
m_nGetIPPhoneLineNumber = -1 'Must initialze to -1 because the phone lines start counting from zero.
m_nIPPHONEline = -1
'm_tobj.EventFilter = DirectCast(TAPI_EVENT.TE_CALLNOTIFICATION | TAPI_EVENT.TE_DIGITEVENT |TAPI_EVENT.TE_PHONEEVENT |TAPI_EVENT.TE_CALLSTATE |TAPI_EVENT.TE_GENERATEEVENT |TAPI_EVENT.TE_GATHERDIGITS | TAPI_EVENT.TE_REQUEST, integer)
For i As Integer = 0 To 10
ea.Next(1, ln, arg3)
m_array_ITAdresses(i) = ln
If (ln Is Nothing) = False Then
m_nGetIPPhoneLineNumber += 1
If m_array_ITAdresses(i).AddressName.ToUpper().IndexOf("IP PHONE") > -1 Then
m_nIPPHONEline = m_nGetIPPhoneLineNumber
End If
End If
Next
Catch ex As Exception
End Try
End Sub
Public Sub MakeCall(ByVal stPhoneNumber As String)
If stPhoneNumber.Length > 6 Then
Try
m_bcc = m_array_ITAdresses(m_nIPPHONEline).CreateCall(stPhoneNumber, TapiConstants.LINEADDRESSTYPE_IPADDRESS, TapiConstants.TAPIMEDIATYPE_AUDIO)
m_bcc.Connect(False)
Catch ex As Exception
MessageBox.Show("Failed to create call.")
End Try
End If
m_tobj.Shutdown()
End Sub
End Class

- 1
- 2