WeChat アプリケーションは本格的に普及しており、多くの企業がこの情報エクスプレスに乗り出すことを望んでいます。そのため、WeChat 関連の開発について勉強することは計画された取り決めの 1 つとなっています。時間がある。この一連の記事では、WeChat の関連する開発プロセスと関連する経験の概要をステップバイステップの観点から包括的に紹介し、関連する開発プロセスを誰もが理解できるようにしたいと考えています。このエッセイは主に前回の記事「WeChat ポータルとアプリケーションの C# 開発 (1) -- WeChat インターフェイスの使用を開始する」に基づいて詳細に紹介し、WeChat メッセージの処理と応答のプロセスを紹介します。
WeChat のサーバーは、顧客の携帯電話と開発者のサーバーの間にブリッジを構築し、メッセージの送信と応答を通じてユーザーとのインタラクションを実現することがわかっています。以下はそのメッセージ フローチャートです。
WeChatが開発者サーバーに要求するメッセージには多くの種類がありますが、基本的にはテキストメッセージ処理、イベントメッセージ処理、音声メッセージ認識、開発者になる前の基本的なメッセージ認証操作に分類されます。私が描いたメッセージ分類図では、これらの関係とそれぞれのメッセージ絞り込み分類が紹介されています。
これらのメッセージリクエストについては、サーバーサイドを開発するときに、対応する処理に関連するロジックを作成し、WeChatサーバープラットフォームへのメッセージに応答する必要があります。
前回のエッセイでは、WeChatメッセージ処理の入力操作を紹介するコードを投稿しました。コードは次のとおりです。
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); は、さまざまなメッセージの配布と処理を実装するメッセージ処理関数です。 '
/// <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); }
内の WeixinApiDispatch は配布管理クラスであり、リクエスト メッセージのコンテンツを抽出し、さまざまなタイプのメッセージ パラメーターを構築し、それらを処理のためにさまざまな応答関数に渡し、カプセル化された XML コンテンツを返します。 、 に応じて。
具体的なコード処理ロジックを以下の図に示します。
このメッセージ処理インターフェースは、実際にはリクエストメッセージに対する一連の処理を定義します。パラメータは別のメッセージオブジェクトです。具体的なコード定義は次のとおりです(スペースの都合上、一部のインターフェースは省略しています。詳細は参照してください)。上の写真へ)。
/// <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); .............................. }
上記のコードからわかるように、さまざまなメッセージがさまざまなメッセージ エンティティ クラスの形式で処理関数に渡されます (注: エンティティ クラスはプログラム開発のニーズに応じて独自のものです)定義された、非 WeChat 独自のエンティティ クラス)。これは、操作を処理するのに非常に便利です。そうでない場合は、毎回異なるメッセージの内容を解析する必要があるため、このように強く型付けされたデータ型により、堅牢性が向上します。 WeChat アプリケーションの開発の種類と効率。これらのエンティティクラスのオブジェクトは一定の継承関係を持っており、その継承関係は以下の通りである。
上記のメッセージ カテゴリは、WeChat サーバーから開発者サーバーに送信されるメッセージ要求操作です。また、開発者サーバーから WeChat へのメッセージ要求または応答であるメッセージもあります。これは一時的に WeChat の管理インターフェイスと呼ばれ、これらのインターフェイスを通じて関連するメッセージの返信やデータ管理操作を実行できることを示しています。その分類図を以下に示します。
WeChatの返信メッセージの処理も上記の内容と同様です。BaseMessageエンティティクラスからも継承されています(同様に、下図のエンティティクラスとその継承関係もプログラムを容易にするためにカスタマイズされています)開発 )、その関係は次のとおりです
返信するために最も一般的に使用されるメッセージは、テキスト メッセージとグラフィック メッセージです。
テキストメッセージの効果は以下の通りです。
グラフィックメッセージ、写真を追加でき、詳細なリンクページも追加できます。これは、コンテンツが多く、より良い効果を示したい人にとっては、一般的に使用されます。効果は以下の通りです。
WeChat ポータルとアプリケーションの C# 開発の詳細 (2) -- WeChat メッセージの処理と応答 関連記事については、PHP 中国語 Web サイトに注目してください。