quinta-feira, 22 de novembro de 2012

Microsoft CRM Segredos de programação - Dicas para desenvolvedores


Este artigo é para avançados do Microsoft CRM SDK desenvolvedores de C #. Ele descreve a técnica de programação SQL direto, quando SDK não tem a funcionalidade para fazer o trabalho.

Introdução. Parece que a Microsoft CRM torna-se mais e mais popular, em parte por causa dos músculos da Microsoft por trás dele. Agora ele é voltado para todo o espectro de clientes do mercado horizontal e vertical. Ele é totalmente integrado com outros produtos Microsoft Business Solutions como o Microsoft Great Plains, Solomon, Navision (os dois últimos em andamento).
Aqui, descrevemos a técnica de criação fechado atividade e-mail usando o MS CRM SDK e direta de programação SQL.

Algo de imagens como esta. Você precisa lidar com e-mails recebidos antes de ser confirmada para banco de dados MS Exchange. Você precisa analisar se e-mails recebidos não tem GUID em sua Assunto (GUID permitirá MS CRM Exchange Connector para mover e-mail para o Microsoft CRM e anexá-lo ao contato, Conta ou chumbo) - então você ainda precisa de pesquisa em MS CRM caso, se uma das contas, contatos ou leads tem endereço electrónico que combina com o endereço de e-mail do remetente - então você precisa criar fechado atividade e-mail no MS CRM, anexado ao objeto e colocados em fila geral.

Como criar MS manipulador de câmbio está fora do escopo, consulte este artigo:


Agora, o código abaixo é clássica MS CRM SDK e vai criar-mail atividade:

public Guid CreateEmailActivity (Guid userId, objectType int, objectId Guid, string MAILFROM, CRMUser crmUser, sujeito string, corpo string) {
try {

log.Debug ("Prepare-se para Atividade Correio Criação");

/ / Proxy BizUser objeto

Microsoft.Crm.Platform.Proxy.BizUser bizUser = new Microsoft.Crm.Platform.Proxy.BizUser ();

Credenciais ICredentials NetworkCredential = new (sysUserId, sysPassword, sysDomain);

bizUser.Url = crmDir + "BizUser.srf";

bizUser.Credentials = credenciais;

Microsoft.Crm.Platform.Proxy.CUserAuth USERAUTH bizUser.WhoAmI = ();

/ / Proxy CRMEmail objeto

Microsoft.Crm.Platform.Proxy.CRMEmail e-mail = new Microsoft.Crm.Platform.Proxy.CRMEmail ();

email.Credentials = credenciais;

email.Url = crmDir + "CRMEmail.srf";

/ / Configure a seqüência XML para a atividade

corda strActivityXml = "";

strActivityXml + = "";

strActivityXml + = "";

strActivityXml + = "";

strActivityXml + = userId.ToString ("B") + "";

strActivityXml + = "";

/ / Configure a seqüência de XML para as partes de atividade

corda strPartiesXml = "";

strPartiesXml + = "";

strPartiesXml + = "" + crmUser.GetEmailAddress () + "";

strPartiesXml + = "" + Microsoft.Crm.Platform.Types.ObjectType.otSystemUser.ToString () + "";

strPartiesXml + "+ crmUser.GetId ToString (). =" ("B") + "";

strPartiesXml + = "";

strPartiesXml + = Microsoft.Crm.Platform.Types.ACTIVITY_PARTY_TYPE.ACTIVITY_PARTY_TO_RECIPIENT.ToString ();

strPartiesXml + = "";

strPartiesXml + = "";

strPartiesXml + = "";

strPartiesXml + = "" + MAILFROM + "";

if (objectType == Microsoft.Crm.Platform.Types.ObjectType.otAccount) {

strPartiesXml + = "" + Microsoft.Crm.Platform.Types.ObjectType.otAccount.ToString () + "";

}

else if (objectType == Microsoft.Crm.Platform.Types.ObjectType.otContact) {

strPartiesXml + = "" + Microsoft.Crm.Platform.Types.ObjectType.otContact.ToString () + "";

}

else if (objectType == Microsoft.Crm.Platform.Types.ObjectType.otLead) {

strPartiesXml + = "" + Microsoft.Crm.Platform.Types.ObjectType.otLead.ToString () + "";

}

strPartiesXml + = "" + objectId.ToString ("B") + "";

strPartiesXml + = "";

strPartiesXml + = Microsoft.Crm.Platform.Types.ACTIVITY_PARTY_TYPE.ACTIVITY_PARTY_SENDER.ToString ();

strPartiesXml + = "";

strPartiesXml + = "";

strPartiesXml + = "";

log.Debug (strPartiesXml);

/ / Cria o objeto de e-mail

Guid emailId = new Guid (email.Create (USERAUTH, strActivityXml, strPartiesXml));

voltar emailId;
}
catch (System.Web.Services.Protocols.SoapException e) {
log.Debug ("ErrorMessage:" + e.Message + "" + + e.Detail.OuterXml "Fonte:" + e.Source);
}
catch (Exception e) {
log.Debug (e.Message + "rn" e.StackTrace +);
}
return new Guid ();
}

Agora eu gostaria de compartilhar com vocês o truque - não existe um método para fazer esta atividade fechada em MS CRM SDK 1.2 (se alguém sabe a um - Eu lhe devo aquário pequeno bolso - sorriso!). Obviamente a Microsoft não suporta se você programação SQL direto ignorando SDK. No entanto, eu diria que esta não é a criação de objetos diretos - isto é, em vez de correção bandeiras. Então aqui é o que temos - este procedimento irá fazer o trabalho e fazer atividade fechada:

públicos UpdateActivityCodes void (Guid emailId) {
try {

OleDbCommand comando = conn.CreateCommand ();

command.CommandText = "UPDATE SET ActivityBase DirectionCode =, StateCode =, PriorityCode = ONDE ActivityId = (?) (?) (?) (?)";

command.Prepare ();

command.Parameters.Add (OleDbParameter novo ("DirectionCode", Microsoft.Crm.Platform.Types.EVENT_DIRECTION.ED_INCOMING));

command.Parameters.Add (OleDbParameter novo ("StateCode", Microsoft.Crm.Platform.Types.ACTIVITY_STATE.ACTS_CLOSED));

command.Parameters.Add (OleDbParameter novo ("PriorityCode", Microsoft.Crm.Platform.Types.PRIORITY_CODE.PC_MEDIUM));

command.Parameters.Add (OleDbParameter novo ("ActivityId", emailId));

log.Debug ("Prepare-se para atualizar o código de atividade emailId.ToString" + ("B") + "em ActivityBase");

command.ExecuteNonQuery ();

}

catch (Exception e) {

log.Debug (e.Message + "rn" e.StackTrace +);

}
}

Feliz de personalização! se você quer que façamos o trabalho - dar-nos uma chamada 1-866-528-0577! help@albaspectrum.com...

Nenhum comentário:

Postar um comentário