Ejemplo: cree, lea y actualice una categoría

Este código de muestra es para Microsoft Dynamics Marketing. El código de muestra se puede encontrar en la siguiente ubicación después de descargar e instalar el SDK de Microsoft Dynamics Marketing:

Samples\CS\CategorySample

Requisitos

noteNota
Este ejemplo funciona con sus datos de producción activa. Puede crear contactos, clientes potenciales y compañías reales en sus entornos de Microsoft Dynamics Marketing.

Demostraciones

Este ejemplo muestra cómo crear o actualizar categorías usando Microsoft Dynamics Marketing. Mediante el SDK, puede manipular solo categorías que estén disponibles como parte de campos personalizados. No puede usar los mensajes de API para trabajar con categorías ordinarias.

Ejemplo


namespace Microsoft.Dynamics.Marketing.SDK.Samples.CategorySample
{
    using System;
    using System.Collections.Generic;
    using Microsoft.Dynamics.Marketing.SDK.Common;
    using Microsoft.Dynamics.Marketing.SDK.Messages;
    using Microsoft.Dynamics.Marketing.SDK.Messages.Category;
    using Microsoft.Dynamics.Marketing.SDK.Samples.SdkClient;
    using Microsoft.Dynamics.Marketing.SDK.Samples.SdkSample;

    /// <summary>
    /// Demonstrates how to perform create, read, update and delete operations on a Category entity.
    /// </summary>
    /// <remarks>
    /// Depending on which part of the sample you run, some prior set up is required.
    /// For all of the options in this sample you must have the SDK configured with your Microsoft Azure Service Bus queues on the Integration Options page in Microsoft Dynamics Marketing.
    /// You must also have permissions enabled for Category.
    /// </remarks>
    public class CategorySample : SdkSample
    {
        /// <summary>
        /// Starting point for the sample.
        /// </summary>
        /// <param name="args">Arguments needed for authentication.</param>
        public static void Main(string[] args)
        {
            try
            {
                // This creates the QueueClientProvider that connects to the queues, tests them, and then provides them to the client when needed.
                var queueClientProvider = CreatQueueClientProviderFromArgs(args);

                // This runs the sample that shows a menu of possible requests.
                var sample = new CategorySample(queueClientProvider);
                sample.Run();
            }
            catch (Exception ex)
            {
                CategorySample.WriteException(ex);
                Console.WriteLine("Press Enter key to exit.");
                Console.ReadLine();
            }
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="CategorySample"/> class.
        /// </summary>
        /// <param name="queueClientProvider">
        /// The QueueClientProvider that’s set up to connect to the SDK queues configured in Microsoft Dynamics Marketing.
        /// </param>
        public CategorySample(IQueueClientProvider queueClientProvider)
        {
            var responseHandlerMapping = new Dictionary<Type, Client.ResponseHandler>
            {
                { typeof(CreateOrUpdateCustomFieldCategoriesResponse), this.ProcessCreateOrUpdateCustomFieldCategoriesResponse },
                { typeof(SdkErrorResponse), this.ProcessSdkErrorResponse }
            };

            this.SetupClient(queueClientProvider, responseHandlerMapping);

            this.SampleMenuActions = new Dictionary<string, Tuple<string, Action>>
            {
                { "1", new Tuple<string, Action>("Create/Update user defined categories", this.CreateOrUpdateUserDefinedCategories) }
            };
        }

        /// <summary>
        /// Demonstrates how to create or update custom categories.
        /// </summary>
        private void CreateOrUpdateUserDefinedCategories()
        {
            Console.WriteLine("This request creates or updates a custom category.");
            Console.Write("Please type the entity type name for custom category => ");
            string entityTypeName = Console.ReadLine();
            if (string.IsNullOrEmpty(entityTypeName))
            {
                Console.WriteLine("Incorrect entity type name");
                return;
            }

            Console.Write("Please type in the name of the custom field => ");
            var fieldName = Console.ReadLine();

            var categories = this.MultiQuestionRequest(
                "Do you want to add a category to the request? (y/n) =>",
                () =>
                {
                    Console.Write("Please type the id for the Category => ");
                    var categoryId = Console.ReadLine();
                    if (string.IsNullOrEmpty(categoryId))
                    {
                        Console.WriteLine("Incorrect Id");
                        return new KeyValuePair<string, string>();
                    }

                    Console.Write("Please type the name for the Category => ");
                    var categoryName = Console.ReadLine();
                    if (string.IsNullOrEmpty(categoryName))
                    {
                        Console.WriteLine("Incorrect Name");
                        return new KeyValuePair<string, string>();
                    }

                    return new KeyValuePair<string, string>(categoryId, categoryName);
                });

            var request = new CreateOrUpdateCustomFieldCategoriesRequest
            {
                EntityTypeName = entityTypeName,
                FieldName = fieldName,
                Values = categories
            };

            this.Client.ProcessRequest(request);
        }

        /// <summary>
        /// Handles the <see cref="CreateOrUpdateCustomFieldCategoriesResponse"/> that is received from the response queue.
        /// </summary>
        /// <param name="response">The <see cref="CreateOrUpdateCustomFieldCategoriesResponse"/> received after sending a <see cref="CreateOrUpdateCustomFieldCategoriesRequest"/>.</param>
        private void ProcessCreateOrUpdateCustomFieldCategoriesResponse(SdkResponse response)
        {
            var createOrUpdateCustomFieldCategoriesResponse = (CreateOrUpdateCustomFieldCategoriesResponse)response;
            Console.WriteLine("Processing CreateOrUpdateCustomFieldCategoriesResponse.");

            if (!createOrUpdateCustomFieldCategoriesResponse.Succeeded)
            {
                Console.WriteLine("Failed to create/update custom categories");
                return;
            }

            Console.WriteLine("Succeded to create/update custom categories");
        }

        /// <summary>
        /// Handles the <see cref="SdkErrorResponse"/> received from the response queue. Displays the error message.
        /// </summary>
        /// <param name="response">The <see cref="SdkErrorResponse"/> received after sending an <see cref="SdkRequest"/>.</param>
        private void ProcessSdkErrorResponse(SdkResponse response)
        {
            var sdkErrorResponse = (SdkErrorResponse)response;
            Console.WriteLine("An SdkErrorResponse was received.");
            Console.WriteLine("Error message: {0}", sdkErrorResponse.Message);
        }
    }
}

  • Si la respuesta no se recibe a tiempo, obtendrá el siguiente mensaje de error:



    "Se ha enviado la solicitud pero no se ha recibido la respuesta Puede que desee esperar unos segundos para intentar recibir la respuesta de nuevo o intentar aumentar el ResponseMessageTimeout en client.cs. “



    Algunas de las razones posibles por las que no se recibió la respuesta:

    • El servidor tardó más de lo esperado en procesar esta respuesta. Intente seleccionar la Opción A para ver la respuesta. Si este problema se produce con frecuencia, piense en cambiar el valor de la constante ResponseMessageTimeout en el archivo client.cs.

    • O bien, su cliente está mirando la cola de respuestas incorrecta, o Microsoft Dynamics Marketing no puede escribir en la cola de respuestas debido a un error de configuración. Para obtener información acerca de cómo configurar las horas correctamente, vea Introducción al SDK

  • Si no recibe una respuesta inmediatamente, intente usar la opción para obtener todas las respuestas para esta sesión. A veces una respuesta puede tardar más tiempo que el período de tiempo de espera predeterminado.

  • Si nunca recibe la respuesta, asegúrese de que su solicitud y espacio de nombres y nombres de colas de respuesta coinciden con los datos que ha proporcionado en Inicio > Configuración > Administrador > Opciones de integración. Más información: Configuración del sitio y configuración de integración.

Vea también


Envíe sus comentarios sobre este tema a Microsoft.
© 2015 Microsoft. Reservados todos los derechos.
Mostrar: