This document describes how to configure and use the SIP/CSTA gateway of TelServer.
The purpose of this TelServer gateway is to convert the SIP/CSTA ECMA 323 protocol into PBX specific call control protocols and vice-versa. ECMA 323 is known as CSTA phase III XML, ECMA TR87 specifies how to transport the protocol over SIP messages. Many PBX do not support CSTA phase III XML over SIP, thus the need of a Remote Call Control gateway, such as TelServer SIP/CSTA gateway, to allow call control over the PBX phones.
The following describes the supported call control functions.
The following call control functions are supported by the TelServer SIP/CSTA gateway. This encompasses the functions supported by Communicator.
| Make Call |
|
The Make Call service provides the client SIP UA with the ability to set up a call between the PBX phone line and the called device, which is usually another phone. The Make Call service assigns a ConnectionID to the calling device, and returns the ConnectionID in positive acknowledgements. |
| Answer Call |
|
The client SIP UA, when notified of an incoming call, answers the call by turning on the speaker phone and connecting the PBX phone. |
| Clear Connection |
|
The client SIP UA clears a connection by releasing a device from a call. This can include tearing down a call for a two party call, or in the case of a conference call, removing specific users from the conference. |
| Deflect Call |
|
The client SIP UA deflects a call by diverting the call from one destination to another. The diversion can be inside or outside the switching sub-domain. |
| Hold Call |
|
The client SIP UA holds a call by placing an active call on hold. |
| Retrieve Call |
|
The client SIP UA retrieves a call by re-connecting a specified call on hold. |
| Consultation Call |
|
The client SIP UA creates a consultation call by placing an existing active call between two or more devices (requires putting one device temporarily on hold), and creates a new call from the device. |
| Single Step Transfer |
|
The client SIP UA performs a Single Step Transfer by replacing one device with another device in a call between two or more devices (without putting the call on hold at the device from which the call is being transferred). |
| Transfer (with consultation) |
|
The client SIP UA performs the Transfer Call service by transferring a held call at a specific device to an active call at the same device. The connections of the held call and the new active call at the transferring device are merged into one connection with a new ConnectionID. The previous two ConnectionIDs become Null. |
| Conference |
|
The client SIP UA provides Conference Call service by merging an existing held call and an existing active call at a conferencing device. Two calls and two connections are merged into one call and one connection. The ConnectionID for each call is released, and a new ConnectionID for the merged call is created. |
| Alternate Call |
|
The client SIP UA provides Alternate Call service by putting an existing active call on hold and retrieving a previously held call or a call not yet accepted (such as call waiting). |
| Generate Digits (DTMF) |
|
The client SIP UA generates digits by sending a series of digits using DTMF tones on behalf of the call connection. |
| Reconnect Call |
|
The client SIP UA provides Reconnect Call service by clearing a specific connection at the reconnecting device, and then reconnecting a previously held connection at the same device. |
| Set Forwarding |
|
The client SIP UA provides Set Forwarding by redirecting incoming calls meeting a specific condition on a specific line to another device. |
| Set Do No Disturb (DND) |
|
The client SIP UA provides Set DND service by preventing a specific device from being alerted. |
| Get Forwarding |
|
The client SIP UA provides Get Forwarding service by reporting the forwarding feature status for a specific device. |
| Get Do No Disturb (DND) |
|
The client SIP UA provides Get DND service by reporting the DND feature status for a specific device. |
TelServer SIP/CSTA gateway expects SIP/CSTA connections on the SIP/CSTA gateway port. By default, it is 5063.
Example : TelServer is running on 192.168.0.5 and the port is 5063.
The next step for configuring the gateway is the phone numbers configuration through the numbering rules settings defined using regular expressions. The reason for such a configuration is that phone numbers in the "computer world" are not defined as phone numbers in the "PBX world". Numbers in the "computer world" are recommended to be in standardized E.164 format and must be translated in accordance with the PBX dialplan. The ECMA TR/87 indeed specifies that the CSTA URI should be defined as specified in rfc2806 (NOTE that rfc3966 obsoletes rfc2806). Note that the Microsoft Address Book Service should be used to perform such normalization of phone numbers in the Active Directory and in Outlook because Communicator works with normalized phone numbers.
Example 1 :
Alice has a colleague Bob. They both work in the same company in France (prefix is +33) which main number is 16113. Alice's internal phone number is 6001, and Bob's one is 6002. The Address Book service provides normalized numbers for choosing contacts. Alice's contact list in Communicator contains Bob whose phone number is the E.164 number +33161136002. Bob's contact list in Communicator contains Alice whose phone number is the E.164 number +33161136001.
Alice selects Bob in her contact list to call him. Communicator sends +33161136002 to TelServer SIP/CSTA gateway. In order TelServer SIP/CSTA gateway provides 6002 to the PBX, the following numbering rule must be defined :
telserver.pbx.numberingRules.computer2pbx.conversionPattern.1=^\\+3316113([6][0-9]{3})$ > $1
Bob's phone is ringing. The PBX provides the calling number 6001 (Alice's extension) to TelServer SIP/CSTA gateway. In order Communicator displays Alice's name, Communicator must get the phone number +33161136001 from the TelServer SIP/CSTA gateway. The following numbering rule to perform the translation must be defined :
telserver.pbx.numberingRules.pbx2computer.conversionPattern.1=^([6][0-9]{3})$ > +3316113$1
Example 2 :
Alice has a colleague Peter with an extension 7003 and no external phone access (no DID).
Alice selects Peter in her contact list to call him. Communicator sends 7003 to TelServer SIP/CSTA gateway. In order TelServer SIP/CSTA gateway provides 7003 to the PBX, the following numbering rule which keep the number unchanged may be defined :
telserver.pbx.numberingRules.computer2pbx.conversionPattern.1=^[7][0-9]{3}$ > $0
If Peter calls Alice. Alice's phone is ringing. The PBX provides the calling number 7003 (Peter's extension) to TelServer SIP/CSTA gateway. In order Communicator displays Peter's name, Communicator must get the phone number 7003 from the TelServer SIP/CSTA gateway. The following numbering rule to perform the translation must be defined :
telserver.pbx.numberingRules.pbx2computer.conversionPattern.1=^[7][0-9]{3}$ > $0
NOTE: in fact, these rules do not change the phone numbers and are not mandatory. They are however useful if defined as the first rules so that other rules if any are not applied.
Example 3 :
Alice has an external contact James whose phone number is +33440404547.
Alice selects James in her contact list to call him. Communicator sends +33440404547 to TelServer SIP/CSTA gateway. In order TelServer SIP/CSTA gateway provides 00440404547 (assuming 0 is the outgoing prefix) to the PBX, the following numbering rule must be defined :
telserver.pbx.numberingRules.computer2pbx.conversionPattern.1=^\\+33([0-9]{9})$ > 00$1
If James calls Alice. Alice's phone is ringing. The PBX may provide the calling number 00440404547 (a diallable number for James) to TelServer SIP/CSTA gateway. In order Communicator displays James's name, Communicator must get the phone number +33440404547 from the TelServer SIP/CSTA gateway. The following numbering rule to perform the translation must be defined :
telserver.pbx.numberingRules.pbx2computer.conversionPattern.1=^0[0-9]([0-9]{9})$ > +33$1
NOTE: in fact, these rules do not change the phone numbers and are not
mandatory. They are however useful if defined as the first rules so that other
rules if any are not applied.