i have scenario need trigger plugin on ribbon button click, have setup commands , buttons, have created custom action,that registered in plugin reg tool wire event. have tested ribbon button simple hello world, sure basics dine , set. issue lies when try call function soap invocation. here code below.
javascript
function executephonecall(requestname, refreshpage, stringparameter) { // creating request xml calling action var requestxml = "" if (stringparameter == null) { requestxml += "<s:envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">"; requestxml += "<s:body>"; requestxml += "<execute xmlns=\"http://schemas.microsoft.com/xrm/2011/contracts/services\"xmlns:i=\"http://www.w3.org/2001/xmlschema-instance\">"; requestxml += "<request xmlns:a=\"http://schemas.microsoft.com/xrm/2011/contracts\">"; requestxml += "<a:parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/system.collections.generic\">"; requestxml += " <a:keyvaluepairofstringanytype>"; requestxml += " <b:key>target</b:key>"; requestxml += " <b:value i:type=\"a:entityreference\">"; requestxml += " <a:id>" + xrm.page.data.entity.getid() + "</a:id>"; requestxml += " <a:logicalname>" + xrm.page.data.entity.getentityname() + "</a:logicalname>"; requestxml += " <a:name i:nil=\"true\" />"; requestxml += " </b:value>"; requestxml += " </a:keyvaluepairofstringanytype>"; requestxml += " </a:parameters>"; requestxml += " <a:requestid i:nil=\"true\" />"; requestxml += " <a:requestname>" + requestname + "</a:requestname>"; requestxml += " </request>"; requestxml += " </execute>"; requestxml += " </s:body>"; requestxml += "</s:envelope>"; } else { requestxml += "<s:envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">"; requestxml += " <s:body>"; requestxml += " <execute xmlns=\"http://schemas.microsoft.com/xrm/2011/contracts/services\"xmlns:i=\"http://www.w3.org/2001/xmlschema-instance\">"; requestxml += " <request xmlns:a=\"http://schemas.microsoft.com/xrm/2011/contracts\">"; requestxml += " <a:parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/system.collections.generic\">"; requestxml += " <a:keyvaluepairofstringanytype>"; requestxml += " <b:key>target</b:key>"; requestxml += " <b:value i:type=\"a:entityreference\">"; requestxml += " <a:id>" + xrm.page.data.entity.getid() + "</a:id>"; requestxml += " <a:logicalname>" + xrm.page.data.entity.getentityname() + "</a:logicalname>"; requestxml += " <a:name i:nil=\"true\" />"; requestxml += " </b:value>"; requestxml += " </a:keyvaluepairofstringanytype>"; requestxml += " <a:keyvaluepairofstringanytype>"; requestxml += " <b:key>data</b:key>"; requestxml += " <b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/xmlschema\">" + stringparameter + "</b:value>"; requestxml += " </a:keyvaluepairofstringanytype>"; requestxml += " </a:parameters>"; requestxml += " <a:requestid i:nil=\"true\" />"; requestxml += " <a:requestname>" + requestname + "</a:requestname>"; requestxml += " </request>"; requestxml += " </execute>"; requestxml += " </s:body>"; requestxml += "</s:envelope>"; } var req = new xmlhttprequest(); req.open("post", getserviceurl(), false) req.setrequestheader("accept", "application/xml, text/xml, */*"); req.setrequestheader("content-type", "text/xml; charset=utf-8"); req.setrequestheader("soapaction", "http://schemas.microsoft.com/xrm/2011/contracts/services/iorganizationservice/execute"); req.send(requestxml); //refresh page if request successful. if (req.status == 200) { if (refreshpage) { refreshform() } } else { xrm.utility.alertdialog(req.statustext + "\n" + req.responsexml.getelementsbytagname("faultstring")[0].textcontent); } } function refreshform() { xrm.utility.openentityform(xrm.page.data.entity.getentityname(), xrm.page.data.entity.getid()); } executephonecall("new_activatephonecall", true, "");
i dont see defined function getserviceurl()
req.open("post", getserviceurl(), false) here example how ;)
function executeaction(entityid, entityname, requestname) { // creating request xml calling action var requestxml = "" requestxml += "<s:envelope xmlns:s="\"http://schemas.xmlsoap.org/soap/envelope/\"">"; requestxml += " <s:body>"; requestxml += " <execute xmlns="\"http://schemas.microsoft.com/xrm/2011/contracts/services\"" xmlns:i="\"http://www.w3.org/2001/xmlschema-instance\"">"; requestxml += " <request xmlns:a="\"http://schemas.microsoft.com/xrm/2011/contracts\"">"; requestxml += " <a:parameters xmlns:b="\"http://schemas.datacontract.org/2004/07/system.collections.generic\"">"; requestxml += " <a:keyvaluepairofstringanytype>"; requestxml += " <b:key>target</b:key>"; requestxml += " <b:value i:type="\"a:entityreference\"">"; requestxml += " <a:id>" + entityid + "</a:id>"; requestxml += " <a:logicalname>" + entityname + "</a:logicalname>"; requestxml += " <a:name i:nil="\"true\"">"; requestxml += " </a:name></b:value>"; requestxml += " </a:keyvaluepairofstringanytype>"; requestxml += " </a:parameters>"; requestxml += " <a:requestid i:nil="\"true\"">"; requestxml += " <a:requestname>" + requestname + "</a:requestname>"; requestxml += " </a:requestid></request>"; requestxml += " </execute>"; requestxml += " </s:body>"; requestxml += "</s:envelope>"; var req = new xmlhttprequest(); req.open("post", getclienturl(), false) req.setrequestheader("accept", "application/xml, text/xml, */*"); req.setrequestheader("content-type", "text/xml; charset=utf-8"); req.setrequestheader("soapaction", "http://schemas.microsoft.com/xrm/2011/contracts/services/iorganizationservice/execute"); req.send(requestxml); //get response crm execute method //var response = req.responsexml.xml; } function getclienturl() { if (typeof xrm.page.context == "object") { clienturl = xrm.page.context.getclienturl(); } var servicepath = "/xrmservices/2011/organization.svc/web"; return clienturl + servicepath; } next, need create function execute our action , pass record’s guid, name of entity action registered against, , action’s name (requestname, in case).
function openphonecall() { var entityid = xrm.page.data.entity.getid(); var entityname = "phonecall"; var requestname = "new_reactivatephonecall"; executeaction(entityid, entityname, requestname); window.location.reload(true); } http://www.plusconsulting.com/blogs/lists/posts/post.aspx?id=56
or
Comments
Post a Comment