I know that there is a way to make Linux dial out using a modem.
Is there a way to program Linux (using a library/device) to
- pick up the modem (record phone calls) etc?
- see caller id?
I wouldn't recommend using a typical data/voice modem for this.
Even 15 years ago, when modems were current technology and there was lots of competition for features and technology, they were a pretty low-grade way to do the sorts of things you're asking for. Now, after a decade of race-to-the-bottom activity exemplified by the near universal takeover of softmodems, I think you'll be lucky to even get to the proof-of-concept stage with a consumer grade modem.
Back in the day, we did this sort of thing with Dialogic boards. A great many of the IVR systems you've used were built on Dialogic, so much so that there's still a thriving used-board market for those companies keeping ancient telephony systems going.
The Diva boards are more like what I'm familiar with from the old days. The fact that they now come in PCIe versions reassures me that Dialogic isn't a shambling zombie company, subsisting on the
The Blue boards are specifically targeted at Linux boxes running Asterisk. The main problem I see with the Blue boards is that even the entry-level board requires a T1 line. (Or E1, outside North America, Japan and Korea.) That is, a 24-channel digital trunk line from the telephone company. The last I heard, this cost several hundred dollars a month. Unless you're looking to move beyond about 4 lines, there's probably not a good reason to start off at this level. A lot of telephony equipment does start off at this level, though, since automated telephony does usually end up requiring many lines. Bottom line, although an entry-level Blue board is more expensive than the entry-level Diva board linked above, it's a lot cheaper than a T1 Diva board.
You could try mgetty.
Also see Vgetty basically turns your modem into an answering machine and adds capability to mgetty.
Here are other resources on the topic:
Run a virtual machine with the serial port passed through to Windows 95 as OS. Set it up to run on an "internal" network, so no one from outside can break into that buggy os.
Most voice-modems came with software for Windows...
Update: Thanks for the downvote.
I had this problem in the past and did try my very best with vgetty. The sad thing about it is that it lacks all the nice features of a integrated solution that was provided by the enclosed windows-software. Back then virtualization was unknown... - that would have been the working solution (with the least effort).
The easiest way to use linux to answer the phone is with the Asterisk program. You should be able to yum install asterisk on your linux machine. You then connect an analog adapter to your network and connect your phone line through it. This will allow you to answer the call, see the caller id if the caller id information is sent from your LEC, record the call, and have the caller leave a voice mail message. I have used this setup numerous times to connect analog lines through a linux computer. I do not know of a way to use a standard modem to do this.
You could try taking a look at mgetty, though I never tried anything of the sorts.
Description taken from http://linux.about.com/cs/linux101/g/mgetty.htm
I know that Debian has it: http://packages.qa.debian.org/m/mgetty.html