Heim >WeChat-Applet >WeChat-Entwicklung >C#-Entwicklung des WeChat-Portals und der WeChat-Anwendung (2) – WeChat-Nachrichtenverarbeitung und -antwort

C#-Entwicklung des WeChat-Portals und der WeChat-Anwendung (2) – WeChat-Nachrichtenverarbeitung und -antwort

高洛峰
高洛峰Original
2017-02-16 16:29:551448Durchsuche

WeChat-Anwendungen sind in vollem Gange, und viele Unternehmen hoffen, in den Informationsexpress aufgenommen zu werden. Dies ist eine Geschäftsmöglichkeit und eine technische Richtung. Daher ist es zu einer der Möglichkeiten geworden, sich über WeChat-bezogene Entwicklungen zu informieren geplante Arrangements. Ziel dieser Artikelserie ist es, den relevanten Entwicklungsprozess und die relevante Erfahrungszusammenfassung von WeChat Schritt für Schritt umfassend vorzustellen und allen ein Verständnis für den relevanten Entwicklungsprozess zu vermitteln. Dieser Aufsatz basiert hauptsächlich auf dem vorherigen Artikel „C#-Entwicklung des WeChat-Portals und der WeChat-Anwendung (1) – Beginnen Sie mit der Verwendung der WeChat-Schnittstelle“, um eine ausführliche Einführung zu bieten und den Prozess der Verarbeitung und Beantwortung von WeChat-Nachrichten vorzustellen.

1. WeChats Nachrichtenantwortinteraktion

Wir wissen, dass der WeChat-Server eine Brücke zwischen dem Mobiltelefon des Kunden und dem Server des Entwicklers baut und die Kommunikation mit Benutzern durch die Übertragung und Antwort von Nachrichten realisiert Das Folgende ist das Nachrichtenflussdiagramm der Operation.

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

Die Nachrichten, die WeChat vom Entwicklerserver anfordert, umfassen viele Arten, sind jedoch grundsätzlich in Textnachrichtenverarbeitung, Ereignisnachrichtenverarbeitung, Sprachnachrichtenerkennung und die grundlegende Klassifizierung unterteilt Nachrichtenauthentifizierungsvorgänge, bevor ich Entwickler wurde. Nachfolgend finden Sie ein von mir erstelltes Nachrichtenklassifizierungsdiagramm, das diese Beziehungen und ihre jeweiligen Nachrichtenverfeinerungsklassifizierungen vorstellt.

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

Für diese Nachrichtenanfragen müssen wir bei der Entwicklung der Serverseite die entsprechende Logik für die entsprechende Verarbeitung schreiben und dann auf die Nachricht an die WeChat-Serverplattform antworten.

Im vorherigen Aufsatz habe ich den Code zur Einführung des Eingabevorgangs der WeChat-Nachrichtenverarbeitung veröffentlicht. Der Code lautet wie folgt.

        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); ist die Nachrichtenverarbeitungsfunktion, die die Verteilung und Verarbeitung verschiedener Nachrichten implementiert. '

        /// <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);
        }

Der WeixinApiDispatch im Inneren ist eine verteilte Verwaltungsklasse, die den Inhalt der Anforderungsnachricht extrahiert und verschiedene Arten von erstellt Die Nachrichtenparameter werden zur Verarbeitung an verschiedene Antwortfunktionen übergeben und anschließend wird der gekapselte XML-Inhalt als Antwort zurückgegeben.

Die spezifische Codeverarbeitungslogik ist in der folgenden Abbildung dargestellt.

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

Diese Nachrichtenverarbeitungsschnittstelle definiert tatsächlich eine Reihe von Verarbeitungsvorgängen für Anforderungsnachrichten. Die Parameter sind unterschiedliche Nachrichtenobjekte. Die spezifische Codedefinition lautet wie folgt (Aus Platzgründen). Einige Schnittstellen werden weggelassen. Weitere Informationen finden Sie in der Abbildung oben.

    /// <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);

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

Wie aus dem obigen Code ersichtlich ist, werden unterschiedliche Nachrichten in Form verschiedener Nachrichtenentitätsklassen () an die Verarbeitungsfunktion übergeben Hinweis: Die Entitätsklasse wird von mir gemäß den Anforderungen der Programmentwicklung definiert, nicht die Entitätsklasse von WeChat selbst ). Dies ist für uns sehr praktisch, um Vorgänge abzuwickeln, andernfalls müssen wir sie analysieren Jedes Mal unterschiedliche Nachrichten. Der Inhalt ist anfällig für Probleme. Ein solch stark typisierter Datentyp verbessert die Robustheit und Effizienz unserer WeChat-Anwendungsentwicklung. Die Objekte dieser Entitätsklassen haben eine bestimmte Vererbungsbeziehung, und ihre Vererbungsbeziehung ist wie folgt.

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

2. WeChats Verwaltungsoberfläche

Die obige Nachrichtenklassifizierung ist ein Nachrichtenanforderungsvorgang, der vom WeChat-Server an den Entwicklerserver gesendet wird Dies ist die Nachrichtenanforderung oder -antwort unseres Entwicklerservers an den WeChat-Server, die vorübergehend als WeChat-Verwaltungsschnittstelle bezeichnet wird. Dies zeigt, dass wir über diese Schnittstellen entsprechende Nachrichtenantworten oder Datenverwaltungsvorgänge ausführen können. Das Klassifizierungsdiagramm ist unten dargestellt.

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

Die Antwortnachrichtenverarbeitung von WeChat ist die gleiche wie die Informationen im obigen Abschnitt. Sie wird auch von der BaseMessage-Entitätsklasse geerbt (Ähnlich ist die Entitätsklasse in Abbildung unten und Seine Vererbungsbeziehung ist ebenfalls angepasst, um die Programmentwicklung zu erleichtern), und seine Beziehung ist wie folgt

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

Im Allgemeinen werden Textnachrichten und grafische Nachrichten am häufigsten zum Antworten auf Nachrichten verwendet.

Die Wirkung der Textnachricht ist wie folgt.

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

Grafische Nachrichten, Sie können Bilder hinzufügen und Sie können auch detaillierte Linkseiten hinzufügen, was ein sehr schöner Effekt ist. Bei einigen Inhalten hoffe ich, bessere Effekte zu erzielen. Dies wird im Allgemeinen verwendet und der Effekt ist wie folgt.

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

Weitere C#-Entwicklung von WeChat-Portalen und -Anwendungen (2) – WeChat-Nachrichtenverarbeitung und -antwort. Für verwandte Artikel achten Sie bitte auf die chinesische PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn