Date: December 3, 1998

Group number and name: Group 1, G1

Team members: Craig Mills and Roman Lobkovsky

Task number and name: Team 10, Fax to email gateway

 

  1. What you did since the second report:

 

We now have a working skeleton for our server, with easily modifiable components. Since most of the functionality of our program involves interfacing with other teams, right now most of the components are dummy functions. We have successfully integrated the directory services interface and the desktop signaling interface into our program, although the signaling function will be changed slightly in a few days, and the directory services does not yet have some functionality that we need (i.e., some fields in the database, and some functions to retrieve those fields). The interfaces to the other teams are also coming along. We have finalized the details of the data flow for our system, which is very similar for all application teams (e.g., voice mail, audio conferencing, etc.).What will actually happen is the services will have a slightly different extension than regular users. Services will have extension numbers of the form "x#", where x is a number, and users will have 5-digit extension numbers. When the signaling team receives a services extension number, they will notify the gateway that that particular connection will need to receive additional touch-tones, and pass them on. The gateway will then detect these tones, give them to the signaling server, which will in turn pass them to us. The connection to the signaling team is TCP, because we need reliability in detecting touch-tones. We also arranged to have a TCP connection to the gateway, because the Dialogic card will receive the fax and store it in a file on the local host (i.e., vada), and we will need to retrieve the file. We use the directory services to look up email addresses based on the extension number we get from the user (passed to us by the signaling server from the gateway). The system is actually flexible enough to create a voice menu system for the user, because we have an audio connection to the user and a way to get his/her button presses, and if needed, we can perform multiple lookups in the directory.

 

2. Problems: What problems did you run into?

 

The largest problem that we have had is the lack of up to date documentation. Some of the interfaces have changed several times and the documentation is lagging behind the code. This had made it difficult to replace our dummy function calls with the actual calls. The development of an application that uses infrastructure that is in constant flux is very difficult. The one substantial technical problem remaining is to enable to the gateway group to switch the channel from a voice connection to a fax connection. According to a cursory investigation of the documentation it is possible. We have been working closely with the gateway team to address this issue. We have offered to help the gateway team with the code needed to switch from voice to fax, but they do not want us to modify their code. Therefore we have looked through the documentation and plan to continue to search the documentation for the gateway team. One of the services that we use is directory services. We try to look up a users email address by their extension number. However the extension-to-email function has not yet materialized. This has not been a priority of the directory services, but now that the rest of their service is working it will be trivial to add. The final problem we have had is the text to speech conversion. This is needed to send an audio greeting to the sender of the fax. This will be used to give instructions and feedback to the sender. This way we can create custom menus and query the user about their choice of recipient.

 

3. What you learnt: What did you learn by working on the project?

 

The most educational part of the project thus far has been the experience in trying to organize the interactions of the different teams. We have had many meetings with the teams providing the foundation for the system in order to determine which services they can supply and which services we need. For example we set up a specific method of transferring the fax and touch-tone digits from the gateway to us, but several other teams also needed these digits and went through the signaling team to get them. We therefore had to redo our interaction with the gateway team.

 

4. What would you do differently next time?

 

We would interact with the other application teams more. So far we have assumed that since our application just runs on top of the system, the only teams we needed to talk to were the lower-level teams (1-4). It turned out that many of the services provided by those teams are used by multiple applications, so it is a lot more convenient and cleaner to have those applications use the system in a consistent manner. Instead of each application team negotiating with the lower-level teams separately, we should have had a collective bargaining session earlier, where we decided what common services we would need. We would also ask the management team to set up more meetings involving most (if not all) of the group.

 

5. Interface that your team will provide to other teams or use:

 

We do not provide any interfaces to any other teams. We call the signaling team's interface to setup the calls, get touch tones from the users (which the signaling team gets from the gateway), and tear down the calls; the gateway's interface to get the fax from them and possibly tell them when to start receiving the fax from the user; the data exchange team's interface to send the voice greeting and prompts to the user; and the directory services team's interface to translate the extension number to a real name and an email (for confirmation and for the destination); the management team's interface to let them log our actions or provide authorization services. We might also use the billing team's interface if they devise a way to provide meaningful billing for our service.

 

6. What you need from the course staff:

 

We have gotten everything we need from the course staff already.

 

7. References:

 

file://babbage.csuglab.cornell.edu/amd/babbage/a/home/cs519g1/reports/*

http://www.programatica.com/cgi6.html

http://www.w3.org/PICS/refcode/Parser

http://support.dialogic.com/Documentation/winnt/faxapiwn.pdf