SIP Trunking with Broadsoft softswitch

Unanswered Question
Sep 21st, 2007
User Badges:

I am trying to configure a 2821 to perform SIP trunking with a Broadsoft switch on an inbound call leg. Outbound calls work fine, but the design for inbound calls is through SIP trunking, where a single phone number is associated to several hundred other phone numbers.

The first part of the SIP Invite is the only part being matched, not the underlying request. I am at a loss to find any documentation that uses a target phone number associated with a dial-peer to perform this type of function.

Once this is working, dial-peer 5 or 8 should be matched and then translated to a 4 digit number that a 5e directly connected switch is ready to accept. Dial-peer 7 can pretty much be ignored as this did not change the results in either direction.



  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 4 (1 ratings)
Anonymous (not verified) Sun, 09/23/2007 - 00:57
User Badges:

Anonymous (not verified) Sun, 09/23/2007 - 00:57
User Badges:

Anonymous (not verified) Sun, 09/23/2007 - 00:58
User Badges:

Anonymous (not verified) Sun, 09/23/2007 - 01:02
User Badges:

skint Mon, 09/24/2007 - 05:31
User Badges:

Thanks for your response. It appears that the issues are still persisting.

In particular I am seeing the following from 'debug voip ccapi inout':

*Sep 24 02:36:24.621: //562/C7143B7F82EB/CCAPI/ccCallSetupRequest:

Calling Number=(TON=Unknown, NPI=Unknown, Screening=Not Screened, Presentation=Allowed),

Called Number=6105559999(TON=Unknown, NPI=Unknown),

Redirect Number=, Display Info=[email protected]

The Display Info field is where I need to extract the TN from. Is it necessary to create a trunk group for this type of association, if so I have not found good documentation for SIP trunk configurations in IOS. I have, however, found plenty of documentation for the BTS.

skint Mon, 09/24/2007 - 09:00
User Badges:

To achieve a single match for the URI contained within the SIP message, we have had to use the following configuration:


voice class uri 8123 sip

pattern [email protected]


voice translation-rule 8123

rule 1 /^$/ /6107938123/

rule 2 /.*/ /6107938123/



voice translation-profile voice-8123

translate called 8123


dial-peer voice 8123 voip

translation-profile incoming voice-8123

service session

voice-class codec 99

session protocol sipv2

session target ipv4:

incoming uri to 8123


dial-peer voice 8 pots

translation-profile outgoing inbound-5ess


preference 2

service session

destination-pattern 6107938...

progress_ind setup enable 3

progress_ind progress enable 8

port 0/2/0:0


The call flow at this point comes in and matches dial-peer 8123 by using incoming uri to 8123. Next the call matches the voice class uri with the pattern of [email protected] The call then references dial-peer 8123 again and then translates incoming on 'voice-8123' referencing translation-rule 8123 which uses the E.164 number and matches dial-peer voice 8.

I know we could remove a step and just use translation 8123 instead of translating again at dial-peer 8, but that's really the least of the problems. Unless there is a more elegant solution, we may have to do this for 800 TNs.

Any thoughts?



paolo bevilacqua Mon, 09/24/2007 - 11:39
User Badges:
  • Super Gold, 25000 points or more
  • Hall of Fame,

    Founding Member

A TCL/IVR script would let you use the to portion as called number directly. Actually very few lines of code should be.

skint Mon, 09/24/2007 - 13:42
User Badges:

Thanks for your response p.bevilacqua, this looks like a step in the right direction. Do you happen to have a sample of the TCL code to use? Right now I'm attempting to work off a copy of the session script and referencing prompt_digit_xfer.tcl.

I am able to pull this information using a sample script designed to playback the number called:

*Sep 24 21:26:02.624: //1010//TCL :/tcl_PutsObjCmd:

get_headers.tcl: ani is

*Sep 24 21:26:02.624:

*Sep 24 21:26:02.624: //1010//TCL :/tcl_PutsObjCmd:

get_headers.tcl: dnis is 6107938123

This is the correct DNIS information, however, this is after some processing and manipulation in the background. I am still unable to see any values in the To= field. Do you have a script example that properly pulls information from the To field?



paolo bevilacqua Mon, 09/24/2007 - 14:19
User Badges:
  • Super Gold, 25000 points or more
  • Hall of Fame,

    Founding Member

Hi, have you tried accessing leg_proto_headers infotag, that is at page 4-32 of ivr 2.0 programming guide.

skint Tue, 09/25/2007 - 05:58
User Badges:

Hi p.bevilacqua,

With my limited TCL experience, I have been able to modify a copy of the app_session.tcl script in attempts to pull out header information. I made a simple adjustment to pull a value out of the headers and display it.

The only changes I have made are:

proc act_Setup { } {

global dest

global allHeaders

global beep

set beep 0

set allHeaders [infotag get leg_proto_headers]

puts "\n allHeaders = $allHeaders"

Output from the debug:

>>>>CCAPI handed cid 1133 with tag 8000 to app "_ManagedAppProcess_vtest"

*Sep 25 13:42:25.292: //-1//SERV:/AFW_Service_Process_Space:

*Sep 25 13:42:25.292: Process Started

*Sep 25 13:42:25.296: //-1//AFW_:/AFW_Process_Register: ccAppInitialize(name: _ManagedAppProcess_vtest)

*Sep 25 13:42:25.296: //-1//AFW_:/AFW_Event_New:

*Sep 25 13:42:25.296: //1133//AFW_:/AFW_Process_GetCcqEvent: Received

*Sep 25 13:42:25.296: //-1//AFW_:/AFW_Process_GetCcqEvent: Event[CC_EV_CALL_SETUP_IND(29)] {

*Sep 25 13:42:25.296: //-1//AFW_:/AFW_Process_GetCcqEvent: EXECENV[0x46EA4724][vtest]

*Sep 25 13:42:25.296: //-1//AFW_:/AFW_Process_GetCcqEvent: LEG[1133][LEG_INIT(0)][Cause(0)]

*Sep 25 13:42:25.296: //-1//AFW_:/AFW_Process_GetCcqEvent: }

*Sep 25 13:42:25.296: //1133//SSIN:/AFW_SS_MapEvent:

*Sep 25 13:42:25.296: //-1//SSIN:/AFW_SS_SIP_MapEvent:

*Sep 25 13:42:25.296: //1133/FBE74DB98654/AFW_:/AFW_Leg_UpdateStats: Updating stats for ID 21B type 0

*Sep 25 13:42:25.296: //1133/FBE74DB98654/AFW_:/AFW_Object_WalkListeners:

*Sep 25 13:42:25.296: //1133/FBE74DB98654/AFW_:/AFW_M_Object_ShowListeners: START

*Sep 25 13:42:25.296: //-1//AFW_:/AFW_M_Object_ShowListeners:

*Sep 25 13:42:25.296: //1133//AFW_:/AFW_M_Module_GetHandle: Module handle: TclModule_45096A9C_0_629806192MOD[TclModule_45096A9C_0_629806192] (

*Sep 25 13:42:25.296: //-1//AFW_:/AFW_M_Object_ShowListeners: LEG[1133][LEG_INCINIT(1)][Cause(0)]

*Sep 25 13:42:25.296: //-1//AFW_:/AFW_M_Object_ShowListeners: )

*Sep 25 13:42:25.296: //1133/FBE74DB98654/AFW_:/AFW_M_Object_ShowListeners: END

*Sep 25 13:42:25.296: //1133/FBE74DB98654/AFW_:/AFW_Object_WalkListeners: Entering Module : TclModule

*Sep 25 13:42:25.296: //1133//AFW_:/AFW_ExecEnv_SetModuleScope: TclModule_45096A9C_0_629806192 ---> TclModule_45096A9C_0_629806192

*Sep 25 13:42:25.296: //1133//AFW_:/AFW_M_TclModule_Action:

*Sep 25 13:42:25.296: //1133//AFW_:/AFW_TclModule_DefaultEvHandling:

*Sep 25 13:42:25.296: //1133/FBE74DB98654/AFW_:/AFW_Leg_CheckIncomingCallBlock:

*Sep 25 13:42:25.296: //1133/FBE74DB98654/AFW_:/AFW_Leg_SettlementValidateCall: target=sip-server, tokenp=0x0

*Sep 25 13:42:25.296: //1133/FBE74DB98654/AFW_:/AFW_Leg_IncomingTranslate:

*Sep 25 13:42:25.300: //1133//AFW_:/AFW_FSM_Drive: ACTION BEGIN: ------(CALL_INIT[1],ev_setup_indication[29])---[act_Setup]------

*Sep 25 13:42:25.300: //1133//TCL :/tcl_InfotagObjCmd: infotag get leg_proto_headers

*Sep 25 13:42:25.300: //1133//TCL :/tcl_InfotagGetObjCmd: infotag get leg_proto_headers

*Sep 25 13:42:25.300: //1133//AFW_:/vtr_lg_proto_headers: argc 2 argindex 2

*Sep 25 13:42:25.300: //-1//AFW_:/AFW_Leg_GetProtoHeaders: callID=1133, tag=41, reqHeader=473BC868, reqCount=-1

*Sep 25 13:42:25.300: //1133//TCL :/tcl_PutsObjCmd:

allHeaders =

*Sep 25 13:42:25.300:

I am wondering if I'm trying to pull the SIP headers too late in the call process, should I be using a different procedure. In the programming guide there is a mention of the procedure init, used for digit collection and breaking out of the script. The act_Setup section of the script is executed after ev_setup_indication, however I can't seem to pull any headers at this point.

Here is the dial-peer it's matching on:

dial-peer voice 8000 voip

service vtest

voice-class codec 99

session protocol sipv2

session target sip-server

incoming uri to 8000


Thanks again,


skint Wed, 09/26/2007 - 06:05
User Badges:

Hi. We resolved the issue, it seems we were missing the section to pass sip headers.

If anyone cares, the missing code was:

voice service voip



Thanks to everyone who assisted.



This Discussion