如何从插件中的PartyList获取联系人指南?

我正在创建一个插件,触发自定义活动SMS的创建消息。 这些插件将使用第三方短信服务提供商发送实际的短信。

因此,我需要在SMS活动的“收件人”字段中获取每个联系人的手机号码。 这是一个类型的字段:PartyList。

我目前正在使用以下代码:

EntityCollection Recipients; Entity entity = (Entity) context.InputParameters["Target"]; IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); Content = entity.GetAttributeValue("subject"); Recipients = entity.GetAttributeValue("to"); for (int i = 0; i < Recipients.Entities.Count; i++) { Entity ent= Recipients[i]; string number = ent["MobilePhone"].ToString(); } 

但这不起作用,我认为ent变量不包含任何属性。

我也尝试使用ActivityParty进行编码,但也没有运气。

我希望你们中的某个人可以帮助我。

谢谢!

RecipientsActivityParty的列表,而不是联系人,帐户,…. 因此,您必须阅读其PartyId

 EntityReference partyId = ent.GetAttributeValue("partyid"); 

有了这些信息,您必须查找与此partyID有关的记录。 它可以是联系人,帐户,系统用户……您将获得此信息

 var partyType = partyId.LogicalName; 

然后,您可以检索此记录的记录以读取该数字。

这是我最终如何做到的:

 EntityCollection Recipients; Entity entity = (Entity) context.InputParameters["Target"]; IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService( typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory .CreateOrganizationService(context.UserId); Content = entity.GetAttributeValue("subject"); Recipients = entity.GetAttributeValue("to"); for (int i = 0; i < Recipients.Entities.Count; i++) { ActivityParty ap = Recipients[i].ToEntity(); String contactid = ap.PartyId.Id.ToString(); Contact c = (Contact) service.Retrieve( Contact.EntityLogicalName, ap.PartyId.Id, new ColumnSet(new string[]{ "mobilephone" })); String mobilephone = c.MobilePhone; ... }