Maison >Applet WeChat >Développement WeChat >Développement C# du portail et de l'application WeChat (2) - Traitement et réponse des messages WeChat

Développement C# du portail et de l'application WeChat (2) - Traitement et réponse des messages WeChat

高洛峰
高洛峰original
2017-02-16 16:29:551447parcourir

Les applications WeChat battent leur plein et de nombreuses entreprises espèrent accéder à l'information express. Il s'agit d'une opportunité commerciale et d'une direction technique. Par conséquent, rechercher et apprendre le développement lié à WeChat lorsque vous en avez le temps est devenu l'un des objectifs. aménagements prévus. Cette série d'articles espère présenter de manière exhaustive le processus de développement pertinent et le résumé de l'expérience pertinente de WeChat dans une perspective étape par étape, dans l'espoir de donner à chacun une compréhension du processus de développement pertinent. Cet essai est principalement basé sur l'article précédent « Développement en C# du portail et de l'application WeChat (1) - Commencer à utiliser l'interface WeChat » pour fournir une introduction approfondie et présenter le processus de traitement et de réponse aux messages WeChat.

1. Interaction de réponse aux messages de WeChat

Nous savons que le serveur de WeChat construit un pont entre le téléphone mobile du client et le serveur du développeur, et réalise la communication avec les utilisateurs via la transmission et la réponse de messages interactifs. opération, voici son diagramme de flux de messages.

C#开发微信门户及应用(2)--微信消息的处理和应答

Les messages demandés par WeChat au serveur du développeur incluent de nombreux types, mais ils sont essentiellement divisés en traitement de message texte, traitement de message d'événement, reconnaissance de message vocal et classification de base de opérations d'authentification des messages avant de devenir développeur. Vous trouverez ci-dessous un diagramme de classification des messages que j'ai dessiné, qui présente ces relations et leurs classifications respectives de raffinement des messages.

C#开发微信门户及应用(2)--微信消息的处理和应答

Pour ces demandes de message, lorsque nous développons le côté serveur, nous devons écrire une logique pertinente pour le traitement correspondant, puis répondre au message à la plate-forme serveur WeChat.

Dans l'essai précédent, j'ai posté le code pour présenter l'opération de saisie du traitement des messages WeChat. Le code est le suivant.

        public void ProcessRequest(HttpContext context)
        {            //WHC.Framework.Commons.LogTextHelper.Info("测试记录");

            string postString = string.Empty;            
            if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
            {                using (Stream stream = HttpContext.Current.Request.InputStream)
                {
                    Byte[] postBytes = new Byte[stream.Length];
                    stream.Read(postBytes, 0, (Int32)stream.Length);
                    postString = Encoding.UTF8.GetString(postBytes);
                }                if (!string.IsNullOrEmpty(postString))
                {                    Execute(postString);
                }
            }            else
            {
                Auth();
            }
        }

Execute(postString); est la fonction de traitement des messages, qui implémente la distribution et le traitement de différents messages. '

        /// <summary>
        /// 处理各种请求信息并应答(通过POST的请求)        /// </summary>
        /// <param name="postStr">POST方式提交的数据</param>
        private void Execute(string postStr)
        {            WeixinApiDispatch dispatch = new WeixinApiDispatch();
            string responseContent = dispatch.Execute(postStr);

            HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
            HttpContext.Current.Response.Write(responseContent);
        }

Le WeixinApiDispatch à l'intérieur est une classe de gestion distribuée, qui extrait le contenu du message de requête et construit différents types de Les paramètres du message sont transmis à différentes fonctions de réponse pour traitement, puis le contenu XML encapsulé est renvoyé en réponse.

La logique spécifique de traitement du code est présentée dans la figure ci-dessous.

C#开发微信门户及应用(2)--微信消息的处理和应答

Cette interface de traitement des messages définit en fait une série d'opérations de traitement pour les messages de demande. Les paramètres sont des objets de message différents. La définition du code spécifique est la suivante (pour des raisons d'espace, certaines interfaces sont omises, veuillez vous référer à la figure ci-dessus pour plus de détails).

    /// <summary>
    /// 客户端请求的数据接口    /// </summary>
    public interface IWeixinAction
    {        /// <summary>
        /// 对文本请求信息进行处理        /// </summary>
        /// <param name="info">文本信息实体</param>
        /// <returns></returns>
        string HandleText(RequestText info);        /// <summary>
        /// 对图片请求信息进行处理        /// </summary>
        /// <param name="info">图片信息实体</param>
        /// <returns></returns>
        string HandleImage(RequestImage info);

...........................        /// <summary>
        /// 对订阅请求事件进行处理        /// </summary>
        /// <param name="info">订阅请求事件信息实体</param>
        /// <returns></returns>
        string HandleEventSubscribe(RequestEventSubscribe info);        /// <summary>
        /// 对菜单单击请求事件进行处理        /// </summary>
        /// <param name="info">菜单单击请求事件信息实体</param>
        /// <returns></returns>
        string HandleEventClick(RequestEventClick info);

..............................
    }

Comme le montre le code ci-dessus, différents messages sont transmis à la fonction de traitement sous la forme de différentes classes d'entités de message ( Remarque : la classe d'entité est définie par moi en fonction des besoins de développement du programme, et non la classe d'entité de WeChat elle-même ), c'est très pratique pour nous de gérer les opérations, sinon nous devons analyser des messages différents à chaque fois. Le contenu est sujet à des problèmes. De tels types de données fortement typés améliorent la robustesse et l'efficacité du développement de notre application WeChat. Les objets de ces classes d'entités ont une certaine relation d'héritage, et leur relation d'héritage est la suivante.

C#开发微信门户及应用(2)--微信消息的处理和应答

2. Interface de gestion de WeChat

La classification des messages ci-dessus est une opération de demande de message envoyée par le serveur WeChat au serveur du développeur. , qui est la demande de message ou la réponse faite par notre serveur de développeur au serveur WeChat est temporairement appelée interface de gestion WeChat, ce qui montre que nous pouvons effectuer des réponses aux messages ou des opérations de gestion de données associées via ces interfaces. Son diagramme de classification est présenté ci-dessous.

C#开发微信门户及应用(2)--微信消息的处理和应答

Le traitement des messages de réponse de WeChat est le même que les informations de la section ci-dessus. Il est également hérité de la classe d'entité BaseMessage (De même, la classe d'entité dans la. figure ci-dessous et sa relation d'héritage est également personnalisée pour faciliter le développement du programme), et sa relation est la suivante

C#开发微信门户及应用(2)--微信消息的处理和应答

Généralement, les messages les plus couramment utilisés pour répondre sont les messages texte et les messages graphiques.

L'effet du message texte est le suivant.

C#开发微信门户及应用(2)--微信消息的处理和应答

Messages graphiques, vous pouvez ajouter des images, et vous pouvez également ajouter des pages de liens détaillées. C'est un très bel effet pour certains contenus, j'espère montrer de meilleurs effets. , ceci est généralement utilisé, et l'effet est le suivant.

C#开发微信门户及应用(2)--微信消息的处理和应答

Pour plus de développement C# de portails et d'applications WeChat (2) - Traitement et réponse des messages WeChat Pour les articles connexes, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn