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

本文关键字:获取 联系人 PartyList 插件 | 更新日期: 2023-09-27 18:14:45

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

因此,我需要在SMS活动的"to"字段中获取每个联系人的手机号码。这个字段的类型是: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<String>("subject");
Recipients = entity.GetAttributeValue<EntityCollection>("to");
for (int i = 0; i < Recipients.Entities.Count; i++)
{
  Entity ent= Recipients[i];
  string number = ent["MobilePhone"].ToString();    
}

但这是不工作,我认为ent变量不包含属性。

我也试过用ActivityParty编码,但也没有运气。

我希望你们中有人能帮我解决这个问题。

谢谢!

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

RecipientsActivityParty的列表,而不是联系人、帐户、... .的列表因此你必须阅读它的PartyId

EntityReference partyId = ent.GetAttributeValue<EntityReference>("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<String>("subject"); 
Recipients = entity.GetAttributeValue<EntityCollection>("to"); 
for (int i = 0; i < Recipients.Entities.Count; i++)
{
  ActivityParty ap = Recipients[i].ToEntity<ActivityParty>();
  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;
  ...
}