bkiahg has asked for the wisdom of the Perl Monks concerning the following question:

Hello Wise Monks,

I come once again seeking your guidance. I am looking to be pointed in the right direction of some good reading material. What I am trying to do is take control of a modem and whenever someone dials in:

a) Pull the caller id or ani information off of it. and

b) Wait for further touchtone commands.

I did a search on cpan and the ones I looked at really didn't fit my problem. Some would answer but would want and require voice software (Modem::Vgetty) others would take control and dial out (Device::Modem). Any thoughts, ideas, articles, code snippets, insults would be greatly appreciated.

Replies are listed 'Best First'.
Re: Phone Modem
by BUU (Prior) on Jun 28, 2005 at 19:09 UTC
    Just a thought, you may way to look in to Asterisk. While it does a lot more than what you've mentioned, it has a very nice interface for doing so. It has a nifty little feature called "AGI" scripts, which are similar to CGI scripts in that it will execute a program every time it gets a phone call, then provides a nice interface for that script to communicate with the caller.
      I will certainly look into this. Thank you for that direction.
Re: Phone Modem
by waswas-fng (Curate) on Jun 28, 2005 at 18:38 UTC
    Welp, you can do "A" just by reading from the comm line -- the modem if it supports CallerID or ANI will spit out the phone number on ring. "B" get more complicated -- on windows there is a API for extended voicemail modems called TAPI. As far as I know there is no direct perl binding to that. An article that talks about managing a modem with perl in windows is here

    now, your post makes me think you are trying to do this on unix. in that case Device::vgetty is the way to go. You can get "B" by using the "RECEIVE_DTMF" event. This will tell you what DTMF was received (0-9,*,#). There is a nice example of this in the POD for Modem::Vgetty. "A" then becomes diffucult because I do not think that vgetty reports callerid as an event -- nor have I found a way to pull that from the modem directly when vgetty is in control.


    -Waswas
      More than likely this is going to go on a windows box. Although if there was an easier solution for Unix it could definitely be moved to a different box.
Re: Phone Modem
by Anonymous Monk on Jun 28, 2005 at 19:32 UTC
    I did a search on cpan and the ones I looked at really didn't fit my problem.
    Then you need to look for a non-perl solution.
      Not necessarily. Just because a search didn’t turn up exactly what I was looking for doesn’t mean I should just give up. I accessed another resource of the vast knowledge of the monks here. Maybe it will turn out that a non-perl answer is best for me. Perl is just my language of choice so I wanted to run down ever angle before abandoning it.
        It means you should find a non-perl solution and ducttape it to perl somehow.