ホームページ  >  記事  >  WeChat アプレット  >  C# WeChatの開発原理とテキストメッセージの受信/返信の実装方法

C# WeChatの開発原理とテキストメッセージの受信/返信の実装方法

高洛峰
高洛峰オリジナル
2017-03-16 14:52:281876ブラウズ

この記事C#WeChat開発におけるテキストメッセージの受信/返信の原理と実装方法は一定の参考値がありますので、以下のエディタで見てみましょう

テキストメッセージの受信/返信

①受信/戻る テキスト メッセージングの原理の説明

一般の WeChat ユーザーが公開アカウントにメッセージを送信すると、WeChat サーバーは開始前に開発者が入力した URL に POST メッセージの XML データをパッケージ化します。 WeChat で通常のメッセージを受信するための WeChat パブリック プラットフォームを読んでドキュメントを作成し、WeChat のメッセージ処理メカニズム (通常のメッセージを受信するための WeChat 開発ドキュメント) をある程度理解してから開発を開始してください。

1. 再試行のためのメッセージの重複排除については、重みを排除するために msgid を使用することをお勧めします。

2. WeChat サーバーは 5 秒以内に応答を受信しない場合、接続を切断してリクエストを再開始し、合計 3 回再試行します。サーバーが 5 秒以内に処理して応答することを保証できない場合は、空の文字列で直接応答できます。WeChat サーバーはこれに対して何もせず、再試行も開始しません。詳しくは『

メッセージを送信 - メッセージに対する受動的返信』をご覧ください。 3. より高度な セキュリティ 保護を確保するために、開発者はパブリック プラットフォームの公式 Web サイトの開発者センターでメッセージ暗号化を設定できます。暗号化をオンにすると、ユーザーが送信するメッセージが暗号化され、ユーザーのメッセージに対するパブリック アカウントの受動的な返信も暗号化する必要があります (ただし、カスタマー サービス

インターフェース

やその他の API 呼び出しを通じてユーザーにメッセージを送信する開発者は)影響を受けません)。メッセージの暗号化と復号化の詳細な手順については、「メッセージの暗号化と復号化の手順」を参照してください。 開発者サーバーへの POST の XML 形式は次のとおりです:

 <xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName> 
 <CreateTime>1348831860</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[this is a test]]></Content>
 <MsgId>1234567890123456</MsgId>
 </xml>

受信メッセージ

パケットパラメータの説明:

C#微信开发之接收 / 返回文本消息原理与实现方法 戻るテキストメッセージのXML形式:

 <xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>

テキストメッセージパケットパラメータの説明を返す:

C#微信开发之接收 / 返回文本消息原理与实现方法②テキストメッセージの受信/返信コードの実装

開発者は自分のサーバー上の WeChat サーバーから XML データ パケット POST を受信し、次のようなコードを受け取ります:

if(IsPostBack)
{ 
  //*********************************自动应答代码块*********************************
  string postString = string.Empty;
  using (Stream stream = HttpContext.Current.Request.InputStream)
  {
    Byte[] postBytes = new Byte[stream.Length];
    stream.Read(postBytes, 0, (Int32)stream.Length);
    //接收的消息为GBK格式
    postString = Encoding.GetEncoding("GBK").GetString(postBytes);
    string responseContent = help.ReturnMessage(postString );
    //返回的消息为UTF-8格式
    HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
    HttpContext.Current.Response.Write(responseContent);
  }
  //********************************自动应答代码块end*******************************
}

注: メッセージを受信するときは、メッセージ形式を「GBK」形式に変換する必要があります。そうしないと、メッセージが後で解析され、効果的な分析を行うことができなくなります。

ReturnMessage() 処理メソッドのコードは次のとおりです。

/// <summary>
/// 统一全局返回消息处理方法
/// </summary>
/// <param name="postStr"></param>
/// <returns></returns>
public string ReturnMessage(string postStr)
{
  string responseContent = "";
  XmlDocument xmldoc = new XmlDocument();
  xmldoc.Load(new System.IO.MemoryStream(System.Text.Encoding.GetEncoding("GB2312").GetBytes(postStr)));
  XmlNode MsgType = xmldoc.SelectSingleNode("/xml/MsgType");
  if (MsgType != null)
  {
    switch (MsgType.InnerText)
    {
      case "event":
        responseContent = EventHandle(xmldoc);//菜单事件处理
        break;
      case "text":
        responseContent = TextHandle(xmldoc);//文本消息处理
        break;
      default:
        break;
   }
  }
  return responseContent;
}

TextHandle (xmldoc) の処理メソッドのコードは次のとおりです。

コードのデモ機能の実現はここにあります。Complete です。テキスト メッセージの受信/返信、

写真

メッセージ、音声メッセージ、

ビデオメッセージ、ショート ビデオ メッセージ、地理的位置メッセージ、リンクなど、後続の他のメッセージ処理モードもこのメソッドに基づいて対話します。上記のコードを参照して機能を実装できます。

以上がC# WeChatの開発原理とテキストメッセージの受信/返信の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。