I'm a Linux user looking to write a program which will pick up the phone, dial a number, play a recording and record what the person on the other end of the line says and save it to an audio file. I will want to use the modem that came with my computer if possible. What should I use to write this program?
You can check out asterisk. I would use Ruby complimented by adhearsion instead of C.
look at service such as rabbit link text BT used to run a sevice that did this but merged with rabbit not looked since.
Also there are a few isp who offer this service and there is a international standard for doing the workflow of a call that might be worth looking at.
both these approaches will require less code/work/
I love asterisk so agree worth looking at especially other project built upon..
Also take a look at Twilio -- they're a cloud service and have all of the telephony hardware -- you just need to provide a web interface to handle inbound calls, or connect to their server to initiate outgoing calls. Here's their page on making calls.
I don't want to seem antagonistic, but why solve something with an abacus when you have a calculator? My only guess is that cost is your motivation for wanting to use your modem. As a SO user who goes back to the BBS days, I have argued with countless modems (even US Robotics) that came back with "VOICE" instead of "BUSY" (especially when unwittingly dialing a VOIP PBX). Any sojourn in that direction will just result in hair pulling. Hayes "AT" compatible does not mean what it used to mean. Please, conserve your remaining follicles and use your network card instead.
Using Asterisk (or even easier, FreePBX / Trixbox or many others) you could have this implemented in hours, not days or weeks. What is your time worth?
I'm sorry, but you are solving the wrong problem.