This document describes the specifics of the Jukebox IAP. For a general description of an IAP, refer iap.html.
The Jukebox IAP is a proxy for the Ninja Jukebox Service. The Ninja Jukebox service provides a SecureRMI interface for accessing mp3 songs in a repository. The Jukebox IAP was built as a exercise in extending services to Iceberg end-points. The Ninja Jukebox service is a part of Ninja release 1.5 (not supported anymore). For test purposes, you need not run the Ninja Jukebox Service -- a local MP3 file can be used (described below).
The specifics of the Jukebox_Iap are as follows:
The files
Running the Jukebox IAP
The Jukebox IAP runs with the switch testMode set to true by default and in this mode, plays a default hardcoded mp3 file always (this mp3 file needs to be present at the APC service -- a hack for demo/testing purposes). To make it run in its original intended mode, you have to set the testMode variable to false and recompile. Of course, this would require you to have a Jukebox service running.
The Jukebox IAP operates as follows. It fetches the list of songs from the Jukebox service and writes this information onto a file. This file assigns each song a song-number. This list is intended to be given to the users. The song-number is used by the users to interactively pull songs, by keying in the song-number using DTMF tones (DTMF is not implemented this ICEBERG release -- this requires modification of the IAP and Call-Agent state-machine. Refer to ICEBERG-v0 code to see how DTMF works in the Jukebox IAP and other IAPs).
The Jukebox IAP needs to be run with the following configuration parameter to fetch the list of songs and write onto a file:
uiCfgFile = music.directory.host.ip-address -w filename.txt
This fetches the list of songs from the Jukebox service at the given music directory host and writes onto the given file. (Note: you do not need to do this if you are just testing).
The Jukebox IAP needs to be run with the following configuration parameter to run normally:
uiCfgFile = music.directory.host.ip-address -r filename.txt
On an incoming call, the Jukebox_Iap starts playing the first song. Since there is no DTMF implemented in this version of ICEBERG, the song being played cannot be changed by the user at the other end of the communication session. This is an obvious area for extension.
The Jukebox IAP is run as follows:
java iceberg1.nvsme.Main jukebox.cfg
An example configuration file is demo1-jukebox.cfg. Be sure to change the "smSpec" and "uiCfgFile" parameters. Note: the "uiCfgFile" is not really a file -- its just a configuration string -- the name comes from the original implementation of the IPPhone IAP.
Naming service and preference registry entries
Since the Jukebox IAP has an identity of its own (that is, users may try to reach the Jukebox IAP as an entity), it needs a naming service entry and preference registry entry.
The naming service entry is of the form:
dn: uid=jukebox, l3=cs, l2=berkeley, l1=edu, type=uniq uid: jukebox iPOPUrl: demo4.iceberg objectClass: uidobj
You can also add a separate entry for any of the other name-spaces. For instance, the Jukebox IAP can be assigned a cell-phone number in the example cell-phone number space (see cpnums.demo) by adding the entry:
dn: cpnum=529, type=gsm aliasedObjectName: "uid=jukebox, l3=cs, l2=berkeley, l1=edu, type=uniq" objectClass: alias
For information on adding naming service entries, refer the naming service documentation).
Preference profile
To add a preference profile for the mediamanager IAP, use the preference manager. The profile for this could be very simple with only one "outgoing interface" and a single rule specifying that to be the default. See the preference manager documentation for details on adding preference profiles.