前の記事では、コールバックモードを有効にすることを紹介しました。コールバックモードを開始した後、チャット機能を実装します。通常、WeChatチャットを使用して、テキストメッセージ、音声、写真、ビデオなどを送信できます。ここでは、これらの関数の一部のみがここで実装されています。
1. WeChat Enterpriseアカウントとの接続を確立します
1.エンタープライズアプリケーションは、エンタープライズアカウントが提供するインターフェイスを呼び出し、エンタープライズアカウントの背景で管理されているリソースを管理またはクエリする、またはアクティブコールモードと呼ばれるメンバーなどにメッセージを送信します。
2.エンタープライズアカウントは、ユーザーがエンタープライズアプリケーションにトリガーしたユーザーまたはイベントから送信されたメッセージをプッシュし、コールバックモードと呼ばれるエンタープライズアプリケーションによって処理されます。
3.ユーザーは、WeChatでエンタープライズアプリケーションによって送信されたH5ページを読みます。このページは、WeChatが提供するネイティブインターフェイスを呼び出し、JSAPIモデルと呼ばれるWeChatに開いている端末機能を使用できます。
これは、WeChat Enterpriseアカウントの開発文書に記載されていますが、通常、最初の2つの方法を使用します。
実際、アクティブコールとコールバックは相対的です。これは、WeChatサーバーの観点からです。 WeChatサーバーは、アクティブな呼び出しであるコーポレートアカウントを介してWeChatクライアントにメッセージを送信します。 WECHATクライアントは、weChatサーバーを呼び出すために積極的にメッセージを送信します。サーバーと比較してパッシブコール(コールバック)です。
2。WeChat Serverによって処理されたデータ形式を受動的に呼び出す
1.メインチューン:サーバーはJSON形式のデータをWeChatクライアントに送信すると、データを暗号化する必要はありません。
2。コールバック: WeChatクライアントから送信されたメッセージにはAES暗号化が必要であり、サーバーが受け入れたメッセージはXML形式です。
これら2つは、次のように写真で表されます。
3。チャット原則図
最初に、WeChatクライアントは、処理のためにサーバーにメッセージを送信します。データがXML形式のサードパーティサーバーに送信された後、サードパーティサーバーはデータをJSON形式に変換し、WeChatサーバーに送信し、クライアントに送信します。
4。コード実装
上記の原則に基づいて、以下はコードセクションです
1.サーブレット
public void dopost(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {request.setcharacterencoding( "utf-8"); Response.setcharacterencoding( "utf-8");文字列msg_signature = request.getParameter( "msg_signature");文字列タイムスタンプ= request.getParameter( "Timestamp");文字列nonce = request.getParameter( "nonce"); inputstream inputstream = request.getInputStream(); string postdata = ioutils.tostring(inputstream、 "utf-8"); System.out.println(postdata);文字列msg = ""; wxbizmsgcrypt wxcpt = null; try {wxcpt = new wxbizmsgcrypt(stoken、sencodingaeskey、scorpid); msg = wxcpt.decryptmsg(msg_signature、timestamp、nonce、postdata); } catch(aesexception e){e.printstacktrace(); } system.out.println( "msg =" + msg); //インターフェイスアクセス資格情報を取得する文字列AccessToken = commonutil.getToken( "wxe510946434680dab"、 "ewtaho7666invp4e1mcsz1mhyut2daleb62req3vvsfizhy4vtmwzpkwwzpkueuxuvh3g0")。 try {@suppresswarnings( "unsused")boolean flag = chatservice1.sendmessage(accesstoken、msg); } catch(Exception e){e.printstacktrace(); }} 2.サービス
public class chatservice1 {public static boolean sendmessage(string accesstoken、string msg)スロー例外{boolean flag = false; map <string、string> requestmap = messageutil.parsexml(msg); //送信者String fromUsername = requestMap.get( "FromUsername"); //メッセージタイプ文字列msgtype = requestmap.get( "msgtype"); if(msgtype.equals(messageutil.req_message_text)){//テキストカスタマーサービスのメッセージ文字列content = requestmap.get( "content"); //テキストメッセージのメッセージコンテンツ//テキストテキストカスタマーサービスメッセージ、パラメーター1:ユーザーID;パラメーター2:jsonmsg = advancedutil.maketextcustommessage( "lishehe | zhisheng | zhangwenyuan | lixinjiang"、content); } else if(msgtype.equals(messageutil.req_message_type_image)){//送信されたものは写真string mediaid = requestmap.get( "mediaid"); jsonmsg = advancedutil.makeimagecustommessage( "lishhe | zhisheng | zhangwenyuan | lixinjiang"、mediaid); } else if(msgtype.equals(messagutil.req_message_type_voice)){string mediaId = requestmap.get( "MediaId"); jsonmsg = advancedutil.makevoicecustommessage( "lishhe | zhisheng | zhangwenyuan | lixinjiang"、mediaid); } flag = advancedutil.sendcustommessage(accesstoken、jsonmsg);フラグを返します。 }} 3。ツール
public class advencedutil {private static logger log = loggerfactory.getLogger(advancedutil.class); /**アセンブリアンドテキストメッセージ* @return*/public static string maketextcustommessage(string openid、string content){content = content.replace( "/" "、" /// "); string jsonmsg = {/"touser/":/"%s/"、/"msgtype/":/"text/"、/"/"%s/"、" text/":{/" content/":/"%s/"}}" makemagecustommessage(string openid、string mediaid){string jsonmsg = "{/" touser/"、/" msgtype/":/" image/"、/" agentid/":/"%s/"、/" Image/":{/" media_id/" MediaId); ** * * * @return * / public static string makevoicecustommessage(string openid){string jsonmsg = {/"touser/":/"%s/"、/"msgtype/":/"voice/":/"%s/"、 "boice/":{/"media_id/":/"%s/"}} " 4。概要
これは、メッセージの受信とプッシュを実現します。サードパーティサーバーは、最初に受信したXMLデータを復号化および解析し、そこからメッセージタイプを取得し、送信するメッセージをカプセル化してJSON形式に変換し、WeChatサーバーに送信してクライアントに送信します。
この記事は「Android Wechat Development Tutorial Summary」にまとめられており、「Java Wechat Development Tutorial Summary」は、すべての人を学び、読むことを歓迎します。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。