Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Phone Modem

by bkiahg (Pilgrim)
on Jun 28, 2005 at 17:48 UTC ( [id://470736]=perlquestion: print w/replies, xml ) Need Help??

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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://470736]
Approved by friedo
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2024-04-19 21:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found