Получить идентификатор маркетингового списка по имени

dotcentric-samb спросил: 28 апреля 2018 в 09:18 в: c#

Я пытаюсь получить идентификатор маркетингового списка, созданного в Microsoft Dynamics, на основе имени списка. Затем я буду использовать идентификатор для добавления контактов crm в список (это я могу сделать правильно, используя идентификатор списка)

Я не могу найти никаких инструкций в документации, которая объясняет, как это сделать. Я пробовал следующий код, но я получаю сообщение об ошибке, что сущность с таким именем не существует:

    var request = new RetrieveRequest();
    request.Target = new EntityReference("new list 1", listId);
    RetrieveResponse response = _organizationService.Execute(request) as RetrieveResponse;

То, что я в конечном итоге пытаюсь сделать, - это позволить администратору crm для определения списка маркетинга, к которому должен быть добавлен пользователь, когда они заполняют форму рассылки на нашем веб-сайте. Я думаю, что будет слишком много, чтобы попросить их найти руководство маркетингового списка (мне потребовалось немного работы, чтобы найти его самостоятельно).

может ли кто-нибудь поделиться некоторым кодом, чтобы либо получить идентификатор список, используя имя списка в качестве идентификатора или сообщите мне, возможно ли добавить контакт в список, используя имя списка вместо идентификатора?

2 ответа

Есть решение
Arun Vinoth ответил: 28 апреля 2018 в 10:56

Чтобы получить запись сущности с помощью RetrieveRequest, имя схемы этого объекта (таблица DB) должно передаваться как первый параметр и первичный ключ (GUID) как второй. Для списка маркетинга это list & listid. Вы должны также упомянуть ColumnSet.

request.Target = new EntityReference("list", listId);

Но для достижения того, что вы хотите, вам нужно использовать либо querybyattribute, либо queryexpression, тогда RetrieveMultiple поможет вам получить Идентификатор из имени списка.

FilterExpression filter = new FilterExpression();
filter.FilterOperator = LogicalOperator.And;
filter.AddCondition(new ConditionExpression("name", ConditionOperator.Equal, "new list 1"));
QueryExpression query = new QueryExpression("list");
query.Criteria.AddFilter(filter);var result = Context.SystemService.RetrieveMultiple(query);

После этого используйте AddListMembersListRequest или AddMemberListRequest для добавления членов в этот список.

// Add a list of contacts to the marketing list.
var addMemberListReq = new AddListMembersListRequest
{
    MemberIds = new[] { _contactIdList[0], _contactIdList[2] },
    ListId = listId
};_serviceProxy.Execute(addMemberListReq);
Dave Clark ответил: 29 апреля 2018 в 05:47

Следующий код получает все списки в Dynamics с помощью name "new list 1". Затем он сохраняет идентификатор первого списка, возвращаемого, если найдено одно или несколько совпадений, или Guid.Empty, если совпадений не найдено. В вашем сценарии всегда должно быть одно и только одно совпадение.

var query = new QueryExpression
{
    EntityName = "list",
    ColumnSet = new ColumnSet(false)
};query.Criteria.AddCondition("name", ConditionOperator.Equal, "new list 1";var matchingLists = _organizationService.RetrieveMultiple(query);var defaultListId = matchingLists?.Entities.FirstOrDefault()?.Id ?? Guid.Empty;