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...
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário