Caller ID (was telephony)

Shawn Rutledge plug-discuss@lists.plug.phoenix.az.us
Mon, 10 Jun 2002 11:00:59 -0700


On Mon, Jun 10, 2002 at 09:43:07AM -0700, Kurt Granroth wrote:
> On Monday 10 June 2002 09:11 am, David A. Sinck wrote:
> > 0) get cid from your provider
> > 1) get a cid + linux compatible modem
> > 2a) get one of the many cid apps  (see sourceforge)
> > 2b) roll your own with Device::Serial or direct ioctl calls
> > 3) YMMV
> >
> > For instance, I've got my roll-your-own program sending jabber
> > messages to me currently.  :-)
> 
> On a related topic, does anybody know if any of the cid programs for Linux 
> support logging the call time?  I'm trying to figure out a way to count up 
> the total number of minutes that my phone is in use (incoming and outgoing; 
> local and long distance) and Qwest won't give me that info without a 
> subpoena.  Now I know that my modem can get the CID info without answering 
> the phone, but can it figure out how long the phone is active?

Well I see that a modem will not dial out if you are talking on the
phone, so obviously it can tell that it's in use.  It tries to detect
dial tone, and says "no dial tone" if it doesn't hear it.  So maybe you
could find some tricky way to get it to try and dial, without actually
dialing, and see what sort of error message you get back; and thus
develop a method to poll the line to see when it's in use.  But I think
you will hear a "click" each time it does this.

As for caller ID, I'm currently using 2 methods.  One, is that I modified
mgetty/vgetty to call an external program with caller ID info.  (It
already logs this info, and can use CID to decide whether to answer the
phone or not, etc.)  Then I wrote an external program which given caller
ID info on its command-line, constructs an XML message, and sends it out
as a multicast packet.  That way any machine on the network can monitor
and display this information.  Then I wrote a very simple X client which
runs in the background and pops up a window when it receives one of these
packets.

There is another caller ID daemon that you will find on freshmeat, which
uses multicast or broadcast packets I think.  And it works with a Gnome
panel applet called gtele.  However you must dedicate a modem just for
this daemon.  I naturally wanted to do voicemail on the same line, so
modifying mgetty seems like a better choice to me.  But I need to submit
a patch some day to the author, and get some help with making it better,
because right now it's kindof slow - I don't see that packet until after
the second ring, whereas it should be after the first ring.

My second method is a QNX app called ACID (Audrey Caller ID).  It uses
the Audrey's built-in modem to get caller ID data and display it, and can
also act as a server so that other instances of ACID on other machines
can connect to it and display the data.  It can also log calls, use a
database to match names with numbers, play sounds when specific people
call, etc.  Those are good ideas.  But maybe the "suggested sound" 
should be specified as a URL in my XML message, and then the fancier
clients could get it from a web server and play it, instead of having to
deploy the sounds themselves on each client.  And the server would make
the decision about which sound to play.  I could even have the server use
festival to speak the name, create a sound file and make it available on
the web server, at the same time it sends out the packet, so that there
will always be a sound; and additionally there could be custom sounds for
specific friends.

I want to write a QNX app that receives my multicast packets, and maybe a
Mac one, and a KDE one, and modify gtele.  I would welcome help with
these things if any of you have expertise with such things.  I will try
to build the QNX client next, I think; I put together a development
system just for that purpose.

-- 
  _______                   Shawn T. Rutledge / KB7PWD  ecloud@bigfoot.com
 (_  | |_)                       http://ecloud.org  kb7pwd@kb7pwd.ampr.org
 __) | | \________________________________________________________________