如何从派对列表中获取指南和手机?

How to get the Guids and mobilephone from a Party List?

我正在制作一项 windows 服务,该服务在创建自定义 activity SMS 消息时触发。这些程序将使用第三方短信服务提供商发送实际短信。

因此我需要为短信 activity 的 "To" 字段中的每个 contact/lead/user/account 获取移动 phone 号码。这是一个类型的字段:Party List。

此外,我还有另一个字段 ("new_msisdn"),如果 "to" 字段为空,我将使用它。(在此字段中,用户将直接输入 phone 个数字)

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

EntityCollection results =   CrmService.RetrieveMultiple(query);           
string msisdn;
string newmessage;
Entity entity;
int encode;
bool flash;
res = new Message[results.Entities.Count];
if (results != null && results.Entities.Count > 0)
{                
  try
      {
        for (int i = 0; i < results.Entities.Count; i++)
           {
             entity = results.Entities[i];
              msisdn = (string)entity["new_msisdn"];
 // I have to add an condition here to check if "to" is not empty , then get mobilephones.  
              newmessage = (string)entity["new_message"];
              encode = ((OptionSetValue)entity["new_messagetype"]).Value;
              flash = (bool)entity["new_flashsms"];
              res[i] = new Message();
              res[i].crmId = entity.Id;
              res[i].senderNumber = msisdn;
              res[i].sendDate = DateTime.Now;
              res[i].message = newmessage;
              if (encode == 1)
              res[i].encoding = 1;
              else
              res[i].encoding = 2;
              if (flash)
              res[i].flash = 2;
              else res[i].flash = 1;
            }
        }

我不知道该怎么做。对了,我用的是CRM 2015.

尝试使用类似下面的内容。

if(entity.Attributes.Contains("to"))
{
 EntityCollection to=(EntityCollection)entitiy["to"];
 foreach(Entity toEntity in to.Entities)
  {
    //You will get each to field record here. 
    //Use that information to get the mobile numbers of respective users.
    Guid Id=toEntity.Id;
    //Below code mostly will return string.empty.
    //You may have to query CRM to get mobile number for respective contacts.
    string mobileNumber=toEntity.Attributes.Contains("mobilenumber")?toEntity["mobilenumber"].ToString():string.Empty;
  }
 }

希望我已经解决了您的问题。如果您对此有任何疑问,请告诉我们。

最好的做法是在使用特定属性之前检查属性是否已在实体对象中可用。