Dynamics 365 Portal de Atención al Cliente cabecera parte 2

Dynamics 365 Portal de Atención al Cliente: Retos y soluciones - Parte 2

Diogo GouveiaProducts and Solutions, Technical Leave a Comment

Bienvenidos a la segunda parte del artículo. Aquí seguiremos explicando nuestra experiencia desarrollando nuestro Portal de atención al cliente de Microsoft Dynamics 365. Si no ha leído Parte 1 (hemos incluido un plugin diseñado a medida para el servicio de atención al cliente de D365).

Incidencia #3 - Apertura de un nuevo caso

Mientras construíamos nuestro Portal de Soporte, nos encontramos con una situación relacionada con el formulario que rellenan nuestros clientes al crear un nuevo caso. El diseño predeterminado de esta página del Servicio de atención al cliente de Microsoft Dynamics 365 incluye un cuadro de texto general, en el que los clientes deben proporcionar detalles sobre las particularidades de sus casos.

Aunque este formato puede ser útil para algunas empresas, no se ajustaba al nivel de automatización que buscábamos. Esencialmente, buscábamos una forma de encaminar rápidamente cada nuevo caso creado en el Portal a una cola adecuada, cada una de las cuales contiene un equipo de personas que son las más adecuadas para responder a cada caso. Además de ser mucho más eficiente, también consume menos tiempo que tener que analizar cada caso individualmente para luego poder dirigirlo a los expertos adecuados.

Solución - Rediseño del formulario de atención al cliente de D365

Para optimizar la resolución de los casos que recibimos en el Portal de Soporte, nuestro equipo tuvo que rediseñar la página "Abrir un nuevo caso". En lugar del cuadro de consulta general que acabamos de mencionar, creamos un formulario que se amplía a medida que los clientes rellenan la información sobre sus casos.

Al iniciar sesión, esto es lo que ve inicialmente un usuario:

dynamics 365 portal de atención al cliente abrir un nuevo caso
Tras rellenar los campos "Título" y "Asunto", el formulario sigue expandiéndose. Para fines de demostración, simularemos el escenario de un cliente que experimenta un error de inicio de sesión al intentar acceder a su cuenta de SaaS para CB Dynamics 365 to SharePoint Permissions Replicator.
Dynamics 365 portal de atención al cliente ejemplo de caso

Una vez cumplimentado el formulario, se puede ver que la información está dividida en diferentes campos en lugar de en un gran cuadro de texto. Ahora, el sistema puede leer los distintos campos y dirigir correctamente el caso a la cola adecuada mediante flujos de trabajo predefinidos.

Cada vez que se dirige un caso, el equipo receptor es alertado con un correo electrónico automatizado informándole de que ha recibido un nuevo caso en el Portal de Soporte. A continuación, ese equipo debe ir al CRM para comprobar el caso y, o bien dejar un comentario en el Portal, que es un simple comentario en el Portal de Atención al Cliente Dynamics 365 sobre la consulta realizada, o bien enviar una cita de calendario, también a través del CRM, para concertar una llamada si es necesario. El cliente es notificado de estos sucesos por correo electrónico, y lo mismo ocurre con los miembros del equipo asignados a las colas cada vez que se produce una actualización de un caso de soporte (por ejemplo, una respuesta del usuario a un comentario del portal).

Resolver casos utilizando exclusivamente el CRM Dynamics 365 de Microsoft es algo a lo que nuestro equipo ha tenido que acostumbrarse (de lo que hablaremos más adelante), pero resulta extremadamente beneficioso, ya que ahora se hace un seguimiento de todas las comunicaciones y procesos. Esto nos da la capacidad de generar datos en los que podemos confiar, analizarlos y derivar iniciativas para aumentar la satisfacción del cliente y seguir mejorando nuestra línea de productos.

Connecting Software Portal SaaS

Nuestro Portal SaaSMicrosoft Azure SaaS, el recurso que utilizan nuestros clientes para gestionar las soluciones desplegadas a través de nuestros servidores SaaS de Microsoft Azure, también ha sufrido algunos retoques. En el pie de página hay un enlace "Contacte con nosotros", que solía redirigir a los clientes a un lugar dedicado a crear tickets de soporte para sus consultas.
dynamics 365 portal de atención al cliente contacto

Con nuestro nuevo Portal de Atención al Cliente Dynamics 365, esto se convirtió en una redundancia. Dado que uno de los principales objetivos del portal de asistencia es centralizar las solicitudes de asistencia, no tenía sentido que las solicitudes procedentes de nuestro portal SaaS pasaran por un canal diferente. Por ello, nuestro equipo de desarrollo configuró este campo "Contacte con nosotros" para dirigir a los clientes directamente a nuestro Portal de asistencia.

Pero hay una ventaja. Una vez que un cliente llega a esta página, algunos campos del formulario rediseñado que hemos creado se rellenan automáticamente según la página de la que procede el cliente. De este modo, podemos aumentar la eficiencia, manteniéndonos en línea con los objetivos que nos llevaron a desarrollar este Portal de Atención al Cliente Dynamics 365 en primer lugar.

Incidencia #4 - Tamaño total del archivo adjunto

Como seguramente sabrá, los archivos adjuntos son extremadamente útiles a la hora de crear un caso de asistencia, ya que facilitan el intercambio de información entre el usuario y el profesional que lleva a cabo la asistencia. Sin embargo, dependiendo de la complejidad del caso en cuestión, el tamaño total de los archivos adjuntos puede variar, y suele haber limitaciones al respecto.

El Portal de Atención al Cliente Dynamics 365 tiene un límite de 5 MB para el tamaño total de los archivos adjuntos que los clientes pueden enviar junto con sus casos. Para los clientes que adjuntan una simple captura de pantalla es más que suficiente, pero para los casos que necesitan una grabación de pantalla o un mayor número de imágenes, por ejemplo, esto se convierte en un problema.

      public void Ejecutar(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(entidad);
        
        if (isLoginEnabled == false)
        {
            return;
        }

        try
        {
            var emailAddress = (cadena) entity["emailaddress1"];
            var contactsWithSameEmailAddress = GetContactsByEmailAddress(service, entity.Id, emailAddress);
            if (contactsWithSameEmailAddress.Entities.Count > 0)
            {
                var hasLoginEnabled = HasLoginEnabled(contactsWithSameEmailAddress.Entities[0]);
                si (hasLoginEnabled)
                {
                    lanza una nueva InvalidPluginExecutionException(OperationStatus.Failed,
                        "El usuario ya existe. Prueba con otra dirección de correo electrónico para registrarte o inicia sesión en tu cuenta existente");
                }

                var mergeRequest = new MergeRequest
                {
                    SubordinadoId = entidad.Id,
                    Target = new EntityReference("contacto", contactsWithSameEmailAddress.Entities[0].Id),
                    UpdateContent = GetUpdateContent(entidad)
                };
                var _ = (MergeResponse) service.Execute(mergeRequest);
                entity[CustomAttributeName] = true;
                service.Update(entidad);
            }
            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(entidad);
                    }
                    else
                    {
                        SendEmailAndDeactivateContact(service, tracingService, entity);
                    }
                }
            }
        }
        catch (FaultException ex)
        {
            throw new InvalidPluginExecutionException("Se ha producido un error en ContactPostOperationPlugin.", ex);
        }
    }
Cerrar código

Solución

Aunque nuestro equipo de desarrollo es brillante, no hay mucho que podamos hacer sobre esta limitación de archivos adjuntos. La mejor solución para este problema es proporcionar al usuario un repositorio alternativo para subir archivos, que son analizados por el equipo que se ocupa del caso. Para ello, la plataforma que utilizamos es ownCloud.

Otras incidencias

Además de las cuatro anteriores, hubo otras situaciones que demostraron que estábamos dispuestos y éramos capaces de modificar el despliegue inicial del proyecto en caso necesario. Por ejemplo:

  • Adaptación de las vistas de Microsoft Dynamics 365 y de la capacidad de búsqueda de las descripciones de los comentarios del Portal
  • Mejora de la legibilidad de los comentarios del portal para el equipo de atención al cliente y de asistencia al eliminar el código HTML e incluir texto enriquecido.
  • Se ha añadido una columna adicional para compilar una URL externa de la base de conocimientos.
  • Establecer un proceso de resolución automática de los casos que quedan sin respuesta.
  • Aprendí sobre las formas en que Microsoft Dynamics 365 renderiza HTML para asegurar que nuestros correos electrónicos de información a los clientes se muestren como se desea (Sugerencia: El HTML debe estar en una sola línea de código en lugar de en un formato estándar).

Además, como parte del viaje de Microsoft para hacer la plataforma Power Pages más segura, han introducido un Aplicación Dataverse Concepto de usuario. En definitiva, todas las acciones que se realizan dentro de las aplicaciones web tienen un tipo de usuario detrás, y cada tipo de usuario tiene diferentes privilegios.

El usuario SYSTEM era el que estaba siendo utilizado por la Solución D365 que construimos, mencionada en la Parte 1 de este artículo. La nueva introducción hizo que este usuario SYSTEM cambiara a un Usuario de Aplicación, que no tiene los mismos privilegios que el anterior usuario SYSTEM. Como tal, la Solución que construimos se restringió, y no funcionaba correctamente.

Lo único que hubo que hacer fue asignar los permisos de Administrador del Sistema (que llevaba el anterior usuario SYSTEM) al nuevo Usuario de Aplicación que implementó Microsoft. Una vez realizado este proceso, ¡nuestro plugin reanudó la eficacia 100%!

Dynamics 365 Formación en CRM

Ahora que hemos cubierto los obstáculos técnicos a los que nos enfrentamos al crear nuestro Portal de Soporte, nos gustaría tocar brevemente los aspectos de gestión de la implantación del Portal de Atención al Cliente Dynamics 365, es decir, la formación en CRM Dynamics 365 a la que tuvo que someterse nuestro equipo. Como le dirá cualquier gestor de proyectos, el compromiso del equipo para adaptarse a las nuevas formas de trabajar puede ser uno de los mayores retos a la hora de implantar una mejora.

Es posible que sepa que anteriormente nuestro equipo realizaba la atención al cliente por correo electrónico. Ahora, los miembros del equipo deben dejar comentarios en el Portal o enviar invitaciones a reuniones exclusivamente a través de nuestro CRM. Para garantizar una transición fluida a un nuevo proceso como este, era importante informar al equipo de las razones que hay detrás para que pudieran ver los beneficios, ya sea desde una perspectiva del tiempo que pueden ahorrar, a las necesidades de informes de la empresa para derivar iniciativas de mejora continua, o la racionalización de la experiencia de atención al cliente. Incluso para nuestros clientes, esperamos que también hayan tenido que adaptarse a utilizar el Portal de Soporte para sus consultas, en lugar de enviar un correo electrónico a los miembros del equipo con los que ya estaban familiarizados.

Por último, el mantenimiento de nuestra Base de conocimientos fue otra oportunidad de cambio. Ahora que nuestro Portal de Atención al Cliente de Microsoft Dynamics 365 nos proporciona una visión mucho más clara de las consultas que nuestros clientes han estado realizando, además de proporcionar soporte, el equipo también debe seguir añadiendo los casos recurrentes a la Base de Conocimientos para garantizar que esta información esté fácilmente disponible para todos los usuarios del Portal de Soporte.

Para llevar

Recordamos estos acontecimientos de forma positiva porque nos permitieron poner nuestro Portal de Soporte en las mejores condiciones posibles para nuestros clientes. Aunque fue un proyecto largo que requirió el esfuerzo y la plena dedicación de los miembros de nuestro equipo, sin duda ha merecido la pena. Ser capaces de ofrecer más comodidad a nuestros clientes y una sólida fuente de información para nosotros significa que hemos ganado ventaja para seguir alcanzando nuestros objetivos, y estamos deseando ver cómo podemos seguir optimizando nuestros procesos utilizando el Portal de Atención al Cliente Dynamics 365 de Microsoft.

Esperamos que haya disfrutado conociendo nuestra experiencia en la creación de nuestro Portal de asistencia. En Parte 1 de este artículo, incluimos parte de un plugin que construimos específicamente para Servicio de atención al cliente de Microsoft Dynamics 365. Nos ha resultado muy útil, así que no dudes en echarle un vistazo y solicitar la versión completa.


Sobre el autor

Diogo Gouveia

Por Diogo Gouveia

"Después de terminar mis estudios en el Reino Unido, me incorporé al equipo de Marketing de Connecting Software para crear contenidos sobre integración de software y otros temas informáticos diversos. Si tienes alguna observación o sugerencia, no dudes en ponerte en contacto conmigo".

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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

I agree to these terms.