C-Kermit UNIX, VMS, etc:
http://www.columbia.edu/kermit/ckermit.html
and Kermit 95 for Windows 9x/NT/2000/XP:
http://www.columbia.edu/kermit/k95.html
can dial beepers and can send both numeric pages and alphanumeric pages. Pagers can be dialed not only through a modem that is connected to a serial port on the computer where Kermit is running, but also through modems mounted on TCP/IP "reverse terminal servers".


Beepers and numeric pagers are dialed using a special form of the DIAL command that does not require the call to be answered with a carrier signal. Example:
  set modem hangup-method modem-command ; (if necessary)
  set modem type usrobotics  ; Substitute actual modem type
  set line /dev/ttyS0        ; Substitute actual device name
  set speed 2400             ; Try other speeds if you want
  pdial 7654321@             ; Substitute actual phone number
  clear dial-status
  hangup
(this dials a beeper), or to dial a numeric pager and leave a message, as above but:
  pdial 7654321@123456#

The SET MODEM HANGUP-METHOD tells Kermit how to make your modem hang up the phone call. In C-Kermit 7.0 and earlier, the default hangup method is MODEM-COMMAND, meaning "pause 1 sec, send +++, pause one sec, send ATH0 and carriage return". Starting with C-Kermit 8.0, the default method is RS232-SIGNAL, meaning the computer should turn off the port's DTR (Data Terminal Ready) signal for half a second. If one of these doesn't work, try the other.

If your modem does not support the "wait for quiet answer" feature (@), you can use commas to force a pause:

  pdial 7654321,,,,123456#

However, in this case, the modem will say OK even if the line is busy, and therefore Kermit has no way of knowing if the call succeeded or failed (and therefore automatic redialing in case of failure will not work).

In case you're not familiar with Kermit's automation features, here's how to turn the above procedure into a script that you can run with a single command from the shell prompt. CD to some directory that's in your PATH and that you have write access to and create a file called ring (or any other name you wish) that looks something like this:

  #!/usr/local/bin/kermit +
  if ( < 2 \v(argc) ) exit 1 Usage: \%0: phone-number [ message ]
  set modem hangup-method modem-command
  set modem type usrobotics
  set line /dev/ttyS0
  set speed 2400
  pdial \%1@\%2
  if fail exit 1
  exit 0

\%1 and \%2 are the command-line parameters. The top line must specify the path of the Kermit executable.

Now give the file execute permission:

  chmod +x ring

Now you can use it to dial any number, just as if it were a regular Unix command:

  ring 7654321            (Just dials the number)
  ring 7654321 1234567    (Dials the number and then leaves a message)

Test numeric paging applications thoroughly. They work only as well as your modem, and most modems were not designed with paging in mind. For a fully elaborated numeric paging script, CLICK HERE.


Alphanumeric pages can be sent in various ways:

  1. By making a voice call to your paging service and dictating the message.
  2. By sending email to your paging service.
  3. By dialing your paging service with a modem and carrying on an interactive dialog.
  4. By dialing your paging service and executing a standardized error checking and correcting protocol to send the page.
Option (1) is not well suited to automation; option (2) is little help if your network is down (which might be why you wanted to send the page in the first place); the problem with option (3) is that the format and sequencing of the dialog is not standardized, so different scripts are needed at different times with different services.

Option (4) is implemented by a C-Kermit script that implements the Telocator Alphanumeric Protocol (TAP) of the Personal Communications Industry Association, also known as IXO, a standardized protocol that performs error detection and correction to ensure the page is sent correctly. As with other kinds of modem calls, automatic redialing is supported in the case of busy signals, etc, and the dialing directory may be used -- allowing the same pager number to be dialed from different areas or countries without having to enter different phone numbers for each calling location.

For Alpha pages, Kermit's script language allows the page to be retried (and redialed if necessary) until it is acknowledged, to ensure the page has been sent, and sent correctly. Pages may be sent "by hand" or from an automated or scheduled procedure such as a cron job in UNIX, a batch job in VMS, or by any sort of shell, DCL, or other script, for example one that monitors the system, files, applications, or network, and needs to notify the appropriate personnel in case a fault or other significant event is detected.

To see the TAP/IXO alpha paging script, CLICK HERE.

By the way, it is important to note that most paging services act as if they were designed to receive calls only from 1200-bps modems, such as the Hayes 1200. Many of them seem not to work (communicate) at all when called from a modern error-correcting, data-compressing modem; the initial negotations confuse them hopelessly. Therefore, when using Kermit to send pages, you must tell Kermit what kind of modem you actually have so it knows how to give it the "error-correction off" and "compression off" commands prior to placing the call. In other words, if you have (say) a Megahertz Xjack 56K modem, don't tell Kermit you have a Hayes 1200 -- tell it what you really have.

And be sure to follow the paging service's instructions as to speed and parity.

Other Kermit programs, such as MS-DOS Kermit for DOS and Windows 3.x, can be scripted to send beeps or numeric pages; see the Kermit FAQ, item 16, for details.

Links:


Kermit and Pagers / Columbia University / kermit@columbia.edu / 2 April 2002