この記事では主に、WeChat ポータルとアプリケーションの C# 開発の第 2 部、WeChat メッセージの処理と応答について詳しく紹介します。興味のある友人は参考にしてください
WeChat アプリケーションは本格化しており、多くの企業が期待しています。 Information Express に参加することはビジネスチャンスでもあり、技術的な方向性でもあります。そのため、時間があるときに WeChat の開発について調べて学ぶことが計画された取り決めの 1 つになりました。この一連の記事では、WeChat の関連する開発プロセスと関連する経験の概要をステップバイステップの観点から包括的に紹介し、関連する開発プロセスを誰もが理解できるようにしたいと考えています。このエッセイは主に前回の記事「C# による WeChat ポータルとアプリケーションの開発 (1) -- WeChat インターフェイスの使用を開始する」に基づいて詳細に紹介し、WeChat メッセージの処理と応答のプロセスを紹介します。
1. 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 アプリケーションを開発します。これらのエンティティクラスのオブジェクトは一定の継承関係を持っており、その継承関係は以下の通りである。
2. WeChat管理インターフェース
上記のメッセージ分類は、WeChatサーバーから開発者サーバーに送信されるメッセージリクエストです。 WeChat サーバーまたはレスポンス (ここでは一時的に WeChat の管理インターフェイスと呼ばれます) は、これらのインターフェイスを通じて関連するメッセージの返信やデータ管理操作を実行できることを示しています。その分類図を以下に示します。
WeChat 返信メッセージの処理は、上記セクションの情報と同じです。BaseMessage エンティティ クラスからも継承されます (同様に、下図のエンティティ クラスとその継承関係も、プログラム開発を容易にするためにカスタマイズされています)。 )、その関係は次のとおりです
一般に、返信するために最もよく使用されるメッセージはテキスト メッセージとグラフィック メッセージです。
テキストメッセージの効果は以下の通りです。
グラフィックメッセージの場合、写真や詳細なリンクページを追加できます。これは、コンテンツが多く、より良い効果を表示したい場合に非常に便利です。この効果は一般的に次のように使用されます。
以上がWeChat ポータルとアプリケーションの C# 開発 (2) WeChat メッセージの処理と応答のグラフィカル コード チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。