The CTI Meteor is a small unit that connects to the serial port of a PC and notifies the computer of incoming caller ID information, as well as other details such as whether the phone is off-hook, and whether any DTMF digits have been pressed.
In this article we will demonstrate how you can xPL-enable your Meteor, using the xPL Meteor Service, a free application that installs as a Windows service and connects to your Meteor. It then reports all data sent by the Meteor as xPL messages, conforming to the cid.meteor schema. You can then have a variety of xPL-enabled applications respond to caller ID information.
What You Need
- A PC running Windows NT 4.0, Windows 2000, Windows XP or Windows Server 2003
- A CTI Meteor
- xPLHal, xPLHal manager and an xPL Hub installed and configured as described in the HowTo guide Get Started on Windows
One or more of the following:
- SliMP3 or Squeezebox using SlimServer version 5.2 or greater, optionally with xPL support enabled as described in the HowTo guide Enable xPL support in SlimServer.
- Note: If you do not wish to enable xPL support on your SlimServer, an alternative method is included in the script below which uses the SlimServer HTTP interface. This method can also be used with other devices that do not natively support xPL, but have an HTTP interface.
- A networked TiVo with xPL OSD support enabled as described in the HowTo guide Enable xPL on screen display support on a networked TiVo.
Downloading the Software
Download the xPL Meteor service from http://johnb.xplproject.org.uk/downloads/xplmeteor/xplmeteor.zip (189KB)
Installing and Configuring the Software
Note: You should ensure that xPLHal is started before beginning the installation of the xPL Meteor service, as you will use xPLHal to configure the service.
You should also make sure that any other software that might be using the Meteor is stopped, as only one application may open the serial port at a time. The Meteor runs at 1200 baud, 8-N-1.
- Unzip the contents of the file xplmeteor.zip into a temporary directory.
- In Windows Explorer, double click on the file xplMeteorSetup.msi to begin the installation.
- Follow the on-screen instructions to complete the installation.
- Go into Control Panel -> Administrative Tools -> Services.
- Make sure the xPL Meteor service is listed, and start it if it is not running.
- Start the xPLHal Manager, expand xPL Devices and click on the "Awaiting Configuration" node.
- You should see the Meteor service listed as johnb-meteor.<computername>1.
- Double-click on the Meteor to open it's configuration dialog.
- From the list of configurable items, select "newconf", and enter the name that you want to use to identify the Meteor.
- Again from the list of configurable items, select "comport".
- Enter the number of the serial port to which the Meteor is connected, e.g. 1, 2, 3, etc.
- Click OK to close the configuration dialog.
- Click on the "xPL Devices" node.
- The Meteor should appear, complete with the name that you assigned to it. The red LED on your Meteor should now be illuminated, indicating that the xPL Meteor service has established communications with the Meteor.
- If it is not illuminated, try restarting the xPL Meteor service in Control Panel.
Displaying Caller ID on a SliMP3, TiVo etc
Now your Meteor is transmitting all incoming caller ID information as an xPL message, it's time to do something useful with it:
- Start the xPLHal Manager and click on the Scripts node.
- You should see a script listed for your recently installed xPL Meteor service. Double-click on it to open the Script Editor.
- The script should be empty, apart from a comment line at the top containing the name of the xPL device to which the script applies (i.e. your Meteor).
- Enter the following code into the Script Editor, observing the following two modifications:
- Change the value of <instance> to be the name that you assigned to your Meteor.
- Change the IP address specified for SLIMP3_URL to the IP address or hostname of your SlimServer.
Sub johnb_meteor_<instance>_trigger(XplMsg) const SLIMP3_URL = "http://192.168.1.4:9000/" Dim CallerName callerName = "" Select Case ucase(xpl.GetParam(XplMsg,"calltype",True)) Case "INBOUND" If xpl.GetParam(XplMsg,"ccs",True) = "cid" Then CallerName = xpl.GetParam(XplMsg,"phone",True) Elseif xpl.GetParam(XplMsg,"ccs",True) = "nocid" Then ' Caller ID info not available if xpl.GetParam(XplMsg,"rnn",True) = "withheld" Then callerName = "Number Withheld" Else callerName = "Number Unavailable" End If End If If Not callerName = "" Then ' Display the caller's name/number on the SliMP3, using the SlimServer HTTP interface ' The line below should be removed if xPL support is enabled in SlimServer call sys.GetHTTP(SLIMP3_URL & "?p0=display&p1=Incoming Call&p2=" & callerName & "&p3=5",8192) ' Display the caller details on any on-screen displays, e.g. Tivo or xPL enabled SlimServer call xpl.SendMsg("","","osd.basic","text=Incoming Call\n" & callerName) ' Announce the caller's number to any text-to-speech applications on the network call xpl.SendMsg("","","tts.basic","speech=" & callerName) End If End Select End Sub
- Click File -> Exit, and when prompted to save changes, click Yes.
- Right click on the Scripts folder and select Reload Scripts.
- When you receive an incoming call, you should see the words "Incoming call" appear on the first line of the SliMP3 and/or TiVo, with the caller's number on the second line. This will remain for 5 seconds.
- If you have any xPL Text-to-speech apps running, they will speak the phone number.
With a bit of knowledge of VBScript, you could easily expand the above routine to query a database to retrieve the caller's name rather than just their number, and we may in fact cover this topic in a future article.
In this article we have shown you how you can distribute caller ID from a single Meteor to a variety of xPL-enabled devices.
xPL is an open protocol, and many of the xPL applications, including all the ones described in this article, are available free of charge and released under the terms of the GNU General Public License.
xPLHal and it's associated applications are being actively developed, so if there's something you'd like xPLHal to be able to do, or you have a question about how to perform a particular task, just ask the development team by posting a message to the mailing list enabled xPL forums