CSS Stylesheet |
---|
h1, h2, {font-size: 18pt !important;}
h3 {font-size: 16pt !important;}
h4 {font-size: 14pt !important;}
h5 {font-size: 14pt !important;} |
CSS Stylesheet |
---|
.wiki-content h1 {
border-top: 1px solid rgb(145,150,153);
} |
Section |
---|
Column |
---|
| Noprint |
---|
Add_workflow_for_appnotes |
---|
AUTH1 | UserResourceIdentifier{userKey=8a00a02355cd1c2f0155cd26ccd408f7, userName='null'} |
---|
REV6 | UserResourceIdentifier{userKey=8a00a02355cd1c2f0155cd26cd5909df, userName='null'} |
---|
REV4 | UserResourceIdentifier{userKey=8a00a02355cd1c2f0155cd26cb8405ed, userName='null'} |
---|
REV1 | UserResourceIdentifier{userKey=8a00a02355cd1c2f0155cd26cdec0ad3, userName='null'} |
---|
|
|
|
|
This document provides a configuration guide for Sonus SBC 9000 Series (Session Border Controller) when connecting to the Genesys Voice Platform.
This configuration guide supports features given in the Genesys Voice Platform guide.
The interoperability compliance testing focuses on verifying inbound and outbound call flows between the Sonus SBC 9000 and the Genesys Voice Platform with AT&T IP Toll Free SIP Trunk.
This technical document is intended for telecommunications engineers with the purpose of configuring both the Sonus SBC and the third-party product. Navigating the third-party as well as the Sonus SBC Command Line Interface (CLI) is required. Understanding the basic concepts of TCP/UDP, IP/Routing, and SIP/RTP is also required to complete the configuration and any necessary troubleshooting.
Info |
---|
This configuration guide is offered as a convenience to Sonus customers. The specifications and information regarding the product in this guide are subject to change without notice. All statements, information, and recommendations in this guide are believed to be accurate but are presented without warranty of any kind, express or implied, and are provided “AS IS”. Users must take full responsibility for the application of the specifications and information in this guide. |
The following equipment and software were used for the sample configuration provided:
Caption |
---|
0 | Table |
---|
1 | Requirements |
---|
3 | Requirements |
---|
|
| Equipment | Software Version |
---|
Sonus Networks | Sonus SBC 9000 Sonus PSX | V09.00.12F004 V09.02.02R00 |
---|
Third-party Equipment | Genesys Confserv Genesys MessageServer1 Genesys SCS1 Genesys SIPServer1 Genesys StatServer1 Genesys URS1 Genesys GVP_MCP1 Genesys GVP_Reports1 Genesys GVP_ResourceManager1 Genesys GVP_SSG1 Genesys Administrator Server | v8.1.3 v8.1.2 v8.1.2 v8.1.1 v8.1.2 v8.1.3 v8.1.5 v8.1.3 v8.1.5 v8.1.7 v8.1 |
---|
| Polycom SoundPoint IP 501 SIP | 2.1.3 |
---|
|
The following reference configuration shows connectivity between third-party servers and Sonus SBC 9000.
Caption |
---|
0 | Figure |
---|
1 | Topology |
---|
3 | Topology |
---|
|
|
Support
For any questions regarding this document or the content herein, contact your maintenance and support provider.
- Basic inbound calls
- Basic outbound calls
- DNIS Translations
- Codec Negotiation
- Fax transmission
- Infopack
- Enhanced CID
- Call Transfer with SIP Refer Method
- SIP Refer with UUI
- DTMF
Anchor |
---|
| Not Supported Features |
---|
| Not Supported Features |
---|
|
Not Supported Features
Codec G729AB is not supported on the SBC 9000.
Enhanced CID - It is not supported on the Genesys SIP Server v8.1.
Genesys GVP platform cannot forward call to desired agent based on the Refer Response SIP 401 Unauthorized.
Genesys SIP Server does not support sending UUI based on NSS implementation.
T.38 v0 was only supported on the called fax machine.
Anchor |
---|
| Switch Configuration |
---|
| Switch Configuration |
---|
|
1. Switch Configuration
Caption |
---|
0 | Figure |
---|
1 | Switch Configuration |
---|
3 | Switch Configuration |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | Switch DN Configuration |
---|
3 | Switch DN Configuration |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | Trunks Configuration |
---|
3 | Trunks Configuration |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | Trunks Configuration Options |
---|
3 | Trunks Configuration Options |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | Extension Configuration |
---|
3 | Extension Configuration |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | Extension Options |
---|
3 | Extension Options |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | Trunk Groups Configuration |
---|
3 | Trunk Groups Configuration |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | Trunk Groups Option |
---|
3 | Trunk Groups Option |
---|
|
|
Anchor |
---|
| GVP Configuration |
---|
| GVP Configuration |
---|
|
2. GVP Configuration
Caption |
---|
0 | Figure |
---|
1 | IVR Profile |
---|
3 | IVR Profile |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | IVR Profile Options |
---|
3 | IVR Profile Options |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | DID Group |
---|
3 | DID Group |
---|
|
|
Anchor |
---|
| VXML Script Configuration |
---|
| VXML Script Configuration |
---|
|
3. VXML Script Configuration
The VXML file is applied to IVR Profile Option (Figure 11) as a local URL link (initial-page-url option).
Caption |
---|
0 | Figure |
---|
1 | Unattended Transfer |
---|
3 | Unattended Transfer |
---|
|
|
Code Block |
---|
title | Unattended Transfer Script |
---|
collapse | true |
---|
|
<?xml version="1.0" encoding="utf-8"?>
<vxml version="2.1" xml:lang="en-US"
xmlns="http://www.w3.org/2001/vxml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gvp="http://www.genesyslab.com/2006/vxml21-extension">
<!-- VXML code generated by Composer 8.1.400.21 -->
<!-- Diagram created by Composer: Composer 8.1.400.21 -->
<!-- Project version: 8.1.400.21 -->
<!-- Diagram version: 1.0 CreatedOn: -->
<!-- Application Author: -->
<!-- Release Mode: false -->
<!-- Global Scripts includes -->
<script src="../include/common.js" />
<script src="../include/ctic.js" />
<script src="../include/json.js" />
<script src="../include/DataAccess.js" />
<!-- Global Vars declarations -->
<script>
var AppState = new Object();
AppState.System = new Object();
AppState.System.RetainInputTypeVariableDefaultValue = false;
AppState.CallUUID = session.connection.uuid;
AppState.ANI = getANI();
AppState.DNIS = getDNIS();
AppState.USE_LCASE_USERDATAKEY = initSystemTypeVariable('USE_LCASE_USERDATAKEY',0);
if (session.connection.protocol.sip.headers != undefined &&
session.connection.protocol.sip.headers['x-genesys-gvp-session-id']){
AppState.GVPSessionID = session.connection.protocol.sip.headers['x-genesys-gvp-session-id'];
} else {
AppState.GVPSessionID = 'undefined';
}
AppState.APP_LANGUAGE = initSystemTypeVariable('APP_LANGUAGE','en-US');
AppState.APP_ASR_LANGUAGE = initSystemTypeVariable('APP_ASR_LANGUAGE','en-US');
AppState.PREV_APP_LANGUAGE = initSystemTypeVariable('PREV_APP_LANGUAGE','undefined');
AppState.PREV_APP_ASR_LANGUAGE = initSystemTypeVariable('PREV_APP_ASR_LANGUAGE','undefined');
AppState.GRAMMARFILEDIR = initSystemTypeVariable('GRAMMARFILEDIR','../Resources/Grammars');
AppState.VOXFILEDIR = initSystemTypeVariable('VOXFILEDIR','../Resources/Prompts');
AppState.SCRIPTSDIR = initSystemTypeVariable('SCRIPTSDIR','../Scripts');
AppState.EnableReports = initSystemTypeVariable('EnableReports',false);
AppState.EnableSNMP = initSystemTypeVariable('EnableSNMP',false);
AppState.LAST_EVENT_NAME = initSystemTypeVariable('LAST_EVENT_NAME','undefined');
AppState.LAST_EVENT_MSG = initSystemTypeVariable('LAST_EVENT_MSG','undefined');
AppState.LAST_EVENT_URL = initSystemTypeVariable('LAST_EVENT_URL','undefined');
AppState.LAST_EVENT_ELEMENT = initSystemTypeVariable('LAST_EVENT_ELEMENT','undefined');
AppState.LAST_EVENT_LINE = initSystemTypeVariable('LAST_EVENT_LINE','undefined');
AppState.EnableFCR = initSystemTypeVariable('EnableFCR',true);
AppState.COMPOSER_WSSTUBBING = initSystemTypeVariable('COMPOSER_WSSTUBBING','0');
AppState.APP_OPM = initSystemTypeVariable('APP_OPM',eval('('+session.connection.protocol.sip.requesturi['parameters']+')'));
AppState.OCS_RecordURI = initSystemTypeVariable('OCS_RecordURI',getCallflowRecordURI());
AppState.OCS_URI = initSystemTypeVariable('OCS_URI',getCallflowOCSURI());
AppState.OCS_Record = initSystemTypeVariable('OCS_Record',getCallflowOCSRecord());
AppState.TestNumber = 2;
AppState.TxDest = '3124223030';
AppState.TxResults = '';
AppState.Transfer1$ = new Object();
</script>
<!-- Global Scripts -->
<script srcexpr="AppState.VOXFILEDIR + '/PromptSwitch.js'" />
<script srcexpr="AppState.VOXFILEDIR + '/en-US/en-US.js'" />
<script>var f = new Format();</script>
<script srcexpr="AppState.VOXFILEDIR + '/en-US/customprompts.js'" />
<!-- Global Properties declarations -->
<property name="com.genesyslab.logtoasr" value="false" />
<property name="com.genesyslab.loglevel" value="5" />
<!-- Metadata information -->
<meta name="com.genesyslab.studio.resourcePath" content="/Callflows/Test2.callflow"/>
<!-- Global links -->
<form>
<block>
<goto next="#Entry1" />
</block>
</form>
<!-- This is the Entry block -->
<form id="Entry1">
<block name="Entry">
<goto next="#Welcome" />
</block>
</form>
<catch event="connection.disconnect.hangup">
<assign name="AppState.LAST_EVENT_ELEMENT" expr="_element"/>
<assign name="AppState.LAST_EVENT_MSG" expr="_message"/>
<assign name="AppState.LAST_EVENT_NAME" expr="_event"/>
<assign name="AppState.LAST_EVENT_LINE" expr="_line"/>
<assign name="AppState.LAST_EVENT_URL" expr="_url"/>
<goto next="#LogLastEvent" />
</catch>
<catch event="error">
<assign name="AppState.LAST_EVENT_ELEMENT" expr="_element"/>
<assign name="AppState.LAST_EVENT_MSG" expr="_message"/>
<assign name="AppState.LAST_EVENT_NAME" expr="_event"/>
<assign name="AppState.LAST_EVENT_LINE" expr="_line"/>
<assign name="AppState.LAST_EVENT_URL" expr="_url"/>
<goto next="#LogLastEvent" />
</catch>
<catch event=".">
<assign name="AppState.LAST_EVENT_ELEMENT" expr="_element"/>
<assign name="AppState.LAST_EVENT_MSG" expr="_message"/>
<assign name="AppState.LAST_EVENT_NAME" expr="_event"/>
<assign name="AppState.LAST_EVENT_LINE" expr="_line"/>
<assign name="AppState.LAST_EVENT_URL" expr="_url"/>
<goto next="#LogLastEvent" />
</catch>
<!-- This is the Prompt block -->
<form id="Welcome">
<block name="WelcomeP0">
<prompt bargein="true" gvp:langexpr="AppState.APP_LANGUAGE">
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'WelcomeToTestNumber.vox'"></audio>
<foreach item="thePrompt" array="PlayPromptSwitch(AppState.APP_LANGUAGE, AppState.VOXFILEDIR, AppState.TestNumber, 'number')">
<audio expr="thePrompt" />
</foreach>
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'TransferMessage.vox'"></audio>
</prompt>
</block>
<block>
<goto next="#Transfer1" />
</block>
</form>
<!-- This is the Transfer block -->
<form id="Transfer1">
<property name="inputmodes" value="dtmf" />
<transfer name="Transfer1Call" type="blind" destexpr="AppState.TxDest" connecttimeout="30s" gvp:method="refer"
gvp:analysis="false" gvp:connectwhen="immediate" >
<filled>
<assign name="AppState.TxResults" expr="Transfer1Call" />
<assign name="AppState.Transfer1$" expr="Transfer1Call$" />
<goto next="#LogTxResults" />
</filled>
</transfer>
</form>
<!-- This is the Log block -->
<form id="LogLastEvent">
<block>
<log gvp:level="1">
<value expr="'Top Level exception details:' + AppState.LAST_EVENT_NAME + ',' + AppState.LAST_EVENT_MSG + ',' + AppState.LAST_EVENT_URL +',' + AppState.LAST_EVENT_ELEMENT + ',' + AppState.LAST_EVENT_LINE"/>
</log>
</block>
<block>
<goto next="#Exit1" />
</block>
</form>
<!-- This is the Exit block -->
<form id="Exit1">
<block>
<exit/>
</block>
</form>
<!-- This is the Log block -->
<form id="LogTxResults">
<block>
<log gvp:level="1">
<value expr="'TxResults = ' + JSON.stringify(AppState.TxResults) + '.Transfer1$ = ' + JSON.stringify(AppState.Transfer1$)"/>
</log>
</block>
<block>
<goto next="#Exit1" />
</block>
</form>
</vxml>
|
This Unattended Transfer script plays an announcement for every incoming call with a correct destination and makes an Unnattended Transfer to a configured transfer destination.
Caption |
---|
0 | Figure |
---|
1 | Transfer with DTMF Menu |
---|
3 | Transfer with DTMF Menu |
---|
|
|
Code Block |
---|
title | Transfer with DTMF Menu |
---|
collapse | true |
---|
|
<?xml version="1.0" encoding="utf-8"?>
<vxml version="2.1" xml:lang="en-US"
xmlns="http://www.w3.org/2001/vxml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gvp="http://www.genesyslab.com/2006/vxml21-extension">
<!-- VXML code generated by Composer 8.1.400.21 -->
<!-- Diagram created by Composer: Composer 8.1.400.21 -->
<!-- Project version: 8.1.400.21 -->
<!-- Diagram version: 1.0 CreatedOn: -->
<!-- Application Author: -->
<!-- Release Mode: false -->
<!-- Global Scripts includes -->
<script src="../include/common.js" />
<script src="../include/ctic.js" />
<script src="../include/json.js" />
<script src="../include/DataAccess.js" />
<!-- Global Vars declarations -->
<script>
var AppState = new Object();
AppState.System = new Object();
AppState.System.RetainInputTypeVariableDefaultValue = false;
AppState.CallUUID = session.connection.uuid;
AppState.ANI = getANI();
AppState.DNIS = getDNIS();
AppState.USE_LCASE_USERDATAKEY = initSystemTypeVariable('USE_LCASE_USERDATAKEY',0);
if (session.connection.protocol.sip.headers != undefined &&
session.connection.protocol.sip.headers['x-genesys-gvp-session-id']){
AppState.GVPSessionID = session.connection.protocol.sip.headers['x-genesys-gvp-session-id'];
} else {
AppState.GVPSessionID = 'undefined';
}
AppState.APP_LANGUAGE = initSystemTypeVariable('APP_LANGUAGE','en-US');
AppState.APP_ASR_LANGUAGE = initSystemTypeVariable('APP_ASR_LANGUAGE','en-US');
AppState.PREV_APP_LANGUAGE = initSystemTypeVariable('PREV_APP_LANGUAGE','undefined');
AppState.PREV_APP_ASR_LANGUAGE = initSystemTypeVariable('PREV_APP_ASR_LANGUAGE','undefined');
AppState.GRAMMARFILEDIR = initSystemTypeVariable('GRAMMARFILEDIR','../Resources/Grammars');
AppState.VOXFILEDIR = initSystemTypeVariable('VOXFILEDIR','../Resources/Prompts');
AppState.SCRIPTSDIR = initSystemTypeVariable('SCRIPTSDIR','../Scripts');
AppState.EnableReports = initSystemTypeVariable('EnableReports',false);
AppState.EnableSNMP = initSystemTypeVariable('EnableSNMP',false);
AppState.LAST_EVENT_NAME = initSystemTypeVariable('LAST_EVENT_NAME','undefined');
AppState.LAST_EVENT_MSG = initSystemTypeVariable('LAST_EVENT_MSG','undefined');
AppState.LAST_EVENT_URL = initSystemTypeVariable('LAST_EVENT_URL','undefined');
AppState.LAST_EVENT_ELEMENT = initSystemTypeVariable('LAST_EVENT_ELEMENT','undefined');
AppState.LAST_EVENT_LINE = initSystemTypeVariable('LAST_EVENT_LINE','undefined');
AppState.EnableFCR = initSystemTypeVariable('EnableFCR',true);
AppState.COMPOSER_WSSTUBBING = initSystemTypeVariable('COMPOSER_WSSTUBBING','0');
AppState.APP_OPM = initSystemTypeVariable('APP_OPM',eval('('+session.connection.protocol.sip.requesturi['parameters']+')'));
AppState.OCS_RecordURI = initSystemTypeVariable('OCS_RecordURI',getCallflowRecordURI());
AppState.OCS_URI = initSystemTypeVariable('OCS_URI',getCallflowOCSURI());
AppState.OCS_Record = initSystemTypeVariable('OCS_Record',getCallflowOCSRecord());
AppState.TestNumber = 5;
AppState.TxDest = '2144326887';
AppState.TxResults = '';
AppState.MenuResult = '';
AppState.Transfer1$ = new Object();
</script>
<!-- Global Scripts -->
<script srcexpr="AppState.VOXFILEDIR + '/PromptSwitch.js'" />
<script srcexpr="AppState.VOXFILEDIR + '/en-US/en-US.js'" />
<script>var f = new Format();</script>
<script srcexpr="AppState.VOXFILEDIR + '/en-US/customprompts.js'" />
<!-- Global Properties declarations -->
<property name="com.genesyslab.logtoasr" value="false" />
<property name="com.genesyslab.loglevel" value="5" />
<!-- Metadata information -->
<meta name="com.genesyslab.studio.resourcePath" content="/Callflows/Test5.callflow"/>
<!-- Global links -->
<form>
<block>
<goto next="#Entry1" />
</block>
</form>
<!-- This is the Entry block -->
<form id="Entry1">
<block name="Entry">
<goto next="#Welcome" />
</block>
</form>
<catch event="connection.disconnect.hangup">
<assign name="AppState.LAST_EVENT_ELEMENT" expr="_element"/>
<assign name="AppState.LAST_EVENT_MSG" expr="_message"/>
<assign name="AppState.LAST_EVENT_NAME" expr="_event"/>
<assign name="AppState.LAST_EVENT_LINE" expr="_line"/>
<assign name="AppState.LAST_EVENT_URL" expr="_url"/>
<goto next="#LogLastEvent" />
</catch>
<catch event="error">
<assign name="AppState.LAST_EVENT_ELEMENT" expr="_element"/>
<assign name="AppState.LAST_EVENT_MSG" expr="_message"/>
<assign name="AppState.LAST_EVENT_NAME" expr="_event"/>
<assign name="AppState.LAST_EVENT_LINE" expr="_line"/>
<assign name="AppState.LAST_EVENT_URL" expr="_url"/>
<goto next="#LogLastEvent" />
</catch>
<catch event=".">
<assign name="AppState.LAST_EVENT_ELEMENT" expr="_element"/>
<assign name="AppState.LAST_EVENT_MSG" expr="_message"/>
<assign name="AppState.LAST_EVENT_NAME" expr="_event"/>
<assign name="AppState.LAST_EVENT_LINE" expr="_line"/>
<assign name="AppState.LAST_EVENT_URL" expr="_url"/>
<goto next="#LogLastEvent" />
</catch>
<!-- This is the Prompt block -->
<form id="Welcome">
<block name="WelcomeP0">
<prompt bargein="true" gvp:langexpr="AppState.APP_LANGUAGE">
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'WelcomeToTestNumber.vox'"></audio>
<foreach item="thePrompt" array="PlayPromptSwitch(AppState.APP_LANGUAGE, AppState.VOXFILEDIR, AppState.TestNumber, 'number')">
<audio expr="thePrompt" />
</foreach>
</prompt>
</block>
<block>
<goto next="#Menu1" />
</block>
</form>
<!-- This is the Transfer block -->
<form id="Transfer1">
<property name="inputmodes" value="dtmf" />
<transfer name="Transfer1Call" type="blind" destexpr="AppState.TxDest" gvp:method="refer"
gvp:analysis="false" gvp:connectwhen="immediate" >
</transfer>
</form>
<!-- This is the Log block -->
<form id="LogLastEvent">
<block>
<log gvp:level="1">
<value expr="'Top Level exception details:' + AppState.LAST_EVENT_NAME + ',' + AppState.LAST_EVENT_MSG + ',' + AppState.LAST_EVENT_URL +',' + AppState.LAST_EVENT_ELEMENT + ',' + AppState.LAST_EVENT_LINE"/>
</log>
</block>
<block>
<goto next="#Exit1" />
</block>
</form>
<!-- This is the Exit block -->
<form id="Exit1">
<block>
<exit/>
</block>
</form>
<!-- This is the Menu block -->
<form id="Menu1">
<property name="termchar" value="D"/>
<property name="inputmodes" value="dtmf" />
<property name="bargein" value="true" />
<block name="Menu1P0">
<prompt gvp:langexpr="AppState.APP_LANGUAGE">
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'Press0ToTransfer.vox'"></audio>
</prompt>
</block>
<var name="retryCount" expr="1"/>
<field name="Menu1Option">
<property name="timeout" value="10s"/>
<option dtmf="0" value="0" />
</field>
<filled mode="all" namelist="Menu1Option">
<assign name="AppState.MenuResult" expr="Menu1Option" />
<if cond="Menu1Option == '0'">
<goto next="#Transfer1" />
</if>
</filled>
<catch event="noinput" cond="retryCount == 1">
<assign name="retryCount" expr="retryCount + 1"/>
<prompt bargein="true" gvp:langexpr="AppState.APP_LANGUAGE">
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'NoResponse.vox'"></audio>
</prompt>
<clear namelist="Menu1P0"/>
</catch>
<catch event="nomatch" cond="retryCount == 1">
<assign name="retryCount" expr="retryCount + 1"/>
<prompt bargein="true" gvp:langexpr="AppState.APP_LANGUAGE">
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'InvalidResponse.vox'"></audio>
</prompt>
<clear namelist="Menu1P0"/>
</catch>
<catch event="noinput" cond="retryCount == 2">
<assign name="retryCount" expr="retryCount + 1"/>
<prompt bargein="true" gvp:langexpr="AppState.APP_LANGUAGE">
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'NoResponse.vox'"></audio>
</prompt>
<clear namelist="Menu1P0"/>
</catch>
<catch event="nomatch" cond="retryCount == 2">
<assign name="retryCount" expr="retryCount + 1"/>
<prompt bargein="true" gvp:langexpr="AppState.APP_LANGUAGE">
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'InvalidResponse.vox'"></audio>
</prompt>
<clear namelist="Menu1P0"/>
</catch>
<catch event="noinput" cond="retryCount==3">
<throw event="com.genesyslab.composer.toomanynoinputs" message="exceeded the number of noinput retries" />
</catch>
<catch event="nomatch" cond="retryCount==3">
<throw event="com.genesyslab.composer.toomanynomatches" message="exceeded the number of nomatch retries" />
</catch>
</form>
</vxml>
|
This Transfer script makes a transfer to a configured transfer destination based on the DTMF input.
Caption |
---|
0 | Figure |
---|
1 | Attended Transfer with Announcememt |
---|
3 | Attended Transfer with Announcememt |
---|
|
|
Code Block |
---|
title | Attended Transfer with Announcememt |
---|
collapse | true |
---|
|
<?xml version="1.0" encoding="utf-8"?>
<vxml version="2.1" xml:lang="en-US"
xmlns="http://www.w3.org/2001/vxml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gvp="http://www.genesyslab.com/2006/vxml21-extension">
<!-- VXML code generated by Composer 8.1.400.21 -->
<!-- Diagram created by Composer: Composer 8.1.400.21 -->
<!-- Project version: 8.1.400.21 -->
<!-- Diagram version: 1.0 CreatedOn: -->
<!-- Application Author: -->
<!-- Release Mode: false -->
<!-- Global Scripts includes -->
<script src="../include/common.js" />
<script src="../include/ctic.js" />
<script src="../include/json.js" />
<script src="../include/DataAccess.js" />
<!-- Global Vars declarations -->
<script>
var AppState = new Object();
AppState.System = new Object();
AppState.System.RetainInputTypeVariableDefaultValue = false;
AppState.CallUUID = session.connection.uuid;
AppState.ANI = getANI();
AppState.DNIS = getDNIS();
AppState.USE_LCASE_USERDATAKEY = initSystemTypeVariable('USE_LCASE_USERDATAKEY',0);
if (session.connection.protocol.sip.headers != undefined &&
session.connection.protocol.sip.headers['x-genesys-gvp-session-id']){
AppState.GVPSessionID = session.connection.protocol.sip.headers['x-genesys-gvp-session-id'];
} else {
AppState.GVPSessionID = 'undefined';
}
AppState.APP_LANGUAGE = initSystemTypeVariable('APP_LANGUAGE','en-US');
AppState.APP_ASR_LANGUAGE = initSystemTypeVariable('APP_ASR_LANGUAGE','en-US');
AppState.PREV_APP_LANGUAGE = initSystemTypeVariable('PREV_APP_LANGUAGE','undefined');
AppState.PREV_APP_ASR_LANGUAGE = initSystemTypeVariable('PREV_APP_ASR_LANGUAGE','undefined');
AppState.GRAMMARFILEDIR = initSystemTypeVariable('GRAMMARFILEDIR','../Resources/Grammars');
AppState.VOXFILEDIR = initSystemTypeVariable('VOXFILEDIR','../Resources/Prompts');
AppState.SCRIPTSDIR = initSystemTypeVariable('SCRIPTSDIR','../Scripts');
AppState.EnableReports = initSystemTypeVariable('EnableReports',false);
AppState.EnableSNMP = initSystemTypeVariable('EnableSNMP',false);
AppState.LAST_EVENT_NAME = initSystemTypeVariable('LAST_EVENT_NAME','undefined');
AppState.LAST_EVENT_MSG = initSystemTypeVariable('LAST_EVENT_MSG','undefined');
AppState.LAST_EVENT_URL = initSystemTypeVariable('LAST_EVENT_URL','undefined');
AppState.LAST_EVENT_ELEMENT = initSystemTypeVariable('LAST_EVENT_ELEMENT','undefined');
AppState.LAST_EVENT_LINE = initSystemTypeVariable('LAST_EVENT_LINE','undefined');
AppState.EnableFCR = initSystemTypeVariable('EnableFCR',true);
AppState.COMPOSER_WSSTUBBING = initSystemTypeVariable('COMPOSER_WSSTUBBING','0');
AppState.APP_OPM = initSystemTypeVariable('APP_OPM',eval('('+session.connection.protocol.sip.requesturi['parameters']+')'));
AppState.OCS_RecordURI = initSystemTypeVariable('OCS_RecordURI',getCallflowRecordURI());
AppState.OCS_URI = initSystemTypeVariable('OCS_URI',getCallflowOCSURI());
AppState.OCS_Record = initSystemTypeVariable('OCS_Record',getCallflowOCSRecord());
AppState.TestNumber = 8;
AppState.TxDest = '01030';
AppState.TxResults = '';
</script>
<!-- Global Scripts -->
<script srcexpr="AppState.VOXFILEDIR + '/PromptSwitch.js'" />
<script srcexpr="AppState.VOXFILEDIR + '/en-US/en-US.js'" />
<script>var f = new Format();</script>
<script srcexpr="AppState.SCRIPTSDIR + '/' + 'sonus.js'" />
<script srcexpr="AppState.VOXFILEDIR + '/en-US/customprompts.js'" />
<!-- Global Properties declarations -->
<property name="com.genesyslab.logtoasr" value="false" />
<property name="com.genesyslab.loglevel" value="5" />
<!-- Metadata information -->
<meta name="com.genesyslab.studio.resourcePath" content="/Callflows/Test8.callflow"/>
<!-- Global links -->
<form>
<block>
<goto next="#Entry1" />
</block>
</form>
<!-- This is the Entry block -->
<form id="Entry1">
<block name="Entry">
<goto next="#Welcome" />
</block>
</form>
<catch event="connection.disconnect.hangup">
<assign name="AppState.LAST_EVENT_ELEMENT" expr="_element"/>
<assign name="AppState.LAST_EVENT_MSG" expr="_message"/>
<assign name="AppState.LAST_EVENT_NAME" expr="_event"/>
<assign name="AppState.LAST_EVENT_LINE" expr="_line"/>
<assign name="AppState.LAST_EVENT_URL" expr="_url"/>
<goto next="#LogLastEvent" />
</catch>
<catch event="error">
<assign name="AppState.LAST_EVENT_ELEMENT" expr="_element"/>
<assign name="AppState.LAST_EVENT_MSG" expr="_message"/>
<assign name="AppState.LAST_EVENT_NAME" expr="_event"/>
<assign name="AppState.LAST_EVENT_LINE" expr="_line"/>
<assign name="AppState.LAST_EVENT_URL" expr="_url"/>
<goto next="#LogLastEvent" />
</catch>
<catch event=".">
<assign name="AppState.LAST_EVENT_ELEMENT" expr="_element"/>
<assign name="AppState.LAST_EVENT_MSG" expr="_message"/>
<assign name="AppState.LAST_EVENT_NAME" expr="_event"/>
<assign name="AppState.LAST_EVENT_LINE" expr="_line"/>
<assign name="AppState.LAST_EVENT_URL" expr="_url"/>
<goto next="#LogLastEvent" />
</catch>
<!-- This is the Prompt block -->
<form id="Welcome">
<block name="WelcomeP0">
<prompt bargein="true" gvp:langexpr="AppState.APP_LANGUAGE">
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'WelcomeToTestNumber.vox'"></audio>
<foreach item="thePrompt" array="PlayPromptSwitch(AppState.APP_LANGUAGE, AppState.VOXFILEDIR, AppState.TestNumber, 'number')">
<audio expr="thePrompt" />
</foreach>
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'TransferMessage.vox'"></audio>
</prompt>
</block>
<block>
<goto next="#TransferForm" />
</block>
</form>
<!-- This is the Log block -->
<form id="LogLastEvent">
<block>
<log gvp:level="1">
<value expr="'Top Level exception details:' + AppState.LAST_EVENT_NAME + ',' + AppState.LAST_EVENT_MSG + ',' + AppState.LAST_EVENT_URL +',' + AppState.LAST_EVENT_ELEMENT + ',' + AppState.LAST_EVENT_LINE"/>
</log>
</block>
<block>
<goto next="#Exit1" />
</block>
</form>
<!-- This is the Exit block -->
<form id="Exit1">
<block>
<exit/>
</block>
</form>
<!-- This is the Log block -->
<form id="LogTxResults">
<block>
<log gvp:level="1">
<value expr="'TxResults = ' + JSON.stringify(AppState.TxResults) + '.Transfer1$ = ' + JSON.stringify(AppState.Transfer1$)"/>
</log>
</block>
<block>
<goto next="#TransferFail" />
</block>
</form>
<!-- This is the Prompt block -->
<form id="TransferFail">
<block name="TransferFailP0">
<prompt bargein="true" gvp:langexpr="AppState.APP_LANGUAGE">
<audio expr="AppState.VOXFILEDIR + '/' + AppState.APP_LANGUAGE + '/' + 'TransferBusy.vox'"></audio>
</prompt>
</block>
<block>
<goto next="#Exit1" />
</block>
</form>
<!-- This is the VXML Form block TransferForm -->
<form id="TransferForm">
<property name="inputmodes" value="dtmf" />
<script>
var MyASCIIdata = 'Hello it\'s a wonderful day!';
var MyHEXdata = asc2hex(MyASCIIdata);
var signalVar = {};
signalVar['Sip.Refer.User-to-User'] = MyHEXdata + ';encoding=hex';
</script>
<block>
<log> signalVar= <value expr="JSON.stringify(signalVar)" /> </log>
</block>
<transfer name="Transfer1Call" type="consultation" destexpr="AppState.TxDest" connecttimeout="30s" gvp:signalvar="signalVar" gvp:method="refer"
gvp:analysis="false" gvp:connectwhen="immediate" >
<filled>
<assign name="AppState.TxResults" expr="Transfer1Call" />
<assign name="AppState.Transfer1$" expr="Transfer1Call$" />
<goto next="#LogTxResults" />
</filled>
</transfer>
<block>
<goto next="#LogTxResults" />
</block>
</form>
</vxml>
|
This Attended Transfer script plays an announcement for every incoming call with the correct destination and makes an Attended Transfer to the configured transfer destination. If the transfer was not successful it plays another error announcement for the caller or makes another transfer for a different destination.
This section provides example CLI configuration details for the SBC 9000.
Code Block |
---|
title | SBC 9000 Configuration |
---|
collapse | true |
---|
|
#Interface Configuration
CONFIGURE LOGICAL MGMTIF SHELF 1 IPADDRESS 10.35.154.8
CONFIGURE NIF GENET-1-3-1 IPADDRESS 10.35.155.4 MASK 255.255.255.240 NEXTHOP 10.35.155.1
CONFIGURE NIF GENET-1-3-2 IPADDRESS 216.50.36.118 MASK 255.255.255.240 NEXTHOP 216.50.36.224
#Media Profile Configuration
CREATE MEDIA PROFILE CNSPROFILE BASEMEDIAPROFILE 1
CONFIGURE MEDIA PROFILE CNSPROFILE EVRC DISABLED
CONFIGURE MEDIA PROFILE CNSPROFILE AMRWB DISABLED
CONFIGURE MEDIA PROFILE CNSPROFILE ECM DISABLED
CONFIGURE MEDIA PROFILE CNSPROFILE PXPAD ENABLED
CONFIGURE MEDIA PROFILE CNSPROFILE G729 ENABLED
CONFIGURE MEDIA PROFILE CNSPROFILE G722 DISABLED
CONFIGURE MEDIA PROFILE CNSPROFILE EVRCB DISABLED
CONFIGURE MEDIA PROFILE CNSPROFILE iLBC DISABLED
CONFIGURE MEDIA PROFILE CNSPROFILE G726 DISABLED
CONFIGURE MEDIA PROFILE CNSPROFILE GSM DISABLED
CONFIGURE MEDIA PROFILE CNSPROFILE G723 DISABLED
CONFIGURE MEDIA PROFILE CNSPROFILE STATE ENABLED
#RTP Base Port
CONFIGURE RTP PORT BASE 16384
#SIP Signaling configuration
CREATE SIP SIGNALING PORT 1 IPADDRESS 10.35.155.9
CONFIGURE SIP SIGNALING PORT 1 INTERFACE NIF
CONFIGURE SIP SIGNALING PORT 1 MODE INSERVICE STATE ENABLED
CREATE SIP SIGNALING PORT 2 IPADDRESS 216.50.36.117
CONFIGURE SIP SIGNALING PORT 2 INTERFACE NIF
CONFIGURE SIP SIGNALING PORT 2 MODE INSERVICE STATE ENABLED
#Zone Configuration
CREATE ZONE PUB-ZONE
CREATE NIFGROUP NG-PUB
CREATE ZONE PRIV-ZONE
CREATE NIFGROUP NG-PRIV
#SMM Rule
CREATE SIPADAPTOR PROFILE REMOVE_JUNK
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK add rule 1
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 add criterion message criterion message message_types request method_type invite
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 criterion message condition exist
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 add criterion msgbody criterion msgbody condition exist
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 add action 1 type msgbody
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 action 1 regexp string "\-\-\\r\\n"
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 action 1 operation REGPOSTDEL
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 action 1 to msgbody content_type all
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 add action 2 type msgbody
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 action 2 operation regsub
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 action 2 regexp string "handling\=required"
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 action 2 from value "handling=optional"
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 action 2 to msgbody content_type all
CONFIGURE SIPADAPTOR PROFILE REMOVE_JUNK rule 1 action 2 regexp match_instance two
#SIP Service Configuration
CONFIGURE SIP SERVICE INT_SIP_TG_ZONE SIGNALING ZONE PRIV-ZONE
CONFIGURE SIP SERVICE INT_SIP_TG_ZONE MEDIA ZONE PRIV-ZONE
CONFIGURE SIP SERVICE EXT_SIP_TG_ZONE MEDIA NIFGROUP NG-PRIV
CONFIGURE SIP SERVICE EXT_SIP_TG_ZONE SIGNALING ZONE PUB-ZONE
CONFIGURE SIP SERVICE EXT_SIP_TG_ZONE MEDIA ZONE PUB-ZONE
CONFIGURE SIP SERVICE EXT_SIP_TG_ZONE MEDIA NIFGROUP NG-PUB
CONFIGURE SIP SERVICE EXT_SIP_TG_ZONE IN_ADAPTOR PROFILE REMOVE_JUNK
CREATE CARRIER VO-LAB
CONFIGURE CARRIER VO-LAB STATE ENABLED
#SIP Trunk Group Configuration
CREATE IP NETWORK SELECTOR TABLE EXT-IPST
CONFIGURE IP NETWORK SELECTOR TABLE EXT-IPST ADD NUMBER 207.242.225.210 MASK 255.255.255.255
CREATE IP NETWORK SELECTOR TABLE INT-IPST
CONFIGURE IP NETWORK SELECTOR TABLE INT-IPST ADD NUMBER 10.35.176.111 MASK 255.255.255.255
CREATE TRUNK GROUP SIP_TG_EXT GROUP TYPE ipSelected
CONFIGURE TRUNK GROUP SIP_TG_EXT NETWORK SELECTOR TABLE EXT-IPST
CONFIGURE TRUNK GROUP SIP_TG_EXT CARRIER VO-LAB
CONFIGURE TRUNK GROUP SIP_TG_EXT STATE ENABLED
CONFIGURE TRUNK GROUP SIP_TG_EXT MODE INSERVICE
CREATE TRUNK GROUP SIP_TG_INT GROUP TYPE ipSelected
CONFIGURE TRUNK GROUP SIP_TG_INT NETWORK SELECTOR TABLE INT-IPST
CONFIGURE TRUNK GROUP SIP_TG_INT CARRIER VO-LAB
CONFIGURE TRUNK GROUP SIP_TG_INT STATE ENABLED
CONFIGURE TRUNK GROUP SIP_TG_INT MODE INSERVICE
#Pathcheck profile configuration
CREATE PATHCHECK PING PROFILE INT_PATHCHECK1
CONFIGURE PATHCHECK PING PROFILE INT_PATHCHECK1 PROTOCOL sipOpt
CONFIGURE PATHCHECK PING PROFILE INT_PATHCHECK1 SEND INTERVAL 3000
CONFIGURE PATHCHECK PING PROFILE INT_PATHCHECK1 VERIFY INTERVAL 0
CONFIGURE PATHCHECK PING PROFILE INT_PATHCHECK1 REPLY TIMEOUT 0
CONFIGURE PATHCHECK PING PROFILE INT_PATHCHECK1 RECOVERY NUMBER 3
CONFIGURE PATHCHECK PING PROFILE INT_PATHCHECK1 TIMEOUT NUMBER 1
CONFIGURE PATHCHECK PING PROFILE INT_PATHCHECK1 STATE ENABLED
CREATE PATHCHECK PING PROFILE EXT_PATHCHECK1
CONFIGURE PATHCHECK PING PROFILE EXT_PATHCHECK1 PROTOCOL sipOpt
CONFIGURE PATHCHECK PING PROFILE EXT_PATHCHECK1 SEND INTERVAL 30000
CONFIGURE PATHCHECK PING PROFILE EXT_PATHCHECK1 VERIFY INTERVAL 0
CONFIGURE PATHCHECK PING PROFILE EXT_PATHCHECK1 REPLY TIMEOUT 0
CONFIGURE PATHCHECK PING PROFILE EXT_PATHCHECK1 RECOVERY NUMBER 3
CONFIGURE PATHCHECK PING PROFILE EXT_PATHCHECK1 TIMEOUT NUMBER 1
CONFIGURE PATHCHECK PING PROFILE EXT_PATHCHECK1 STATE ENABLED
#Static Route Configuration
CONFIGURE IP ROUTE ADD IFINDEX 8 IPADDRESS 10.35.176.0 MASK 255.255.255.0 NEXTHOP 10.35.155.1
CONFIGURE IP ROUTE ADD IFINDEX 9 IPADDRESS 207.242.225.0 MASK 255.255.255.0 NEXTHOP 216.110.2.224
#Softswitch Configuration
CREATE SONUS SOFTSWITCH mystic
CONFIGURE SONUS SOFTSWITCH mystic IPADDRESS 10.35.144.10
CONFIGURE SONUS SOFTSWITCH mystic PORT 2569
CONFIGURE SONUS SOFTSWITCH mystic RETRY TIMER 2500
CONFIGURE SONUS SOFTSWITCH mystic TRANSACTION TIMER 2500
CONFIGURE SONUS SOFTSWITCH mystic RETRY LIMIT 1
CONFIGURE SONUS SOFTSWITCH mystic KEEPALIVE TIMER 5
CONFIGURE SONUS SOFTSWITCH mystic ACTION DRYUP
CONFIGURE SONUS SOFTSWITCH mystic STATE ENABLED
CONFIGURE SONUS SOFTSWITCH mystic MODE ACTIVE
|
- Voice Codec Configuration
Packet Service Profile
- IP Signaling Profile
Trunk Group Configuration
Routing Configuration
Numbering Plan
Prefix Profile
Anchor |
---|
| Voice Codec Configuration |
---|
| Voice Codec Configuration |
---|
|
1. Voice Codec Configuration
Caption |
---|
0 | Figure |
---|
1 | Voice Codec |
---|
3 | Voice Codec |
---|
|
|
Anchor |
---|
| Packet Service Profile |
---|
| Packet Service Profile |
---|
|
2. Packet Service Profile
Caption |
---|
0 | Figure |
---|
1 | Packet Service Profile |
---|
3 | Packet Service Profile |
---|
|
|
Anchor |
---|
| IP Signaling Profile |
---|
| IP Signaling Profile |
---|
|
3. IP Signaling Profile
Caption |
---|
0 | Figure |
---|
1 | IP Signaling Profile |
---|
3 | IP Signalling Profile |
---|
|
|
Anchor |
---|
| Trunk Group Configuration |
---|
| Trunk Group Configuration |
---|
|
4. Trunk Group Configuration
Caption |
---|
0 | Figure |
---|
1 | Trunk Group External Access |
---|
3 | Trunk Group External Access |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | Trunk Group Internal Access |
---|
3 | Trunk Group Internal Access |
---|
|
|
Anchor |
---|
| Routing Configuration |
---|
| Routing Configuration |
---|
|
5. Routing Configuration
Caption |
---|
0 | Figure |
---|
1 | Routing Label |
---|
3 | Routing Label |
---|
|
|
Caption |
---|
0 | Figure |
---|
1 | CoS Group |
---|
3 | CoS Group |
---|
|
|
Anchor |
---|
| Prefix Profile |
---|
| Prefix Profile |
---|
|
6. Prefix Profile
Caption |
---|
0 | Figure |
---|
1 | Prefix Profile |
---|
3 | Prefix Profile |
---|
|
|
Anchor |
---|
| Numbering Plan |
---|
| Numbering Plan |
---|
|
7. Numbering Plan
Caption |
---|
0 | Figure |
---|
1 | Numbering Plan |
---|
3 | Numbering Plan |
---|
|
|
This Application Note describes the configuration steps required for the Sonus SBC 900 to successfully interoperate with Genesys Voice Platform and AT&T IP Toll Free SIP Trunk. All feature and serviceability test cases were completed and passed with the exceptions/observations noted in Not Supported Features.