You are on page 1of 4

DefineSIPTrunkbetweenCGRateSandKazooforoutboundcalls

FREESWITCH
inpublic.xml:
<extensionname="from_kazoo">
<conditionfield="network_addr"expression="[KAZOO_FREESWITCH_IP]"/>
<conditionfield="destination_number"expression="^(.*)$">
<actionapplication="transfer"data="$1XMLdefault"/>
</condition>
</extension>
pleasenotethatoutboundcallsfromkazooaresentdirectlyfromfreeswitch,soremembertoconsiderall
freeeswitchnodespublicIPs,otherwiseyouwontbeabletocallfromallFSnodes.

Insip_profiles/internal/example.xml
<include>
<gatewayname="YOUR_GATEWAY">
<paramname="username"value="YOUR_GATEWAY"/>
<paramname="password"value="YOUR_PASSWORD"/>
<paramname="proxy"value="YOUR_GATEWAY_DNS"/>
<paramname="register"value="false"/>
<paramname="calleridinfrom"value="true"/>
</gateway>
</include>

indefault.xml(inthiscasewealwayssetcgr_reqtypeasprepaid,ifyouwantdifferentwaystobill
youllneedtododifferentcontext)
<include>
<contextname="default">
<!
CGRateSrelatedextensions
>
<!Setcgraccountandcgrsubject>
<extensionname="CGRateS_setAccount"continue="true">

<condition>
<actionapplication="set"data="cgr_account=${sip_from_host}"/>
<actionapplication="set"data="cgr_subject=${sip_from_host}"/>
<actioninline="true"application="set"data="cgr_reqtype=prepaid"/>
</condition>
</extension>

<!Placeallprepaidrequestsintoparkapp.Notifymustbeemptysowedonotloop.>
<extensionname="CGRateS_AuthPrepaid">
<conditionfield="${cgr_reqtype}"expression="^prepaid$|^pseudoprepaid$"/>
<conditionfield="${cgr_notify}"expression="^$">
<actionapplication="park"/>
</condition>
</extension>

<!IncaseofCGRateSreturningINSUFFICIENT_FUNDS,playthemessage(ifrecorded)and
disconnectthecallwith403.>
<extensionname="CGRateS_AuthForbidden">
<conditionfield="${cgr_reqtype}"expression="^prepaid$|^pseudoprepaid$"/>
<conditionfield="${cgr_notify}"expression="^INSUFFICIENT_FUNDS$">
<actionapplication="set"data="proto_specific_hangup_cause=sip:403"/>
<actionapplication="hangup"/>
</condition>
</extension>

<!IncaseofCGRateSreturningSYSTEM_ERROR,disconnectthecallsowedonotriskprepaidcalls
goingout.>
<extensionname="CGRateS_Error">
<conditionfield="${cgr_reqtype}"expression="^prepaid$|^pseudoprepaid$"/>
<conditionfield="${cgr_notify}"expression="^SYSTEM_ERROR$">
<actionapplication="set"data="proto_specific_hangup_cause=sip:503"/>
<actionapplication="hangup"/>
</condition>
</extension>
<!
PSTNOutboundrelatedextensions

PLEASENOTE:
bypass_media=trueisoptional,suggestitinordertoprocessonlytheSIPflow(Bestperformances,Less
latency)
>
<extensionname="PSTN">
<conditionfield="destination_number"expression="^(.*)$">
<actionapplication="set"data="bypass_media=true"/>
<actionapplication="bridge"data="sofia/gateway/YOUR_GATEWAY/$1"/>
<actionapplication="hangup"/>
</condition>
</extension>
</context>
</include>

KAZOO
Defineacarrierwith
Server:
CGRATES_IP:5080
Options>PassRealminINVITE
checked

DefineSIPTrunkbetweenCGRateSandKazooforinboundcalls

FREESWITCH
Defineaseparatecontext(es:inbound)andputinthexmlfile(dontforgettosetthecontextpropertyinthe
inboundgatewayfile):

<!Setcgraccountandcgrsubject>
<extensionname="CGRateS_setAccount"continue="true">
<condition>
<actionapplication="set"data="cgr_account=${destination_number}"/>
<actionapplication="set"data="cgr_subject=${effective_caller_id_number}"/>
<actionapplication="set"data="cgr_destination=${destination_number}"/>
</condition>
</extension>

<!
ToKazooDev
>
<extensionname="to_kazoo">
<conditionfield="destination_number"expression="^(.*)$"requirenested="false">

<actionapplication="set"data="bypass_media=true"/>
<actionapplication="bridge"data="sofia/gateway/kazoodev2/${destination_number}"/>
<actionapplication="hangup"/>
</condition>
</extension>

KAZOO

Allowthefreeswitch+cgratesipintheACL(lookto
https://2600hz.atlassian.net/wiki/display/docs/Connecting+via+SIP+Trunks
)

sup -necallmgr ecallmgr_maintenance allow_carrier CGRateS [your_freeswitch_ip]


sup -necallmgr ecallmgr_maintenance reload_acls

You might also like