ぼんやりと WeChat バックエンドの「高度な」機能を有効にするよりも、開発者になるための準備を整えることが重要だと思うので、このセクションを最初に置きます。
1. パブリック プラットフォームの通信プロセス
開発者として、WeChat サーバーとアプリケーション (ウェブサイト) サーバーという 2 つの主要なオブジェクトに直面する必要があります。
WeChat ユーザーがパブリック プラットフォームにメッセージを送信すると、そのメッセージは実際にはまず WeChat サーバーに送信され、WeChat サーバーは Web サイト サーバーへの別のリクエストを開始し、Web サイト サーバーはこのリクエストの結果を返します。 WeChat サーバーはそれを WeChat クライアントに送信します。
メッセージ通信プロセス全体は以下のとおりです:
上記の 5 つのステップのうち、開発者としてはステップ 3 に主に焦点を当てます。このステップには実際には 3 つのタスクがあります:
からの受信 2 の XML 情報
サーバー内部ロジックの実行
は、4つのXML情報を整理して返します
上記の3つのタスクについては後ほど詳しく説明し、一連のシンプルで効率的な処理方法を提供します。
2. XML 通信形式
ユーザーが WeChat クライアントを使用してさまざまな種類のメッセージを送信すると、Web サイトのサーバーはさまざまな形式 (テキスト、音声、画像など) でデータを受信します。現在のデータ形式は XML です。
勉強としては、最も単純なテキストタイプをマスターすれば十分だと思います。他の形式も同様です。次の手順では、Senparc.Weixin.MP.dll を使用すると、これらの面倒な形式と定義を完全に無視できることがわかります。
単純なテキストリクエスト XML (RequestMessage) の内容は次のとおりです:
<xml>
<ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName>
<FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName>
<CreateTime>1357986928</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[TNT2]]></Content>
<MsgId>5832509444155992350</MsgId>
</xml>
ログイン後にコピー
対応するノードの公式の説明は次のとおりです:
Parameter |
Description |
ToUserName |
開発者WeChat ID |
FromUserName |
送信者アカウント (OpenID) |
CreateTime |
メッセージ作成時間 (整数) |
MsgType |
text |
コンテンツ |
テキストメッセージのコンテンツ |
MsgId |
メッセージ ID、64 ビット整数 |
内容は次のとおりです。
りー
対応ノード 公式説明は以下の通り:
Parameters
Description |
|
ToUserName
受信者アカウント(受信したOpenID) |
|
FromUserName
開発者WeChat ID | |
CreateTime
メッセージの作成時間 |
|
MsgType
text |
|
Content
返信のメッセージ内容、長さは2048バイトを超えません |
|
FuncFlag
ビット0x0001がマークされている場合、スターはメッセージを受信したばかりです。 |
|
3. 注意が必要で見落とされやすいいくつかの問題:
テキスト情報など、各 XML 情報にはサイズ制限があります。コンテンツの内容は 600 ワードを超えてはなりません。
上の図では、ステップ 2 が開始された後、WeChat サーバーの待機時間は 5 秒 この時間内にステップ 4 に到達しない場合、リクエストはクローズされます (データ送信を含む)。 )。つまり、時間を超えるとWebサイトサーバーがデータを返してもクライアントは応答を受け取ることができなくなります。
上記の XML ノードの FromUserName は WeChat ユーザーの OpenId であり、同じパブリック アカウントの場合、この OpenId の最初の 6 桁はパブリック プラットフォーム全体のレコード間で一貫しており、一意です。つまり、同じユーザーが 2 つの異なる公開アカウントをフォローしている場合、そのユーザーは 2 つの異なる OpenId を持つことになります。
CreateTime は Unix 時間を使用するため、C# を使用する場合は変換を行う必要があります。 以前は、WeChat サーバーはノード名の代わりにノードの位置 (node[0]) を使用して、XML ノードの順序を維持しようとしました。改善されましたが、まだ注意が必要です (¥…………&%&……)。
この特別な通信方法により、(少なくとも現時点では) すべてのリクエストは最初にクライアントから開始される必要があります。API または SDK を使用するだけで、Web サイトサーバーがアクティブにメッセージをクライアントにプッシュできるとは期待しないでください。もちろん、模擬ログインなどの他の方法もあります)。
4. 仕事をうまくやりたいなら、まずツールを磨く必要があります: Senparc.Weixin.MP.dll
通信プロセス全体は非常にシンプルですが、公式 API は依然として特別な調整や処理を行っています。非常に多くの種類のリクエスト データを手続き的に処理することも、非常に骨の折れる作業です。 この目的のために、私はオープンソース プロジェクトを作成しました: Senparc.Weixin.MP、アドレス: //m.sbmmt.com/
Senparc.Weixin.MP の主な目的は、C# 開発者が全体を簡素化できるようにすることです。通信プロセスを指向しており、オブジェクト単位でメッセージを処理することを目的としており、煩雑な API ではなくビジネス ロジックに重点を置いています。 Senparc.Weixin.MP を使用し、それを外部ネットワークに展開して WeChat サーバーと通信します。
VS2012 (少なくとも VS2010 SP1); を実行する必要がある場合。 MVC デモ、少なくとも .NET 4.0 (MVC 4 をインストール)、Webforms デモを実行、少なくとも .NET 3.5 が必要です
ポート 80、仮想ホスト、ピーナッツ シェル マッピングを使用してアクセスできるドメイン名または IPイントラネット、VPS、独立したサーバーはすべて受け入れられます。
Senparc.Weixin.MP SDK WeChat パブリック プラットフォーム開発チュートリアル (2) の詳細については、開発者になることに関する記事については、PHP 中国語 Web サイトに注目してください。