Recently at WhichVoIP, we have been writing detailed guides for on-premise based PBX phone systems so that businesses or tech hobbyists can get up and running quickly. Building a system in house can save considerable amounts of money even when compared to most hosted services.
Generally speaking, the core components of these services revolve around voice and supplementary elements like IVR menus, voicemail, call queues and so on. Yet some, with a little extra time, provide additional features like those commonly considered part of the Unified Communications (UC) family, for example instant messaging and presence. It is these features that we are going to focus on in this blog post, as enhancements to the core Asterisk software.
One such Asterisk based system, and one that we will be focusing on today is the Elastix PBX which is a powerful open-source PBX that has the ability to be expanded with a richer UC feature set using a plugin known as OpenFire.
What is OpenFire?
From a technical standpoint, OpenFire serves as an XMPP (aka Jabber) server. Casually, this means it provides the capability to process text-based data for instant messaging services and presence detection (plus some other valuable features) alongside the VoIP services accommodated by an Asterisk based PBX.
The system is developed under the GNU license and has been adapted to fit a handful of systems built under the same model, for example Elastix. This means development is at the mercy of the user community – though a double-edged sword in some respect, the benefits are quite substantial in this particular scenario.
The software is produced as an open source platform and is free to use as is all (well, most) supporting software. The community is quite large meaning that bugs are quickly rectified and documentation is readily available for most applications. The only problem lies in the fact that many tutorials that are written assume the implementer has experience with these systems; as such, we will go through the entire process by filling in the blanks that most others miss.
Note: this tutorial assumes you have followed our Elastix guide – after all, OpenFire is a plugin for Asterisk systems such as Elastix.
Sure, guides are available for installing the application but a presumption of technical experience with these systems is implied. We are going to assume this is a complex casserole and your experience is limited to the microwave.
The first step is to create a database manually. Worry not as this is not as bad as it sounds.
You can do this one of two ways. One such way is to log into Elastix with the credentials you created during the installation, as documented in our Elastix guide. Another way to accomplish this task is to use a terminal client like PuTTy to access the software directly.
Figure 1: PuTTy
Elastix is accessible using Secure Shell (SSH), a secure protocol for accessing a shell session meaning you can access the command line for the Elastix software. Type the IP address of the Elastix machine, as seen in figure 1 above, when connected to the network where the machine resides and click the Open button.
[root@localhost ~]# mysql -u root –p
The command seen above (following the ‘#’) allows you to login to MySQL with the username root. The password created during the Elastix install must be entered at the next prompt.
Figure 2: Creating a MySQL Database
After a successful login, you will simply see the mysql> prompt as per figure 2. Enter the command exactly as seen in figure 2, including the semi-colon, and the line beginning with Query will appear followed by another mysql> prompt in the next line. This means you are done with the database creation. Not so bad, right?
After completing this step, login to the Elastix console with your web browser of choice. On the top most menu bar, click the tab that reads IM. A message should a appear that states the OpenFire service is not active so click the blue link to begin configuring the application and a screen similar to the one in figure 3 will appear.
Figure 3: Select a Language during OpenFire Install
The next steps should be completed as follows:
- Choose a Language – A language you speak fluently will be easiest.
- Server Settings – If you used the default settings during the install – meaning you did not add a domain – your system name should appear as localhost.localdomain. If you used a domain, it should read localhost.yourdomain where yourdomain matches the name of your company domain.
- Database Settings – Here is where the command line step above for the MySQL database comes into play. Pick Standard Database Connection and continue to the next step.
Figure 4: OpenFire Database Settings for a Standard Connection
- Database Settings – Standard Connection – Notice the line that reads ‘Database URL’ in figure 4. Where it says localhost, this replaces what will initially read [host-name] or you will use the unique name of your system if one was provided during installation. The part reading openfire will replace [database-name] unless you used a different name for the database during the prior steps.
- Profile Settings – For the sake of this tutorial, select the Default. Alternatively, if you are confident enough to integrate Active Directory, pick the Directory Server (LDAP) setting and plugin the hostname for your domain controller (i.e. the server where active directory resides.)
- Administrator Account – Input an email from the FQDN you have used during the process or a dummy account if nothing is configured. Either way, the user name will be admin and the password will be the string provided during this step.
At this point, you have completed configuration of the server. If you used Active Directory, the users in your system should populate and you will be able to assign each an account. If not, you will need to make user profiles for everyone manually under the Users/Groups tab by using the option in the sidebar that reads Create New User.
In order to use OpenFire, you need to install Spark so you can take advantage of the UC features, such as instant messaging and presence. Download the file and install the application, preferably to a default location. The Spark splash screen can be seen in figure 5.
Figure: 5 The Spark Client
This is pretty straightforward – login by using a name and password combination created in the console for a user of choice. Other people on the system may be found after logging in by clicking the Contacts tab at the top of the window and Add Contact. Type the requested user name into the User Name field then hit the Add button. After a request is sent, a pending mark will appear next to the user name until the request has been accepted on the other user’s end.
By selecting the arrow next to your user name, the presence of your account is modifiable – notice my presence is set to Online indicating I am available for conversation. Other user names appear under your account name allowing a conversation to be initiated or continued from a previous session as seen in figure 6.
Figure 6: Logged Into Spark
After clicking on the name of the user, whether active or inactive, several options appear. The text box allows you to send a text based message. Other options can be selected from icons at the top of the window including a multi-user conference, file transfer, capturing a screenshot, reviewing conversation history and establishing an encrypted connection.
Final Thoughts on OpenFire
By combining the power of Elastix and OpenFire, a new world of communication is unlocked. This can augment a communication system with a very functional UC solution. For those seeking to implement an internal solution, Elastix combined with OpenFire is a powerful service brandishing even more potential than we covered in this particular blog. As you can see, it really isn’t that difficult to setup either!
Feel free to ask questions and we will assist in any way we can.