01-28-2019 01:37 AM - edited 03-01-2019 02:59 AM
Hello,
I need exact XML response format with possible values for each attribute for Continue, Divert and Reject calls.
Possible values for ex. For StatusCode possible values are -
1. urn:oasis:names:tc:xacml:1.0:status:missing-attribute
2. urn:oasis:names:tc:xacml:1.0:status:ok
3. urn:oasis:names:tc:xacml:1.0:status:processing-error
4. urn:oasis:names:tc:xacml:1.0:status:syntax-error
Same way need possible values for ResourceId, ObligationId, etc.
01-28-2019 06:52 AM - edited 01-29-2019 10:05 AM
These are examples of responses I've used/tested in the past. I believe it should work.
for more details check out:
https://developer.cisco.com/site/curri/documents/latest-version/
<?xml version="1.0" encoding="UTF-8"?> <Response> <Result> <Decision>Permit</Decision> <Obligations> <Obligation FulfillOn="Permit" obligationId="continue.simple"> <AttributeAssignment AttributeId="Policy:continue.simple"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"> <cixml version="1.0"> <continue></continue> </cixml> </AttributeValue> </AttributeAssignment> </Obligation> </Obligations> </Result> </Response> <?xml version="1.0" encoding="UTF-8"?> <Response> <Result> <Decision>Permit</Decision> <Obligations> <Obligation FulfillOn="Permit" obligationId="divert.simple"> <AttributeAssignment AttributeId="Policy:divert.simple"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"> <cixml version="1.0"> <divert> <destination>number|voicemail</destination> </divert> </cixml> </AttributeValue> </AttributeAssignment> </Obligation> </Obligations> </Result> </Response> <?xml version="1.0" encoding="UTF-8"?> <Response> <Result> <Decision>Deny</Decision> <Obligations> <Obligation FulfillOn="Deny" obligationId="reject.simple"> <AttributeAssignment AttributeId="Policy:reject.simple"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"> <cixml version="1.0"> <reject></reject> </cixml> </AttributeValue> </AttributeAssignment> </Obligation> </Obligations> </Result> </Response>
01-29-2019 12:02 AM
For Reject call, I send the same response, so it rings twice, then there is blank tone for around 20 seconds and then call is getting cut.
For Divert call, I get the continuous busy tone.
Are these the correct behavior?
01-29-2019 12:10 AM
I am sending this when
to deny a call -
<?xml version="1.0" encoding="utf-8" ?>
<Response>
<Result>
<Decision>Deny</Decision>
<Status></Status>
<Obligations>
<Obligation FulfillOn="Deny" ObligationId="urn:cisco:xacml:response-qualifier">
<AttributeAssignment AttributeId="urn:cisco:xacml:is-resource">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">
<cixml version="1.0"><reject></reject></cixml>
</AttributeValue>
</AttributeAssignment>
</Obligation>
</Obligations>
</Result>
</Response>
to divert a call -
<?xml version="1.0" encoding="utf-8" ?>
<Response>
<Result>
<Decision>Permit</Decision>
<Obligations>
<Obligation FulfillOn="Permit" ObligationId="continue.simple">
<AttributeAssignment AttributeId="Policy:continue.simple">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">
<cixml version="1.0"><divert><destination>number|voicemail</destination></divert></cixml>
</AttributeValue>
</AttributeAssignment>
</Obligation>
</Obligations>
</Result>
</Response>
Is anything wrong in this?
01-29-2019 10:04 AM - edited 01-29-2019 10:09 AM
there are differences between the responses i posted as example and the responses you are using
i'm showing you the <cixml></cixml> elements without encoding, in your response it's encoded. Thats not really an issue, as long as the content is accurate.
but in your response messages you use different "attributeID" and "obligationID", can you match it to the examples i posted ? for each type of response.
FYI, the permit->continue and deny->reject response i have above have been tested and known to work on CUCM 11.5. The divert response i have, has not been tested. But i believe it should work or close to a working version. I used the documentation as reference.
01-30-2019 12:03 AM - edited 02-01-2019 02:39 AM
Hi @Mamdouh Elgamal,
Thanks for pointing out "attributeID" and "obligationID". I corrected it and again tried for Divert and Deny, I am getting busy tone only, so I am unable to judge whether it is right behavior or not.
I checked logs I am pasting below and trying to figure out errors (marked in Bold)-
Logs for Divert -
08935589.001 |02:22:33.562 |AppInfo |HttpHandler(2,38,2): - processHttpRes response from url (http://64.90.248.38:8899/Curri), directive (2), routing result code (0x0), Tid (33555124), xacml (<Response><Result><Decision>Permit</Decision><Obligations><Obligation FulfillOn="Permit" obligationId="divert.simple"><AttributeAssignment AttributeId="Policy:divert.simple"><AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"><cixml version="1.0"><divert><destination>1992</destination></divert></cixml></AttributeValue></AttributeAssignment></Obligation></Obligations></Result></Response>)
08935590.000 |02:22:33.562 |SdlSig |RoutingRes |wait |Da(2,100,211,1) |HttpHandler(2,100,38,2) |2,100,38,2.891^*^* |[R:N-H:0,N:0,L:0,V:0,Z:0,D:0] SsKey=0 Tid=33555124 routingResultCode=0 mDir=2 mAnnId= mResetHistory=0 callingNum= calledNum= callingName= calledName= mDest=1992 mReason=
08935590.001 |02:22:33.562 |AppInfo |Da::RoutingRes directive DIVERT , td =33555124, destination=[1992]
08935591.000 |02:22:33.562 |SdlSig |DaRes |setup_da |Cdcc(2,100,219,6666) |Da(2,100,211,1) |2,100,38,2.891^*^* |[R:N-H:0,N:0,L:0,V:0,Z:0,D:0] CI=36384110 Block ForegoPotentialMatches OnNetpatternUsage =3requestID =0
08935591.001 |02:22:33.562 |AppInfo |processCCMFeatureData: operationIeIdd=0
08935591.002 |02:22:33.562 |AppInfo |findUnfiredInterceptOnPattern numOfPatterns = 1
08935592.000 |02:22:33.563 |SdlSig |CcProceedReq |restart0 |MGCPpn9d(2,100,150,9) |Cdcc(2,100,219,6666) |2,100,38,2.891^*^* |[R:N-H:0,N:1,L:0,V:0,Z:0,D:0] CI=36384110 CI.branch=0 lPart= lPatt=
08935607.001 |02:22:33.563 |AppInfo |redirectOneSideCall PER RR, orig = 3, lrn = 3, current = 3
08935608.000 |02:22:33.563 |SdlSig |DaReq |wait |Da(2,100,211,1) |Cdcc(2,100,219,6666) |2,100,38,2.891^*^* |[R:N-H:0,N:0,L:0,V:0,Z:0,D:0] CI=36384110 Fqdn=pi=0si1 Cgpn=tn=2npi=1ti=1nd=6304241800pi=0si3 DialedNum=ti=1nd=1992pi=0si1 requestID=0 DigitAnalysisComplexity=0 CallingUser= IgnoreIntercept=0
08935608.001 |02:22:33.563 |AppInfo |Digit Analysis: star_DaReq: daReq.partitionSearchSpace(), filteredPartitionSearchSpaceString(), partitionSearchSpaceString()
08935608.002 |02:22:33.563 |AppInfo |Digit Analysis: star_DaReq: Matching Legacy Numeric, digits=1992
08935608.003 |02:22:33.563 |AppInfo |Digit Analysis: getDaRes data: daRes.ssType=[0] Intercept DAMR.sstype=[0], TPcount=[0], DAMR.NotifyCount=[0], DaRes.NotifyCount=[0]
08935608.004 |02:22:33.563 |AppInfo |Digit Analysis: getDaRes - Remote Destination [] isURI[1]
08935608.005 |02:22:33.563 |AppInfo |Digit analysis: patternUsage=2
08935608.006 |02:22:33.563 |AppInfo |Digit analysis: match(pi="1",fqcn="", cn="6304241800", plv="5", pss="", TodFilteredPss="", dd="1992",dac="0")
08935608.007 |02:22:33.563 |AppInfo |Digit analysis: potentialMatches=NoPotentialMatchesExist
08935609.000 |02:22:33.563 |SdlSig |DaRes |intercept_da |Cdcc(2,100,219,6666) |Da(2,100,211,1) |2,100,38,2.891^*^* |[R:N-H:0,N:0,L:0,V:0,Z:0,D:0] CI=36384110 Block NoPotentialMatchesExist OnNetpatternUsage =2requestID =0
08935609.001 |02:22:33.563 |Created | | |MatrixControl(2,100,142,4967) |Cdcc(2,100,219,6666) | |NumOfCurrentInstances: 1
08935609.002 |02:22:33.563 |AppInfo |Cdcc(0006666) - verifySymmetricPrecedenceAfterJoined - A.pl[5], B.pl[5]
08935610.000 |02:22:33.563 |SdlSig |SsRedirectCallErr |wait |PERManager(2,100,96,1) |Cdcc(2,100,219,6666) |2,100,38,2.891^*^* |[R:N-H:0,N:2,L:0,V:0,Z:0,D:0] Type=33554464 Key=676 Node=2 Party=36384110 RedirectCallErr=3
08935611.000 |02:22:33.563 |SdlSig |DropPartyReq |await_command |MatrixControl(2,100,142,4967) |Cdcc(2,100,219,6666) |2,100,38,2.891^*^* |[R:N-H:0,N:1,L:0,V:0,Z:0,D:0] ClearType= 0
08935612.000 |02:22:33.563 |SdlSig |SsRedirectCallErr |await_redirect_call_res |PER(2,100,97,676) |PERManager(2,100,96,1) |2,100,38,2.891^*^* |[R:N-H:0,N:1,L:0,V:0,Z:0,D:0] Type=33554464 Key=676 Node=2 Party=36384110 RedirectCallErr=3
08935613.000 |02:22:33.563 |SdlSig |MediaDisconnectRequest |wait |ConnectionManager(2,100,214,1) |MatrixControl(2,100,142,4967) |2,100,38,2.891^*^* |[R:N-H:0,N:1,L:0,V:0,Z:0,D:0] CI1=36384110 CI2=36384112 sc=0 disconnType=1 ssReason=0 clearType=0 IF1Created=F IF2Created=F party1.mMediaCoordinatorNodeId=0 party2.mMediaCoordinatorNodeId=0 party1.dtmCall= dtm.mode=0 dtm.CI=0 dtm.MTPForDTMF=F party2.dtmCall= dtm.mode=0 dtm.CI=0 dtm.MTPForDTMF=F reconnectPending=F forceStopCI=0
08935613.001 |02:22:33.563 |AppInfo |!!ERROR!! -ConnectionManager- wait_MediaDisconnectRequest :CI NOT FOUND IN TABLE,CI(36384110,36384112),discType=1,IFCreated(0,0),PID(0-0,0-0),IFHandling(0,0),MCNode(0,0)
08935614.000 |02:22:33.564 |SdlSig |PERStopInd |wait |PERManager(2,100,96,1) |PER(2,100,97,676) |2,100,38,2.891^*^* |[R:N-H:0,N:1,L:0,V:0,Z:0,D:0]
Logs for REJECT -
08959775.001 |02:50:04.651 |AppInfo |HttpHandler(2,38,2): - processHttpRes response from url (http://64.90.248.38:8899/Curri), directive (3), routing result code (0x100), Tid (33555126), xacml (<Response><Result><Decision>Deny</Decision><Status></Status><Obligations><Obligation FulfillOn="Deny" ObligationId="reject.simple"><AttributeAssignment AttributeId="Policy:reject.simple"><AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string"><cixml version="1.0"><reject></reject></cixml></AttributeValue></AttributeAssignment></Obligation></Obligations></Result></Response>)
08959776.000 |02:50:04.651 |SdlSig |RoutingRes |wait |Da(2,100,211,1) |HttpHandler(2,100,38,2) |2,100,38,2.895^*^* |[R:N-H:0,N:0,L:0,V:0,Z:0,D:0] SsKey=0 Tid=33555126 routingResultCode=256 mDir=3 mAnnId= mResetHistory=0 callingNum= calledNum= callingName= calledName= mDest=-1 mReason=
08959776.001 |02:50:04.651 |AppInfo |Da::RoutingRes directive REJECT,td =33555126
08959777.000 |02:50:04.651 |SdlSig |DaRes |setup_da |Cdcc(2,100,219,6674) |Da(2,100,211,1) |2,100,38,2.895^*^* |[R:N-H:0,N:0,L:0,V:0,Z:0,D:0] CI=36384128 Block ForegoPotentialMatches OnNetpatternUsage =3requestID =0
08959777.001 |02:50:04.651 |AppInfo |processCCMFeatureData: operationIeIdd=0
08959777.002 |02:50:04.651 |AppInfo |findUnfiredInterceptOnPattern numOfPatterns = 1
08959778.000 |02:50:04.651 |SdlSig |CcProceedReq |restart0 |MGCPpn9d(2,100,150,9) |Cdcc(2,100,219,6674)
08959786.000 |02:50:04.652 |SdlSig |SsCallInfoReq |wait |Cc(2,100,220,1) |PER(2,100,97,678) |2,100,38,2.895^*^* |[R:N-H:0,N:1,L:0,V:0,Z:0,D:0] Type=33554464 Key=678 NodeId=2 Party=36384128
08959789.001 |02:50:04.652 |AppInfo |MGCPHandler send msg SUCCESSFULLY to: 10.14.0.2
08959799.004 |02:50:04.653 |AppInfo |EnvProcessCdr::outuptCdrHeader
08959799.005 |02:50:04.653 |AppInfo |EnvProcessCdr::formatCdrFieldNames
08959799.006 |02:50:04.653 |AppInfo |EnvProcessCdr::formatCdrFieldTypes
08959799.007 |02:50:04.653 |AppInfo |EnvProcessCdr::formatCdrData
08959804.000 |02:50:04.666 |AppInfo |MGCPHandler received msg from: 10.14.0.2
Please suggest me, is anything wrong in it?
02-12-2019 03:04 PM
Hi i'm sorry for the late response, been out of office. I don't know if you are still having an issue.
for diverting, i would imagine the translation with the ECC profile has a CSS that can give you access to the extension you are trying to divert to
it seems like it sees no matches
08935608.006 |02:22:33.563 |AppInfo |Digit analysis: match(pi="1",fqcn="", cn="6304241800", plv="5", pss="", TodFilteredPss="", dd="1992",dac="0")
08935608.007 |02:22:33.563 |AppInfo |Digit analysis: potentialMatches=NoPotentialMatchesExist
as for deny, i dont recall if busy tone is the expected response.
but it seems to recognize the REJCT:
08959776.001 |02:50:04.651 |AppInfo |Da::RoutingRes directive REJECT,td =33555126
also make sure in you app, you are responding to the keep alive from cucm. it's a HEAD request, response should be a 200 okay and correct headers
02-12-2019 10:22 PM
Hi @Mamdouh Elgamal,
Thanks a lot for your response.
I don't know how I am getting POST request and able to ALLOW , DENY call, even though I don't send keep-alive header in response to HEAD request, i get the head request and sending and empty string with 200 OK status code.
Is this the reason I am not able to redirect a call?
Actually the problem is , when I pass keep-alive header , and status code 200 ok, and I track request and response through wireshark, it seems like it doesn't responding back to the UCM, it is just blocking somewhere when Head request comes in, that's why I changed response to just responding a blank string with status code 200 ok, it works fine for me.
so my head method is now and works fine -
[AcceptVerbs("GET", "HEAD")]
[HttpGet]
public string Head(HttpRequestMessage msg)
{
return "";
}
Previously it was stated as below and not working -
[AcceptVerbs("GET", "HEAD")]
[HttpGet]
[HttpHead]
public HttpResponseMessage Head(HttpRequestMessage msg)
{
HttpResponseMessage res = new HttpResponseMessage
{
Content = new StringContent("", Encoding.UTF8, "text/plain")
};
res.Headers.Add("Connection", "Keep-Alive");
res.Headers.Add("Keep-Alive", "timeout = 1000 max = 100");
return res;
}
Is anything wrong in it?
02-13-2019 05:28 AM
The headers i use for HEAD response are the following:
Content-type: "text/xml"
Connection: "Keep-Alive"
Keep-Alive: "timeout = 3000 max = 100"
02-13-2019 01:40 AM - edited 02-13-2019 02:00 AM
Can you please elaborate about this, as I am new for UCM and I am curious to know about it?
"for diverting, i would imagine the translation with the ECC profile has a CSS that can give you access to the extension you are trying to divert to"
Is there any configuration needed for diverting a call? If yes then can you please elaborate it?
In my case I am calling on the number which is triggers my application by translation pattern - 7814385 where my ECCP is attached, and CSS attached is "HAR-CSS".
So is there anything I need to do with HAR-CSS?
02-13-2019 05:38 AM
HAR-CSS needs to have a partition associated with the divert destination.
what's the divert destination in your message ?
<divert> <destination>"number x"</destination> </divert>
if "number x" is a directory number, then it must have a partition assigned to it. This partition needs to be added to HAR-CSS. Same applies if "number x" is a route pattern, cti port, etc..
02-13-2019 10:42 PM - edited 02-14-2019 12:37 AM
Hi @Mamdouh Elgamal,
Now, I am calling on a number 1 and diverting to 7814376 which is a translation pattern.
I am listening phone ring only, so not able to understand whether my call is redirected or not, when I checked logs, I did not find any error, it says "Forwarding - Created!"
In this case divert destination is an translation pattern which is 7814376.
Is it correct? Can we have a translation pattern as a destination?
And that translation pattern doesn't have partition assigned to it, it has CSS assigned which is HAR-CSS.
The thing is that translation pattern is translated to a Directory Number which is 10762.
Should my destination be a DN (10762) instead of translation pattern (7814376)?
Now, I also tried with putting a DN as a destination(10762) in CIXML, but no luck.
02-14-2019 04:23 AM
you can have any number as a destination, even if it's a translation pattern
can you divert to a phone that rings and you can answer it ? this might be an easier way to understand how things work.
original pattern with ECC profile --> divert to a phone number
02-21-2019 10:38 PM
Hi @Mamdouh Elgamal ,
No I can't do that, because number provided on which I am testing is from another country and I can test by calling on that number when they have night, on day time I can't test as they have their usual routine.
Is there any way by which I can test, I can get acknowledgement that yes call is redirected?
04-10-2019 04:03 AM
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide