First need to do the early binding and add it to the classlibrary.
then give the required references:
then the coding is:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Xrm;
using System.Diagnostics;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System.Windows.Browser;
using System.Net;
using System.IO;
using System.ServiceModel.Description;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Sdk.Discovery;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Client;
namespace mop.men.SendSMS
{
public class SendingSms : IPlugin
{
public const string AUTHORIZE = "http:\link";
string ret = null;
private OrganizationServiceProxy _serviceProxy;
public void Execute(IServiceProvider serviceProvider)
{
IPluginExecutionContext context = (IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
Entity entity;
// Check if the input parameters property bag contains a target
// of the create operation and that target is of type Entity.
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
// Obtain the target business entity from the input parameters.
entity = (Entity)context.InputParameters["Target"];
// Verify that the entity represents a contact.
if (entity.LogicalName != "new_sms")
{
return;
}
}
else
{
return;
}
try
{
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
Entity entity1 = (Entity)context.InputParameters["Target"];
ColumnSet cols = new ColumnSet(
new String[] { "subject", "new_phonenumber" });
var contact = service.Retrieve("new_sms", entity1.Id, cols);
string subjects = contact["subject"].ToString();
string phonenumber = contact["new_phonenumber"].ToString();
ret = AUTHORIZE + "?no=" + phonenumber + "&msg=" + subjects;
// WebRequest request = WebRequest.Create("your url comes here with parameters and stuf like in IE");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ret);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
SetStateRequest setStatePhoneCall = new SetStateRequest
{
EntityMoniker = new EntityReference(new_sms.EntityLogicalName, entity1.Id),
State = new OptionSetValue((int)slk_smsState.Completed),
Status = new OptionSetValue(-1)
};
service.Execute(setStatePhoneCall);
//Console.WriteLine("PhoneCall entity instance has been marked as completed.");
//PhoneCallState.Completed
}
catch (FaultException<OrganizationServiceFault> ex)
{
throw new InvalidPluginExecutionException("An error occurred in the plug-in.", ex);
}
}
}
}
then give the required references:
then the coding is:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Xrm;
using System.Diagnostics;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System.Windows.Browser;
using System.Net;
using System.IO;
using System.ServiceModel.Description;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Sdk.Discovery;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Client;
namespace mop.men.SendSMS
{
public class SendingSms : IPlugin
{
public const string AUTHORIZE = "http:\link";
string ret = null;
private OrganizationServiceProxy _serviceProxy;
public void Execute(IServiceProvider serviceProvider)
{
IPluginExecutionContext context = (IPluginExecutionContext)
serviceProvider.GetService(typeof(IPluginExecutionContext));
Entity entity;
// Check if the input parameters property bag contains a target
// of the create operation and that target is of type Entity.
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
// Obtain the target business entity from the input parameters.
entity = (Entity)context.InputParameters["Target"];
// Verify that the entity represents a contact.
if (entity.LogicalName != "new_sms")
{
return;
}
}
else
{
return;
}
try
{
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
Entity entity1 = (Entity)context.InputParameters["Target"];
ColumnSet cols = new ColumnSet(
new String[] { "subject", "new_phonenumber" });
var contact = service.Retrieve("new_sms", entity1.Id, cols);
string subjects = contact["subject"].ToString();
string phonenumber = contact["new_phonenumber"].ToString();
ret = AUTHORIZE + "?no=" + phonenumber + "&msg=" + subjects;
// WebRequest request = WebRequest.Create("your url comes here with parameters and stuf like in IE");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ret);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
SetStateRequest setStatePhoneCall = new SetStateRequest
{
EntityMoniker = new EntityReference(new_sms.EntityLogicalName, entity1.Id),
State = new OptionSetValue((int)slk_smsState.Completed),
Status = new OptionSetValue(-1)
};
service.Execute(setStatePhoneCall);
//Console.WriteLine("PhoneCall entity instance has been marked as completed.");
//PhoneCallState.Completed
}
catch (FaultException<OrganizationServiceFault> ex)
{
throw new InvalidPluginExecutionException("An error occurred in the plug-in.", ex);
}
}
}
}
and register this plug in for the create
then doing customize in ribbon area for sending button:
<CustomAction Id="ss_SendSMS" Location="Mscrm.Form.new_sms.MainTab.Save.Controls._children" Sequence="1">
<CommandUIDefinition>
<Button Id="btn_newSendSMS" Command="Mscrm.RunSomeJS" LabelText="Send SMS" ToolTipTitle="Send SMS" ToolTipDescription="Sends the SMS" TemplateAlias="o1" Image16by16="/_imgs/SFA/SendAsEmail_16.png" Image32by32="/_imgs/SFA/SendAsEmail_32.png" />
</CommandUIDefinition>
</CustomAction>
<CommandDefinition Id="Mscrm.RunSomeJS">
<EnableRules> </EnableRules>
<DisplayRules />
<Actions>
<JavaScriptFunction FunctionName="SendSMS" Library="$Webresource:new_sendingsms"/>
</Actions>
</CommandDefinition>
the Java script is :
function SendSMS()
{
Xrm.Page.data.entity.save("save");
}
No comments:
Post a Comment