an HTTP agent for placing and receiving telephone calls

From: Dan Connolly (
Date: Sat Jan 13 2001 - 22:48:39 PST

The lack of tel: and irc: support in the web has itched
me for the longest time; after writing/whining about it
a bit...

  Real-Time Resources in the Web
  Sat, 13 Jan 2001 17:05:51 GMT

I finally scratched the itch with some hacking...


an HTTP agent for placing and receiving
telephone calls

This telagent integrates telephones as resources in the web, using
the tel: scheme; see Real-Time Resources in the Web for details; the
basic idea is:

  1.your web user agent should handle a link to W3C's MIT office
     phone (NS) kinda like a mailbox link: offer to dial to it.
  2.caller-id should make the phone a little more like email: you
     can tell who it's from before you answer it, and you can answer
     it any time later with one click.

Start it going ala:

python /dev/ttyS3 491-0501 8501 ~/.phoneLog >~/.phoneHTTPlog

and it will

     open a connection to the modem (/dev/ttyS3) and log caller-id
     listen on port 8501 for HTTP requests:
         GET / shows a log of the caller-id info with
              incoming numbers linked to their tel: addresses for
              easy call-back
              additional info about the area code
         GET tel:... shows an offer (a form) to dial to that phone;
         for north american numbers, it shows timezone info and,
         based on that, the current time there.
         POST /dialer with dialAs and target args dials the phone
         (and writes a log entry)
         POST /dialer with an empty dialAs hangs up the phone


     let incoming calls spawn new windows:
         turn incoming caller-id info into HTTP POST events that
         you can subscribe to (ala KnowNow)
         an HTTP agent that responds to POST requests by
         bringing up web pages on the desktop.
     along with "dial this number" requests, support "... and start
     recording the resulting conversation"; in general, handle
     follow-up after dialing
     load (some of) the caller-id log from disk on start-up, and
     purge some of it from memory after a while.


Netscape, unfortunately, doesn't support proxying tel:... URIs; in
fact, it doesn't recognize them as absolute URIs. You can, however,
(ab)use the urn: proxy support; try this automatic proxy
configuration for urn:tel: URIs, and then try W3C's MIT office
phone, rigged with netscape work-around.

My tel: handler is limited to localhost (; I haven't figured
out a good way to get the absolute URI of the dialer to the right
parts of the code.

There's an abstract TelnumNav class for figuring out what digits to
call to get from this phone to the phone identified by some URI; the
subclass I've implemented is the rules for dialing from 913 in
Kansas (which is pretty much like any place else in the U.S., except
for 816 numbers).

Architecture and Requirements

     Sam Rushing's cooperative multi-tasking server architecture

     I just downloaded medusa-src-20000601.tar.gz and
     unpacked it and then used

     PYTHONPATH=/medusa's/parent/dir python ...

     to help python find it

Acknowledgements and References

conversation with David Boles... JWZ's caller-id thingy...

found cid 17Dec2000; it's a client/server caller-id thingy in python

     URLs for Telephone Calls, A. Vaha-Sipila , April 2000
     tel: in An Index of WWW Addressing Schemes -- Extended AT Command Sets
     Fri, 31 Jul 1998 21:06:12 GMT
     Zoom Telephonics: Dualmode Zoom/FaxModems 56K, 56Kv,
     and 56Kx
     Thu, 01 Jun 2000 12:31:55 GMT

Dan Connolly
$Revision: 1.2 $ of $Date: 2001/01/14 06:38:53 $ by $Author: connolly $

-- 2001/telagent/
Thu, 01 Jan 1970 00:00:00 GMT

Dan Connolly, W3C

This archive was generated by hypermail 2b29 : Fri Apr 27 2001 - 23:18:39 PDT