Contact Information
Kijun Jeong

E-Mail: kj78@columbia.edu

Home Page: http://www.columbia.edu/~kj78(under construction)

Phone Number:

 

Yuan Liu

E-Mail: yl378@columbia.edu

Home Page: http://www.columbia.edu/~yl378

Phone Number:

 

Abstract

Program shows the interface of preference settings, and lets a user set them.  Preference controls how many times the internet telephone should ring, where the directory of calendar program is located, and who gets what kind of security level.  Then, it generates the output result according to their settings.

 

System Requirement

Unix with cm (Calendar Manager).  It has to have X-window capability.

MS-Windows (higher than 95) with MS-Outlook program (not presently working properly)

 

Installation Instruction

Have to ask Xiotao
 

Configuration

            N/A

Operation

In the interface of preference setting, there are 3 major sections.  The first section is "Reply to", and locates at the top of the interface window.  At the left side of it, there is a rectangular blank space where a user can choose number of rings from 1 to 10.  At the right side, there is a button that determines whether to forward the call or not.  If it turns into red, it means it is pushed, and program allows to forward the message.

The second section is "Calendar", and locates in the middle of the window.  There are one blank line and two buttons.  A user types the location of the calendar program, or can browse through directories by pushing the "Browse" button, and then, directory is set.  Also, a user can view the calendar by pushing "Calendar" button, which invokes and pops up the calendar program after a user sets the location of it.

The third section is the "priority", which locates at the bottom of the window.  There are two pull-down liists, one of which is "Group Address", and the other is "Privacy Level".  According to different privacy levels for different users, the program answers with different outputs to each person or group.  There are 4 different types of privacy levels, which are "private", "semipublic", "semiprivate", and "public".  "Private" shows both activity detail and callback time.  "Semiprivate" shows callback time only.  "Semipublic" shows activity detail only.  And, "Public" shows none of them.  As examples of group setting, there are "jdoe@bar.edu", or "bar.edu".  The former is individual address, and the later is group address.

 

Program Internal Operation

The function, schdeule::parser takes input from calendar file, and calculates the time for call-back, and shows lists of current activities of a receiver.  And, it returns the string, which will be looked up in the address book, and returns e-mail or telephone address, which will be forwarded.

We couldn't make this program work under Windows.  Major barrier was to read a outlook file, which is encrypted.  It first checks the OS platform.  Then, it checks whether preference setting allows answering to the call.  If the variable called "replyactive" is set to "on", it means code can process its function.

It takes schedule input by executing "cm_lookup".  "Cm_lookup" will return the appointment lists.  For example,

Appointments for Saturday January 15, 2000:

1) 7:00pm-10:00pm meeting at =Mudd Building=

2) 7:10pm-9:00pm Lunch at =Carlten Lounge=

Then, code parses the above list, and picks each appointment time of lists(time of “1)” and “2)” ).  And, it picks current time by executing "date".  Then, it begins to compare the current time with each appointment time.

It divides time duration (7:00pm - 10:00pm) into the beginning time and ending time in order to calculate whether current time falls into schedule time.  Because "date" execution returns like below, the code needs to parse it, and gets the time.

Sat Jan 15 20:40:32 EST 2000

The format of date is 24 hour; however, appointments times of cm_lookup have AM/PM format.  Therefore, those formats must be converted into 24-hour.  The strategy for conversion is as follows.  If time is 12:00AM, it is converted into 00:00.  And, if time has AM, then, code simply removes AM.  If time is 12:00PM, then, code simply removes PM.  For other PM, it adds up 12 hours.

As I mentioned before, code separates time duration into the beginning and ending time for the convenience of calculating the call-back time.  For example, if appointment time is 7:00pm-10:00pm, it saves 7 as "BHour", which is hour of the beginning time.  As such, it saves others as BMin, EHour, EMin, which are minutes of the beginning time, hour of the ending time, and minutes of the ending time, respectively.

Code calculates the time for callback as follows.  It reads each appointment times of  “cm_lookup”.  It checks first whether current time falls into appointment time.  If it does not, then, it sets variable, "avail" as "yes".  If it does, then, it sets variable, "CallBackTime" as same as ending time of the appointment time, and sets "avail" as "no".  Then, it goes to the next line, and do the same thing.  If the current time is also in between the beginning and ending time of the next appointment time, then it checks whether "CallBackTime", which was set before, is later than the ending time of the next appointment.  If the ending time of the next appointment is later than the previous "CallBackTime", then, code sets "CallBackTime" as the ending time of the next appointment.  The default "CallBackTime" is set as "00:00".

For the forwarding part, it returns string or strings, which are to be looked up in the address book.  The strategy for parsing the location of person's name is follows.  When a user writes down the appointment text into the cm, he or she put "=" in front and back of location or person's name. For example, if someone meets J.Doe at the Holiday Inn, then, the text in the cm should look like this,

Meeting with J.Doe =Holiday Inn=

Code looks up the first and last "=" symbol, and returns the words between them.  Because it takes NLP work of AI to figure out which word is a location or name, for now, code uses this strategy.

When printing out the result, it first checks the security level, then, decides which one to print out.  If the security level is private, it shows text and time.  Text means the detail of activity of appointments.  For example, it shows

SIP 2.0 480 Meeting J.Doe

Contact: j.doe@bar.edu

Retry-After: Mon, 9 Feb 1998 17:37:17 GMT.

Content-Length: 0

If the security level is semipublic, then, it shows text only, not time.  Reply after part will look like

Retry-After: *

"*" means that it cannot show time.

If the security level is semiprivate, it shows time only, not text.  Text will be marked as "*".  And, if it is public, then, it shows nothing.

 

Things not working

We could not make MS-Outlook working.  We had trouble with accessing file, which is located in the c:/windows/local setting/outlook/.  It is encrypted; therefore, we tried to use DCOM.    However, due to the technical difficulties, even if we investigate for the moderate duration of days, we could not find answer.

One of the items in the output result, the content length is set to "0" for now.  It always shows the same number.

 

Acknowledgements

We assume that the program is used in the Mountain time zone of US.  Therefore, the output result generated shows always "GMT" at the end of "Reply-After:”