CURRI Hello World
To get started with CURRI, let us look at a simple call routing example.
Here we see how a call would be managed by Unified CM using the Cisco Unified Routing Rules Interface (CURRI) API.
- Let us assume that the administrator has configured an External Call Control Profile "ECC profile to RS1 & RS2" and enabled it at the translation pattern 5XXXX. You can see how to do that here.
- User A with directory number 9725550101 calls user B by dialing 50102. Cisco Unified CM is configured to allow five digit dialing for internal calls. The dialed number, 50102, is transformed into +19725550102 on the translation pattern 5XXXX.
- When Unified CM detects that dialed pattern has an ECCP associated with it, it pauses processing of the call and issues a call routing request to the URL specified in the ECCP.
An example of the call routing request can be seen below:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
POST
/pdp/AuthorizationEndPoint HTTP/1.1Host:
10.89.81.55:8080Accept:
*/*Content-type:
text/xml; charset=ISO-8859-1methodName:
isRoleAccessAllowedUser-Agent:
CiscoUCM-HttpClient/1.0Connection:Keep-Alive
Content-Length:
1704<!--?xml
version="1.0" encoding="UTF-8"?-->
<request xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os">
<subject subjectcategory="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
<attribute attributeid="urn:oasis:names:tc:xacml:1.0:subject:role-id"
datatype="http://www.w3.org/2001/XMLSchema#string">
Issuer="requestor">
<attributevalue>CISCO:UC:UCMPolicy</attributevalue>
</attribute>
<attribute attributeid="urn:Cisco:uc:1.0:callingnumber"
datatype="http://www.w3.org/2001/XMLSchema#string">
<attributevalue>9725550101</attributevalue>
</attribute>;
<attribute attributeid="urn:Cisco:uc:1.0:callednumber"
datatype="http://www.w3.org/2001/XMLSchema#string">
<attributevalue>50102</attributevalue>
</attribute>
<attribute attributeid="urn:Cisco:uc:1.0:transformedcgpn"
datatype="http://www.w3.org/2001/XMLSchema#string">
<attributevalue>+19725550101</attributevalue>
</attribute>
<attribute attributeid="urn:Cisco:uc:1.0:transformedcdpn"
datatype="http://www.w3.org/2001/XMLSchema#string">
<attributevalue>+19725550102</attributevalue>
</attribute>
</subject>
<resource>
<attribute attributeid="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
datatype="http://www.w3.org/2001/XMLSchema#anyURI">
<attributevalue>CISCO:UC:VoiceOrVideoCall</attributevalue>
</attribute>
</resource>
<action>
<attribute attributeid="urn:oasis:names:tc:xacml:1.0:action:action-id"
datatype="http://www.w3.org/2001/XMLSchema#anyURI">
<attributevalue>any</attributevalue>
</attribute>
</action>
<environment>
<attribute attributeid="urn:Cisco:uc:1.0:triggerpointtype"
datatype="http://www.w3.org/2001/XMLSchema#string">
<attributevalue>translationpattern</attributevalue>
</attribute>
</environment></request> |
To learn more about call routing request, visit Read Call Routing
Request.
4. In response to the request, the Route Server provides a directive - permit with a simple continue.
An example of the call routing response can be seen below:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
HTTP/1.1
200 OKServer:
Apache-Coyote/1.1Connection:
Keep-AliveKeep-Alive:
timeout = 1000 max = 100Transfer-Encoding:
chunkedDate: Mon,
08 Jun 2009 16:50:21 GMT<!--?xml
encoding="UTF-8" version="1.0"?-->
<response>
<result>
<decision>Permit</decision>
<obligations>
<obligation fulfillon="Permit"
obligationid="continue.simple">
<attributeassignment
attributeid="Policy:continue.simple">
<cixml
version="1.0">
<continue></continue>
</cixml>
</attributevalue>
</attributeassignment>
</obligation>
</obligations>
</result></response> |
To learn more about call routing response, visit Generate Call
Routing Response.
5. Unified CM routes the call according to the directive. In this example, the call continues to 9725550102.