Telephony

Enable Instant Messaging (XMPP) Service on ScopTEL PBX

We will look at how to setup an Instant Messaging server on ScopTEL PBX using a free and open source XMPP based IM server.

Openfire is a real time collaboration (RTC) server dual-licensed under the Open Source GPL and commercially. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). Openfire offers rock-solid security and performance.

 

Install Openfire package

First we need to login as administrator into the ScopTEL PBX GUI and go on Server -> Packages Manager -> Version Informations. You must verify that the Openfire package is installed. If not, you have to click on the Install link displayed on the Status column.

Install Openfire from Packages Manager

Install Openfire from Packages Manager

 

Enable Instant Messaging integration

Now that Openfire package is installed, you must go to Telephony -> Configurations -> Modules and enable the Instant Messaging/Presence Integration option then click on the Save button.

Enable Instant Messaging module

Enable Instant Messaging module

 

You must now go to Telephony -> Configuration -> Instant Messaging menu. In the “Server Name” and “SIP Server” sections, fill in the domain for your local environment and click Save.

Instant Messaging options

Instant Messaging options

 

The next step is to enable the Instant Messaging service in the automatic boot process, you must go to Telephony -> General -> Services Status, click on the “Edit Service” button and check the service.

Enable Instant Messaging service

Enable Instant Messaging service

 

 

Create Instant Messaging extensions

Now let’s us create a new account for XMPP.  Instant Messaging account are configured on Telephony -> Extensions -> Phones. Create or edit an existing extensions and go on the User Options tab and check the “Enable Instant Messaging” option.

Enable Instant Messaging on Extensions (Phones)

Enable Instant Messaging on Extensions (Phones)

 

Go on the Instant Messaging tab, fill in the “Username” and “Password” and click on “Save“.

Instant Messaging authentication

Instant Messaging authentication

 

[note color=#ddd]Note:  You must  issue a Commit in Telephony GUI after configuration modification. You must also verify that the Instant Messaging service is running in order to update Openfire settings and users during the Commit[/note]

 

Open Ports in your Firewall

If you have a Firewall in place you’ll need to open some ports before we can start configuring Openfire through its web interface. Openfire uses ports 5222 and 7777  for client connections and file transfer proxy respectively.  If you use integrated ScopServ Firewall like I do, then go on Network -> Firewall and add Inbound rules for theses port.

 

DNS configuration in Jabber/XMPP

XMPP is a decentralized network, and relies heavily on DNS to achieve this. Any Jabber/XMPP user is identified by their address (JID) in the form ‘username@domain’, where the domain identifies the server that their account exists on.

In order for clients to connect and log in, they need to find the IP address of the server associated with their JID. Similarly remote servers which need to forward a message to a user also need to contact that user’s server to pass that message on.

This is achieved by looking up the domain in DNS, and most domains will need no extra configuration for XMPP. There are cases however that you will want or need to add/update your DNS records – this page explains when, why and how.

http://prosody.im/doc/dns

 

You can now log using your IM client

We highly recommend to use ScopCOMM client but you can use any IM client that supports XMPP to sign up with your Instant Messaging server.

Read More

How to implement Skill Based Routing (ACD) on ScopTEL PBX

Skills Based Routing Definition

The following is the Wikipedia definition for Skills Based Routing:

[note color=#ddd]“Skills based routing (SBR) is a call assignment strategy used in call centers to assign incoming calls to the most suitable agent, rather than simply choosing the next available agent. It is an enhancement to the Automatic Call Distributor systems (and IVR systems) found in most call centers. The need for skills based routing has arisen as call centers have become larger and dealt with a wider variety of call types.”[/note]

 

Best way to describe Skill Based Routing is with an example.  If you have 3 agents in a call group each having a different skill level in their certain field :

  • Agent 1 best knows Windows and only speak French
  • Agent 2 best knows Linux and speak both English and French
  • Agent 3 best knows MacOSX speak French and moderate English

But each person may know a bit about the other skills. Each Agent has a weight rating:

[table style=”3″]

Agent Windows Linux MacOSX French English
Agent 1 100 50 25 100 0
Agent 2 25 100 50 100 100
Agent 3 50 25 100 100 50

[/table]

Example:

4 calls come, 2 asking for Windows support, one for Mac Support and one for Linux support
Agent 1 was free gets the first windows call
Agent 2 was free gets the second windows call
Agent 3 was free get the first Mac call
Caller 4 waits until an agent gets free for the system to reevaluate the skill table

Advantages of this method over a traditional Queue (ACD ):

  • Do not need to create a Queue for each language, department, etc (skills)
  • Used to train agents to build up their skill level
  • Used to get the best quality support to the calling client
  • Saves time of the higher trained agents (gets them away from password reset requests)

 

Requirements

If you want to use Skill Based Routing, the minimal requirements are:

  • ScopServ Telephony 2.5
  • Asterisk 1.8

 

Create the skills

You can create multiple Skills on the ScopTEL PBX using the Telephony -> Queues and Agents (ACD) -> Skill Based Routing menu.

Skills

Create a Skill Rules set

A Skill Rules set is a list of conditions that can be created on Telephony -> Queues and Agents (ACD) -> Skill Based Routing menu. Each conditions are evaluated against each Agent in order to see if it matches. The call is distributed according to the matching rule.

Each rule has two parts:

  • the first part is a dynamical condition. If its evaluation is false, the next rule is tried;
  • the second part is tested against queue member’s skills, to define a selection

You can get more details about Conditions, Rules,  and Arithmetic/logical operators, that can be used on a rules, on the Definition tab.

Skill Base rule

Skill Base rule

 Important Note : Never use <= or >= operators otherwise the rule will be omitted !

Once the Skill Routing Rule is created the list view will look like the following :

Skill Routing Rules

Skill Routing Rules

 

Apply the skills to the agents

 

Now that all the skills are created you may assign them to the agents on the  Telephony -> Queues and Agents (ACD) -> Agents menu under the Options tab.   You can specify  custom skills on a per agent basis like :

 

If you have multiple agents that share same Skills, you can go on  Telephony -> Queues and Agents (ACD) -> Skill Based Routing and create Skill Groups that can be assigned to agents.

Skills Groups

Skills Groups

 

 

Assign Skills to a destination

Now that skill rules are created and skills assigned to agents, you must assign the Skill Based Rule  to a Queue (ACD). In this sample, we assign the rule to a Queue directly on an Auto Attendant (IVR):

Assign Skill Based Rule

Assign Skill Based Rule

 

 

[note color=#ddd]

Note:  You must  issue a Commit in Telephony GUI after configuration modification.

Be carefull to have at least one Agent skills matching the first Rule of the Rules Set, otherwise the Queue Application will hangup incoming calls, omitting the following rules.

[/note]

Read More

ScopServ Developper Kit for Linux (PHP classes)

ScopServ released today the first version of its ScopDEV (SDK) for Linux (PHP classes).

This PHP class API has been eagerly awaited by the community and follows the Windows API released about 6 months ago.

It comes with some 50 samples and will enable any PHP programmer to interface with our flagship software, ScopTEL IP PBX.

You can download this SDK at the following address: http://www.scopdev.com/

 

 

 

Read More

How to use Cepstral Text-to-Speech (TTS) support on ScopTEL

In order use Text-to-Speech engine on the ScopServ Telephony Server GUI, you must install Cepstral.

We’re going to walk you through installing Cepstral with the Cepstral Allison voice. But there are numerous other voices. You can check all of them out on the Cepstral demo site. Just be sure to select only the 8kHz voices which are specifically designed to support telephony applications.

 

Installing Cepstral

Be sure you choose the correct i386-Linux version for your system. You can’t use the 32-bit version on a 64-bit CentOS system, e.g. the new 64-bit ISO of ScopServ Telephony Server. But the same license key works for both the 32-bit and 64-bit versions of the same voice.

For the 32-bit version of ScopServ Telephony Server, log into your system as root and enter the following commands:

 

[note color=#ddd]cd /root
wget http://www.cepstral.com/downloads/installers/linux32/Cepstral_Allison-8kHz_i386-linux_6.0.1.tar.gz
tar -zxvf Cepstral*
cd Cepstral_Allison-8kHz_i386-linux_6.0.1
./install.sh
[/note]

For the 64-bit version of ScopServ Telephony Server, log into your system as root and enter the following commands:

 

[note color=#ddd]cd /root
wget http://www.cepstral.com/downloads/installers/linux64/Cepstral_Allison-8kHz_x86-64-linux_6.0.1.tar.gz
tar -zxvf Cepstral*
cd Cepstral_Allison-8kHz_x86-64-linux_6.0.1
./install.sh[/note]

After you’ve read the license, type yes to install the voice on your system, Accept the default locations for the installation. When the installation completes, issue the following command:

 

[note color=#ddd]echo /opt/swift/lib > /etc/ld.so.conf.d/cepstral.conf
ldconfig[/note]

 

Configure Text-to-Speech

Once the Cepstral TTS application is installed, you can start using it right away on the ScopTEL PBX. New options to enable Text-to-Speech (TTS) are available on the following sections of the Telephony module and allow to customize the announce messages :

  • Audio -> IVR Prompts
  • Applications -> Application
  • Applications -> Auto Attendant (IVR)
  • Queue (ACD) -> ACD
  • Configuration -> Hangup Cause
Text to Speech (TTS)

Text to Speech (TTS)

 

 

Using SSML Language

Cepstral voices support the Speech Synthesis Markup Language (SSML). SSML provides a wide range of control over how input text is read by a TTS engine. For example, with SSML, one can alter prosody attributes, such as rate, pitch, and volume, insert pauses of any length, change the speaking voice while reading, and control many other aspects of how the text is read by the synthetic voice.

The Voice Browser Working Group has sought to develop standards to enable access to the Web using spoken interaction. The Speech Synthesis Markup Language Specification is one of these standards and is designed to provide a rich, XML-based markup language for assisting the generation of synthetic speech in Web and other applications.

More information can be found on on the W3’s SSML 1.0 specificiation available on http://www.w3.org/TR/speech-synthesis11/

We also recommand to read Cepstral SSML FAQ on http://www.cepstral.com/support/faq/customization/ssml.html

 

Read More

How to establish a SIP trunk between ScopTEL IP PBX and VoIP provider B2B2C

We will see in this article how to configure a Scopserv system so it can communicate with Montreal based SIP trunk provider, B2B2C.

Two steps are required in order to use an external link, and two other steps are optional:

Creation of a VoIP Account
Creation of an incoming line (optional)
Creation of an outgoing line (optional)
Update of the appropriate Class of Service (CoS)

Creation of the VoIP Account

In the Telephony -> Interface menu , in the VoIP Account TAB, click on ‘Add New VoIP Account ‘

General Tab:  Create a SIP trunk type Ami. name the instance B2B2C.
Server Tab:     Specify the server address in the box B2B2C Host / IP, the host mode is set to specific. If you have a username and password, specify it. Register as a user agent is optional.
Network Tab: Check boxes: Trunk behind a Nat, Unsecure Port and Invites (required for incoming calls), and Qualifier
Options Tab:  Automatic Mode DTMF (RFC2833/Inband)

Save configuration.

Creation of incoming line

In the menu Telephony –> Lines, incoming line Tab, click  ‘Add a new line’

General tab: Type Post (DNIS), Indicate in the box Post the phone number assigned to you.
Destination tab: Select the desired destination, such a position.
Options tab: Select the trunk created in the previous step, in this case B2B2C.

Save configuration.

Creation of an outgoing line

In the menu Telephony –> Lines,  outgoing line Tab, click  ‘Add a new line ‘

General tab: Name your line, for example B2B2C B2B2C and enter the trunk.
Dial String tab: Simply put in first, choose a custom dial string and enter ‘X’. This configuration is not adequate but to validate the operation.
Caller ID tab: Click Force the outgoing caller ID, and specify your main phone number and the name of the company. This is mandatory.

Save configuration

Update the Class of Service (CoS)

In the menu Telephony –> Manager, Class of Service Tab, choose the Class of Service where you have defined your internal extensions.

Outgoing Lines tab:  Either you check the ‘Allow all outgoing lines’ or you include the B2B2C line in the list authorized lines.

Save configuration

 

NOTE: You need to register every 3600 seconds with this supplier. This parameter can be changed in the menu Configuration –> Channels –> SIP Channel Tab, under the SIP Option section.

Max length of incoming registration : 3600
Default length of incoming/outgoing registration : 120

There you go… The only thing left is to validate the configuration and make tests.

Thank you and have a great day !!!

Read More

Important Security settings when using Class of Service (CoS)

Class of Service (CoS) is where you configure permissions for extensions, incoming lines, applications, features codes, outgoing lines, etc. It very important to properly configure each Class of Service, because this is where all validation for routing is done (examples: if an incoming line,  extension, or if an outgoing line route exists)

To add, modify or delete a Class of Service, login to the ScopServ GUI, and click on Telephony -> Manager- > Class of Services

In each Class of Service, you have different sections where you can set different permissions.

On the Services tab, you can specify which feature code(s)  (Voicemail, Agent Login, Call Forward, DND, etc.) are available. It is not recommended to use the ‘All Features’ option when the Class of Service is used by an “untrusted” source. So if the users that will use this Class of Service do not need full access then do not check the ‘All Features’ option and instead select individual features codes that will be available.

On the Applications tab, you can specify which applications (created on Applications -> Application) are available. It is not recommended to use the ‘All Applications’ option when the Class of Service is used by an “untrusted” source. If you check ‘All Applications ‘ and have a custom application that executes a “sensitive” task (example: turn off the alarm system) then this is a major security risk, this is why you must select individual permissions.

On the Local Extensions tab, you can specify which extensions are reachable. If you want all extensions to be available for users that use this Class of Service, then simply check the ‘ All Extension ‘ option. If you want to restrict the ability to reach some local extensions then select a list of allowed local extensions.

On the Outgoing Lines tab, you specify which outgoing lines you want to be reachable. You can set the line priority (examples: 011X must be defined before X. else 011X will never be reachable). If some users need access only to local/national calls but must not be able to make international calls, or be restricted to use specific trunks, then the Outgoing Lines tab is used to select individual outgoing lines.

On the Miscellaneous tab, you can set miscellaneous options like Agent or Hotdesk restrictions. It is also possible to include others permissions (Class of Services) by selecting one or more contexts.  The option ‘Include other permissions’ allows to include others permissions in order to create group like Class of Service objects. This is useful to create a Class of Service that will include a hierarchy of other Class of Service objects.

Class of Services can be used in different places like Interfaces (VoIP Account, Digital, Analog) to lookup destinations. They can also be used on Extensions to specify which permissions the extension will have (examples: can the extension reach Voicemail or disable DND). They can also be used on an Auto Attendant (IVR) menu to lookup a key pressed by a user so it is very important to ensure that everything is properly configured.

For example: if you configure an Auto Attendant (IVR) to use a Class of Service that has access to all services, then any person that reaches the IVR will be able to execute any inherited service such as *888 to spy on extensions, or dial *78 to set a CallForward, or reach DISA, or dial any included feature, and etc. So ensure that an IVR does not have access to Class of Services with excessive permissions else major security holes can exist in the configuration.

In summary it is very important to properly configure Class of Services to restrict access permissions to a user.

Read More