Overview
The Jabber module for OpenACS can track any entity presence state (i.e. online or offline) from most of the Big Instant Messaging Systems (AIM , MSN , Yahoo , ICQ and Jabber). It is able to interact with your local Jabber Server and it can record Chat’s hosted by the Conference Component of your local Jabber Server.
The tracking of presence :
The Aolserver log’s into your precreated account at your local Jabber Server , it acts like a usual Jabber Client so it can connect it self to any IM System your Jabber Server is able to connect to. When a user enters a name from an entity from any supported IM System (say name: ‘Fred123’ IM System: ‘AIM’ ), this information is inserted into the table jb_screens (Oacs) and into the account information (in jabber terms ‘roster’) (the account the Aolserver uses ) at your local Jabber Server.
Once this information is in the Aolserver’s accounts roster , the Jabber Server will push any presence state changes ,from this entity , to the Aolserver. Who then writes the new state into the state column of the jb_screens table where the screen column has the value ‘Fred123’ and the service column has the value ‘AIM’. The table jb_screens holds all information about a entity , the screen(name) the service the screen belongs to , the current online state (and possibly a away message and a resource). If any application has an interest in the online state of any entity (like the IM Addressbook) this application has to reefer to the jb_screens table .In the www/image subdirectory their are several icons for displaying different online states and IM Systems . In the jabber-procs.tcl library file their are some functions that return a colour for a passed in online state (it would be help full for users if the different states are display system wide in the same colour ).
As well you are able to send IM Messages to any entity of any IM System your Jabber Server supports, but you can’t receive any Messages. For end users it can be used like a SMS web interfaces , the OpenACS could use it in it’s alert system. You find all pages related to the tracking of presence in the www/jabber directory.
The recording of Chat’s:
The Aolserver can enter any Conference Room from the Conference Module of your local Jabber Server, so it is able to receive any Messages send to a Conference Room once it is asked to record this Conference Room. The Conferences are stored in three tables jb_conference_protocols , this table holds any Message from any Conference Room , in addition to the Message text any line reefers to the table jb_conference_rooms ,via the room_id (which holds the room name the description of what discussions this room is for etc. ), the table jb_conference_thraeds ,via the thread_id (which holds the name of the currently discussed topic), and the users table via the user_id (the user_id is figured out with the help of the jid, the possibility to query the conference module for the real jid’s of conference members isn’t a standard so make sure you use the version that comes with the package). You find all tcl/adp pages used for conferencing in the www/jabber/conferencing subdirectory. Later access is done by relations , the jb_conferens_room is defined as an Object (acs 4.x) so a room can (has to) be related to a Group (Groups for conferencing can be created and administrated in the admin section of the jabber module www/jabber/admin/conferencing). On the Conference index page a list of all Groups the user is a member of are displayed, which link them to an overview of all Room’ including all Topics that belong to this Group which themselves link the user to read a Topic enter an currently active Room or to Restart an inactive Room. On the index page their is an overview with all new Topics (since last visit) displayed.
Conferencing for Admins:
On the www/jabber/admin/conference.adp page you are able to define Group’s , this will Groups be able to use the Conferencing facility of the Jabber module. You can define a new Group by entering a name in the Group Name Field a pressing the create Button. Once a Group is created it will show up in the list of existing Conference Group’s below. The Group names link you to a page where you can add and remove Users or whole Groups to the one you have just created. At the bottom of the page you can search the System for Users or Groups , the search results will be displayed below your search entry . Clicking on one of the search results will add this User/Group to your Conference Group. At the top of the Page two lists are displayed the first shows all Users (their names) of the Conference Group , the second shows all Groups of your Conference Group (their names). Behind every Name you have a Link to remove this User/Group from your Conference Group.
You are able to add a hole Group A to your Group Conf , all users who are members of Group A will then be members of Group Conf , even if members from Group A wont show up in the Users List of Group Conf.
Conferencing for Users:
If you want to use the Conferencing facility you should have a Jabber account already and you should (but you don’t have to ) be online with the Enigma Jabber Client (or any other Jabber Client that supports Conferencing , the Jabber Applet doesn’t support Conferencing ). Go to the page /jabber/conferencing you will see a list displaying all Conference Groups you are a member of, below you will see a List displaying all new Topics that have been discussed since you last visited this System. Clicking on one of the read links behind a new topic will bring you directly to the page that show’s the whole discussion on this Topic. If you follow one of the Group Name Links ,at the top, you get to the main Page of this Group. On the Groups main Page You find two Links one to Create a new Top level Room , a second to Invite other Users to a Conference Room, below you find a structure displaying all Rooms of this Group with all Topics that have been discussed. Behind every room you find a Link ,in case other users are currently in this Room , saying Enter. If you are online with Enigma you enter this Room when you Click on the Enter Link. If no one is currently in this Room the Link will be named Restart, clicking this link will restart the Room and you will enter it. In case you restarted a Room you can now go to the Invite page (just follow the Link ‘Invite other Users to a Room’ at the top of the page ), here you find a Selection Box with other Users (only those who are currently online will be displayed) . Select the once you want to invite (in case you want to invite more then User , hold the ‘Ctrl’ or ‘Strg’ – Key down while making your selections with the Mouse ) , below you find a Selection Box with all active Rooms including the one you have just restated , select it. In the two Text Fields below enter some words that let the Users your going to Invite know why your inviting them and what you want to discuss. Now you can press the ‘Invite’ Button ,every User o you selected above will be asked to come to the Room you selected.
That means after you have entered contact information into the IM Addressbook (like Firstname: ‘Fred’ Name: ‘Example’ AIM screen: ‘Fred123’ ) the Jabber module tracks the presence of the AIM entity ‘Fred123’ . From now on ,when ever you call one of the Jabber Pages , the online state of your contact is displayed to you.