Динамика

Портал обслуживания клиентов Dynamics 365: Проблемы и решения - часть 1

Diogo GouveiaProducts and Solutions, Technical Leave a Comment

Служба поддержки клиентов Microsoft Dynamics 365 предоставляет набор инструментов, позволяющих организациям оптимизировать управление обслуживанием клиентов. Помимо повышения качества обслуживания клиентов, эта платформа также может помочь в отслеживании коммуникаций и внутренних процессов поддержки, принося пользу как компаниям, так и их клиентам.

Однако, хотя портал обслуживания клиентов Microsoft Dynamics 365 может быть полезен, его настройка для удовлетворения уникального набора требований может оказаться сложной задачей.

В Connecting Software мы использовали Служба поддержки клиентов Microsoft Dynamics 365 чтобы построить наш Портал поддержки. Поскольку у нас было конкретное видение того, чего мы хотели достичь с помощью нашего портала поддержки, в этой статье мы подробно опишем процесс его создания на основе внедрения Dynamics 365 Customer Service, а также покажем препятствия, с которыми мы столкнулись на этом пути, и решения, которые мы нашли, чтобы лучше их преодолеть.

Особенности портала обслуживания клиентов Dynamics 365

Портал обслуживания клиентов Dynamics 365 позволяет создать централизованную База знаний, который является одной из ключевых особенностей нашего портала поддержки. Он содержит достоверную информацию о распространенных случаях использования наших продуктов, которая легко доступна для клиентов.
База знаний

В тех случаях, когда наши клиенты не могут найти ответ на интересующий их вопрос в Базе знаний, Портал поддержки клиентов Dynamics 365 позволяет клиентам создавать случаи поддержки. С точки зрения клиента, это две основные особенности нашего портала поддержки.

Однако для нас главным преимуществом является возможность генерировать информацию об использовании Портала поддержки и наших программных решений. Например, если мы заметим, что поступило несколько обращений по поводу конкретной проблемы с определенным продуктом, мы можем перенаправить наши ресурсы для быстрого решения проблемы. Если это просто часто задаваемый вопрос, мы можем добавить его в базу знаний нашего Портала поддержки, чтобы сделать информацию доступной для любого клиента с такой же проблемой.

Таким образом, портал обслуживания клиентов Dynamics 365 выступает в качестве централизованного инструмента для оценки качества нашей продукции, повышения удовлетворенности клиентов, отслеживания взаимодействия с клиентами, обеспечения доступа к информации, позволяющей нам продолжать совершенствоваться, адаптации планирования ресурсов и даже для создания ценной внутренней отчетности, например, стоимости поддержки каждого продукта.

Теперь давайте посмотрим на препятствия, с которыми мы столкнулись при внедрении нашего портала поддержки.

Происшествие #1 - Существующая клиентская база

Наличие существующей клиентской базы, когда мы начали работу над порталом поддержки, оказалось проблематичным.

Когда клиент впервые регистрируется на нашем портале, в Microsoft Dynamics 365 (CRM), то есть в нашей базе данных клиентов, создается дубликат контакта. Microsoft Dynamics 365 для обслуживания клиентов не связывает дубликат контакта с реальным контактом клиента в нашей базе данных клиентов, таким образом, информация не централизуется в одной записи. Это означало, что наши случаи поддержки также не были связаны с контактом, связанным с учетной записью, с которой у нас установлены отношения. Вместо этого они были связаны с пустыми дублирующими контактами, созданными в результате регистрации на портале поддержки.

Эту проблему можно было бы решить путем автоматической отправки приглашения, которое успешно связало бы дублированные контакты с контактами реального клиента в нашей CRM, но это нужно было бы сделать с самого начала создания клиентской базы. Кроме того, несмотря на то, что в теории это работает, это не является реалистичным решением из-за низкой частоты открытия электронных писем. Для примера, по данным Mailchimp, средний показатель открываемости электронных писем во всех отраслях составил всего лишь 21.33% в 2021 году.

Возможно, вы также думаете, что объединения записей по умолчанию было бы достаточно, но это не так, поскольку объединение информации записей в один контакт приведет к потере доступа к нашему Порталу поддержки.

Решение - плагин Dynamics 365

Другим способом решения этой проблемы было бы создание пользовательского плагина Microsoft Dynamics 365 (в мире Power Apps его называют Solution), что мы и сделали. Созданный нами плагин сканирует, существует ли уже пользователь в нашей CRM во время регистрации на портале поддержки.

Возможны два исхода: если пользователь действительно существует в нашей базе данных, плагин распознает это совпадение и объединяет информацию в обеих записях в один контакт, при этом пользователь не теряет доступ к порталу обслуживания клиентов Dynamics 365, то есть к нашему порталу поддержки. Второй контакт, не содержащий никакой информации на данный момент, автоматически удаляется созданным нами плагином, который еженедельно запускает отдельное задание Bulk Delete для очистки записей.

Если пользователь, подписавшийся на Портал, не существует в нашей CRM, плагин делает кое-что другое. Поскольку мы являемся компанией B2B, электронные адреса клиентов в нашей базе данных имеют домен, характерный для организаций, в которых они работают. Поэтому, если пользователь, которого нет в нашей CRM, хочет зарегистрироваться на нашем Портале, плагин ищет в нашей CRM домен электронной почты этого нового пользователя. В случае совпадения, в CRM автоматически создается новый контакт, поскольку этот пользователь принадлежит к компании, с которой мы уже знакомы. И наоборот, если в нашей базе данных нет совпадений с доменом электронной почты клиента, регистрирующегося на Портале поддержки, мы получаем внутреннее уведомление о попытке регистрации и связываемся с ним для получения дополнительной информации, если это необходимо.

Вы можете найти часть кода для нашего плагина Microsoft Dynamics 365 через эта ссылка. Не стесняйтесь протягивать руку к нам, если вам нужна полная версия!

      public void Execute(IServiceProvider serviceProvider)
    {
        var tracingService = (ITracingService) serviceProvider.GetService(typeof(ITracingService));
        var context = (IPluginExecutionContext) serviceProvider.GetService(typeof(IPluginExecutionContext));
        var serviceFactory = (IOrganizationServiceFactory) serviceProvider.GetService(typeof(IOrganizationServiceFactory));
        var service = serviceFactory.CreateOrganizationService(context.UserId);
        if (!context.InputParameters.Contains("Target") || !(context.InputParameters["Target"] is Entity))
        {
            return;
        }

        var entity = (Entity) context.InputParameters["Target"];
        var isLoginEnabled = HasLoginEnabled(entity);
        
        if (isLoginEnabled == false)
        {
            return;
        }

        try
        {
            var emailAddress = (string) entity["emailaddress1"];
            var contactsWithSameEmailAddress = GetContactsByEmailAddress(service, entity.Id, emailAddress);
            if (contactsWithSameEmailAddress.Entities.Count > 0)
            {
                var hasLoginEnabled = HasLoginEnabled(contactsWithSameEmailAddress.Entities[0]);
                if (hasLoginEnabled)
                {
                    throw new InvalidPluginExecutionException(OperationStatus.Failed,
                        "Пользователь уже существует. Попробуйте использовать другой адрес электронной почты для регистрации или войдите в существующую учетную запись.");
                }

                var mergeRequest = new MergeRequest
                {
                    SubordinateId = entity.Id,
                    Target = new EntityReference("contact", contactsWithSameEmailAddress.Entities[0].Id),
                    UpdateContent = GetUpdateContent(entity)
                };
                var _ = (MergeResponse) service.Execute(mergeRequest);
                entity[CustomAttributeName] = true;
                service.Update(entity);
            }
            else
            {
                var domain = emailAddress.Split('@')[1];
                if (_publicDomains.Contains(domain))
                {
                    SendEmailAndDeactivateContact(service, tracingService, entity);
                }
                else
                {
                    var contactsWithSameDomain = GetContactsByDomain(service, entity.Id, domain);
                    if (contactsWithSameDomain.Entities.Count > 0)
                    {
                        entity["parentcustomerid"] = contactsWithSameDomain.Entities[0]["parentcustomerid"];
                        service.Update(entity);
                    }
                    else
                    {
                        SendEmailAndDeactivateContact(service, tracingService, entity);
                    }
                }
            }
        }
        catch (FaultException ex)
        {
            throw new InvalidPluginExecutionException("Произошла ошибка в ContactPostOperationPlugin.", ex);
        }
    }
Код закрытия

Наш интернет-магазин

Нам также пришлось создать еще одну интеграцию для нашего Интернет-магазинПоскольку мы разрешаем доступ пользователя к нашему порталу обслуживания клиентов Microsoft Dynamics 365 только тогда, когда мы можем как-то сопоставить его с записью в нашей CRM, или когда мы выяснили, кто он такой.
Image
Не все, кто размещает заказ в интернет-магазине, являются контактами в нашей CRM, но если они покупают у нас решение, им может потребоваться поддержка независимо от этого. Разработанная нами интеграция получает данные от пользователя, совершающего покупку через веб-магазин, и создает зацепку в нашей базе данных клиентов. Затем эта зацепка помечается как "квалифицированная", что автоматически создает контакт и учетную запись в CRM и дает им доступ к нашему порталу.

Возникновение #2 - Сообщение об ошибке в службе поддержки клиентов D365

Пользователи, которые еще не были зарегистрированы на нашем портале поддержки клиентов Dynamics 365, при попытке входа получали недостоверное сообщение об ошибке. В этом сообщении говорилось, что их пароль неверен, вместо того чтобы сообщить им, что их электронная почта не зарегистрирована на портале поддержки.
Возвращаясь к нашему предыдущему случаю, когда пользователь регистрируется на Портале поддержки, в нашей CRM создается дублирующая запись. Клиенты, не зарегистрированные на портале, не имеют такой дублированной записи, поэтому система не может прочитать запись, содержащую информацию об их входе в систему. Система обновляет поле "ввод имени пользователя" в CRM, которое не содержит никакой информации. Это заставляет службу поддержки Microsoft Dynamics 365 предположить, что у пользователя уже есть логин, и выдает сообщение о том, что его пароль неверен.

Решение - плагин Dynamics 365

Как и в случае с решением проблемы, связанной с наличием существующей базы данных клиентов, лучшим подходом к борьбе с этим сообщением об ошибке было использование Microsoft Dynamics 365 Plugin/Solution.

Фактически, мы использовали тот же плагин Dynamics 365, который уже был у нас, только с небольшими изменениями. Наша команда разработчиков зарегистрировала еще один шаг плагина, который, по сути, является командой, определяющей и останавливающей ошибку, которую допускает система, обновляя поле "ввод имени пользователя", когда в нем нет никакой информации. Затем этот шаг плагина исправляет сообщение об ошибке, которое показывается пользователю, пытающемуся получить доступ к порталу, заявляя, что у него нет логина для портала поддержки, вместо того чтобы говорить, что его пароль неверен.

Мы надеемся, что вам понравилось читать эту статью. Часть 2 будут опубликованы в ближайшее время, так что следите за нашим Страница блога чтобы первым узнать о его выходе!


Об авторе

Диогу Гувейя

По адресу Диогу Гувейя

"После завершения учебы в Великобритании я присоединился к команде маркетинга в Connecting Software, чтобы создавать контент по интеграции программного обеспечения и ряду других ИТ-тем. Если у вас есть какие-либо замечания или предложения, пожалуйста, обращайтесь".

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.