Maison > Applet WeChat > Développement WeChat > le corps du texte

Série de développement C# WeChat - Réception/retour de messages texte

高洛峰
Libérer: 2017-03-03 09:24:24
original
2147 Les gens l'ont consulté

4.0 Réception/retour de messages texte

①Instructions sur le principe de réception/retour de messages texte

Lorsque les utilisateurs ordinaires de WeChat envoient des messages à comptes publics À ce stade, le serveur WeChat enverra le paquet de données XML du message POST à ​​l'URL renseignée par le développeur. Avant de commencer le développement, lisez la plate-forme publique WeChat pour recevoir les messages ordinaires. Documentation de développement WeChat et démarrez le développement après vous. avoir une certaine compréhension du mécanisme de traitement des messages de WeChat (document de développement WeChat pour la réception de messages ordinaires)

Remarques :


1. Concernant la nouvelle tentative de déduplication des messages, c'est le cas. Il est recommandé d'utiliser la déduplication msgid.

2. Si le serveur WeChat ne reçoit pas de réponse dans les cinq secondes, il déconnectera la connexion et relancera la demande, en réessayant trois fois au total. Si le serveur ne peut pas garantir le traitement et la réponse dans les cinq secondes, vous pouvez répondre directement avec une chaîne vide. Le serveur WeChat ne fera rien avec cela et ne lancera pas de nouvelle tentative. Pour plus de détails, veuillez consulter « Envoyer un message – Réponse passive à un message ».

3. Afin d'assurer une plus grande sécurité, les développeurs peuvent configurer le cryptage des messages dans le centre des développeurs sur le site officiel de la plateforme publique. Une fois le cryptage activé, les messages envoyés par les utilisateurs seront cryptés et les messages répondus passivement aux utilisateurs par les comptes officiels doivent également être cryptés (mais les développeurs qui envoient des messages aux utilisateurs via des appels API tels que les interfaces de service client ne seront pas affectés). Pour des instructions détaillées sur le cryptage et le déchiffrement des messages, veuillez consulter « Instructions de cryptage et de déchiffrement des messages ».

Le format XML pour le POST vers le serveur du développeur est :


 <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>
Copier après la connexion


Description du paramètre de réception du paquet de messages :

C#微信开发系列-接收 / 返回文本消息

Renvoie le format XML du message texte :


<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>
Copier après la connexion

Renvoie le message texte Description du paramètre du paquet de données :

C#微信开发系列-接收 / 返回文本消息

②Implémentation du code de réception/retour du message texte

Les développeurs peuvent le faire lui-même Le code permettant au serveur de recevoir le paquet de données XML POST du serveur WeChat est le suivant :

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*******************************
}
Copier après la connexion

Remarque : lors de la réception du message, le format du message doit être converti au format "GBK", sinon, il n'y aura aucun moyen d'analyser le message ultérieurement.

Le code de la méthode de traitement ReturnMessage() est le suivant :

/// <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;
}
Copier après la connexion

Le code de la méthode de traitement TextHandle(xmldoc) est le suivant :

/// <summary>
/// 接受文本消息并回复自定义消息
/// </summary>
/// <param name="xmldoc"></param>
/// <returns></returns>
public string TextHandle(XmlDocument xmldoc)
{
 string responseContent = "";
 XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName");
 XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName");
 XmlNode Content = xmldoc.SelectSingleNode("/xml/Content");
 if (Content != null)
 {
   if (Content.InnerText == "指定回复消息的自定义文本")
   {
     responseContent = string.Format(XMLTemplate.Message_Text,
       FromUserName.InnerText,
       ToUserName.InnerText,
       DateTime.Now.Ticks,
       "自定义回复消息内容");
   }
 }
 return responseContent;
}
Copier après la connexion

La démonstration de code à implémenter la fonction ici étant terminée, d'autres modes de traitement de messages ultérieurs interagissent également sur la base de cette méthode, tels que : recevoir/répondre des messages texte, des messages image, des messages vocaux, des messages vidéo, des messages vidéo courts, des messages de localisation géographique, des messages de lien, etc. , vous pouvez vous référer au code ci-dessus. Réalisation de la fonction.

Pour plus d'articles sur la réception/retour de messages texte sur les séries de développement C# WeChat, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal