Maison  >  Article  >  Applet WeChat  >  Explication détaillée de la méthode de réponse aux messages de développement asp.net WeChat

Explication détaillée de la méthode de réponse aux messages de développement asp.net WeChat

高洛峰
高洛峰original
2017-03-24 14:43:131663parcourir

Lorsqu'un utilisateur WeChat ordinaire envoie un message à un compte public, le serveur WeChat POSTera le paquet de données XML du message à l'URL renseignée par le développeur.

Veuillez noter :

1、关于重试的消息排重,推荐使用msgid排重。
2、微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。详情请见“发送消息-被动回复消息”。
3、为了保证更高的安全保障,开发者可以在公众平台官网的开发者中心处设置消息加密。开启加密后,用户发来的消息会被加密,公众号被动回复用户的消息也需要加密(但开发者通过客服接口等API调用形式向用户发送消息,则不受影响)。关于消息加解密的详细说明,请见“消息加解密说明”。

La structure des paquets XML push de chaque type de message est la suivante :

 

Message texte

 <xml>
 <tousername></tousername>
 <fromusername></fromusername> 
 <createtime>1348831860</createtime>
 <msgtype></msgtype>
 <content></content>
 <msgid>1234567890123456</msgid>
 </xml>
Durée de création du message (entier) table >Message image
 <xml>
 <tousername></tousername>
 <fromusername></fromusername>
 <createtime>1348831860</createtime>
 <msgtype></msgtype>
 <picurl></picurl>
 <mediaid></mediaid>
 <msgid>1234567890123456</msgid>
 </xml>
Paramètre Description
ToUserName
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType text
Content 文本消息内容
MsgId 消息id,64位整型
Développeur

Micro Signal

FromUserName Compte expéditeur (un OpenID)
CreateTime
MsgType texte
Contenu Contenu du message texte
MsgId Identifiant du message, entier 64 bits
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType image
PicUrl 图片链接
MediaId 图片消息媒体id,可以调用多媒体文件下载接口拉取数据。
MsgId 消息id,64位整型
tr>
Paramètre Description
ToUserName td >

DéveloppeurID WeChat

FromUserName Compte expéditeur (un OpenID)CreateTime Heure de création du message (entier)
MsgType image
PicUrl Lien photo
MediaId Identifiant multimédia du message photo, vous pouvez appeler l'interface de téléchargement de fichiers multimédias extrait des données.
MsgId Identifiant du message, entier 64 bits
Message vocal
<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<format></format>
<msgid>1234567890123456</msgid>
</xml>
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType 语音为voice
MediaId 语音消息媒体id,可以调用多媒体文件下载接口拉取数据。
Format 语音格式,如amr,speex等
MsgID 消息id,64位整型

MediaId
Paramètre Description
ToUserName Développeur
<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<format></format>
<recognition></recognition>
<msgid>1234567890123456</msgid>
</xml>
ID WeChat
FromUserName Compte expéditeur (un OpenID)
CreateTime Durée de création du message (entier)
MsgType La voix est une voix
Identifiant multimédia du message vocal, vous pouvez appeler l'interface de téléchargement de fichiers multimédia pour extraire des données.
Format Format vocal, tel que amr, speex, etc.
MsgID td>Identifiant du message, entier 64 bits

Veuillez noter qu'après avoir activé la reconnaissance vocale, chaque fois que l'utilisateur envoie un message vocal au responsable compte, WeChat transmettra le message. Dans le paquet de données XML du message vocal, ajoutez un champ de reconnaissance (Remarque : en raison de la mise en cache du client, les développeurs activent ou désactivent la fonction de reconnaissance vocale, qui prendra effet immédiatement pour les nouveaux abonnés et prendra 24 heures pour déjà les utilisateurs suivis. Les développeurs peuvent suivre à nouveau. Ce compte est destiné aux tests). Le paquet de données XML vocales après activation de la reconnaissance vocale est le suivant :

Dans les champs supplémentaires, Format est le format vocal, généralement amr, et Recognition est le résultat de la reconnaissance vocale, en utilisant l'encodage UTF8.

<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<thumbmediaid></thumbmediaid>
<msgid>1234567890123456</msgid>
</xml>
Message vidéo
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType 视频为video
MediaId 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。
ThumbMediaId 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。
MsgId 消息id,64位整型

Paramètre Description
ToUserName DéveloppeurID WeChat
FromUserName Compte expéditeur (un OpenID)
CreateTime Durée de création du message (entier)
MsgType La vidéo est une vidéo
MediaId Identifiant multimédia du message vidéo, vous pouvez appeler l'interface de téléchargement de fichiers multimédia pour extraire les données.
ThumbMediaId L'ID multimédia de la vignette du message vidéo, vous pouvez appeler l'interface de téléchargement de fichiers multimédia pour extraire les données.
MsgId Identifiant du message, entier 64 bits
<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<thumbmediaid></thumbmediaid>
<msgid>1234567890123456</msgid>
</xml>
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType 小视频为shortvideo
MediaId 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。
ThumbMediaId 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。
MsgId 消息id,64位整型
Petit message vidéoParamètre CreateTime
Description
ToUserName DéveloppeurID WeChat
FromUserName Compte expéditeur (un OpenID)
Durée de création du message (entier)
MsgType La courte vidéo est shortvideo
MediaId Identifiant multimédia du message vidéo, vous pouvez appeler l'interface de téléchargement de fichiers multimédia pour extraire des données.
ThumbMediaId L'ID multimédia de la vignette du message vidéo, vous pouvez appeler l'interface de téléchargement de fichiers multimédia pour extraire les données.
MsgId Identifiant du message, type entier 64 bits

地理位置消息

<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1351776360</createtime>
<msgtype></msgtype>
<location_x>23.134521</location_x>
<location_y>113.358803</location_y>
<scale>20</scale>
<label></label>
<msgid>1234567890123456</msgid>
</xml>
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType location
Location_X 地理位置维度
Location_Y 地理位置经度
Scale 地图缩放大小
Label 地理位置信息
MsgId 消息id,64位整型

链接消息

<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1351776360</createtime>
<msgtype></msgtype>
<title></title>
<description></description>
<url></url>
<msgid>1234567890123456</msgid>
</xml>
参数 描述
ToUserName 接收方微信号
FromUserName 发送方微信号,若为普通用户,则是一个OpenID
CreateTime 消息创建时间
MsgType 消息类型,link
Title 消息标题
Description 消息描述
Url 消息链接
MsgId

消息id,64位整型

Explication détaillée de la méthode de réponse aux messages de développement asp.net WeChat

Dans la continuité de l'article précédent, regardez ResponseXML(postString) ; la méthode est la suivante

///


/// Récupérer les messages envoyés par les utilisateurs
///

///
private void ResponseXML(string postString)
{
                                                                                   ​​​​​XmlElement rootElement = xmlDoc.Do cumentElement;//Récupérer la racine du document
XmlNode MsgType = rootElement.SelectSingleNode("MsgType"); //Récupérer le texte type du message
RequestXML requestXML = new RequestXML();//Déclarez l'instance, récupérez chaque attribut et attribuez une valeur
requestXML.ToUserName = rootElement.SelectSingleNode ("ToUserName").InnerText;//Compte public
requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;//User
requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText ;//Heure de création
requestXML.MsgType = MsgType.InnerText;//Type de message


​​​​​​​​​​​​​​​​​​​​​… requestXML.Content = rootElement.SelectSingleNode("Content").InnerText;
                                                                                                                                                                       Valeurs de localisation géographique latitude, longitude , Taux de zoom de la carte, description de l'emplacement géographique
requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText;
requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText;
requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText;
                              requestXML.Label =            m().ToLower() = = "événement")
                                                                                                                                                                                                                                       requestXML.EventKey = rootElement.SelectSingleNode ("EventKey").InnerText ;
                                                                                                                                                                         Par conséquent, avant d'attribuer une valeur, vous devez penser à activer la fonction de reconnaissance vocale en mode développeur, sinon vous ne pourrez pas l'obtenir. requestXML.Recognition = rootElement.SelectSingleNode("Recognition"). InnerText; requestXML);

}


La fonction de reconnaissance vocale est activée comme suit :





requestXML en est une que j'ai créée séparément, qui déclare les champs d'attributs couramment utilisés dans les messages, comme suit :

///


/// La classe d'entité qui reçoit le message
///

public class RequestXML
{
private String toUserName = Chaîne .Vide;
                                                                                 // /
                                                                                      ID utilisateur WeChat                                                                                            / / //
                            public String                                       > Contenu de chaîne publique {get set ; ;}
/*Ce qui suit est l'attribut unique du type d'événement.
           public String EventName{get;set;>
          /// set;}
/*ci-dessous se trouvent les attributs uniques des types graphiques*/
/// & lt; résumé & gt;
/// Le nombre de messages graphiques
///
                                      public int { get; set; summary>
public string Title { get set;
                                                                  ///
Voici les attributs uniques du type de message type*/
/// & lt; résumé & gt;
/// Latitude de l'emplacement géographique
/// & lt;/summary
Public String local ; //
/// Localisation géographique longitude
                                                                                                                                                                                                                                      
///

public String Recognition { get; set; }


 
}

Continuer à suivre ResponseMsg(requestXML);Le La méthode est la suivante :

private void ResponseMsg(RequestXML requestXML )

                                                                                   string MsgType = request              switch (MsgType)
                   {
                                                                                                                 cas "événement"://Envoyer un message d'événement
si (!string.IsNullOrWhiteSpace(requestXML.EventName ) && requestXML.EventName.ToString().Trim().Equals("subscribe"))

                                                                                   🎜>                                                                                                                                                       if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName .ToString().Trim().Equals("CLIQUER")

                                                                             g(requestXML);//Envoyer un message d'événement
}
Pause

case "voice":
SendVoiceMsg(requestXML);//Envoyer un message vocal
break;
case "location"://Envoyer un message de localisation
      SendMapMsg(requestXML);
break;
par défaut:
break;
}
}
catch (Exception ex)
                                                                                                                                                           
                                                                                                                                                                                    Envoyer un SMS
                                                                                                                                                                                   >             chaîne de réponseContent = FormatText XML(requestXML.FromUserName, requestXML.ToUserName, requestXML.Content); HttpContext.Current.Response.ContentEncoding = Encoding.UTF8 ;
HttpContext.Current.Response.Write(responseContent);

HttpContext.Current.Response.End();

>

La méthode FormatTextXML définit le format

///


/// Renvoyer le contenu XML formaté
Compte public
                                                                                                                     /param>
                                                                                                                                                                                                      Nom d'utilisateur> ;" + DateTime.Now.Subtract(new DateTime( 1970, 1, 1, 8, 0, 0)).TotalSeconds.ToString() + "

De cette façon, le une réponse au message peut être réalisée Si l'utilisateur clique sur le bouton, le code suivant :

case "event"://Envoyer un message d'événement
if. (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("subscribe"))
                                                                                                                                                                                                                                                                 sinon si (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("CLIQUEZ"))

                                                                                                                   ante                                                                                                                                               }

///


; param>
private void SendEventMsg(RequestXML requestXML)
{
string keyStr = requestXML.EventKey.ToString();
switch (keyStr )
{
case "mypay":
          SendPayDetails(requestXML);//Envoyer la facture de salaire
                                            SendWeaterMessage(requestXML);//S fin des prévisions météo
pause;
cas "kaixinyixiao " :
SendKaiXinMessage(requestXML);//Envoyer un ensemble de résultats de sourire heureux
                                 SendUpdateMessage(requestXML);//Envoyer le lien d'informations de modification
> case "yuangonghuodong":
SendYuanGongHuoDong( requêteXML);/ /Envoyer des activités aux étudiants
pause;
case "yu angongtongzhi":
                                                                                                                                                                                                       SendYuanGong Tongzhi(requestXML);  //Envoyer une notification aux employés
                                             
          case "youwenbida":
       SendWenti(requestXML); //Envoyer le lien de soumission des employés :
                               SendWentiList(requestXML);//Envoyer le lien de la liste de questions                        ;
par défaut :
String réponseContent = String.Empty;
réponseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName,"Cette fonctionnalité n'est pas encore disponible ! Veuillez rester à l'écoute !"); réponseContent);
HttpContext.Current.Response.End();
break;
}
}

SendWelComeMsg(requestXML); //Le message graphique renvoyé en suivant

///

/// Le message graphique est renvoyé lors du suivi de

///

                                                                                                                                            string newdate = DateTime.Now. .Subtract(new DateTime(1970, 1, 1, 8, 0, 0)).TotalSeconds.ToString();
       string PUrlfileName = "http://www.deqiaohr. com.cn/weixin/welcome.jpg ";
ResponseContent = string.Format(Message_News_Main, requestXML.FromUserName, requestXML.ToUserName, newdate, "1",
Employee Service Center", "Suzhou Deqiao Human Resources a été fondée en 2002...", PUrlfileName , "http://www.deqiaohr.com.cn/weixin/WxGsjianjie.aspx"));
HttpContext.Current .Response.ContentType = "text/xml";
          HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.End ();
}

Message_News_Main et Message_News_Item sont des formats de messages graphiques et texte

  ///


        /// 返回图文消息主体
        ///

        chaîne statique publique Message_News_Main
        {
            obtenir
{
               return @"
                         
                           
                           {2}
                           
                             {3}
                          
                             {4} 🎜>        antecedents Article
        {
             obtenir
            {
                return @"
                           
                          
                          
                          
                         
         }
        }

///
                              ///                                                 /param>
private void SendVo iceMsg(RequestXML requestXML)
ToString());
HttpContext.Current.Response.ContentType = "text /xml";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current .Response.Write(responseContent) ;
HttpContext.Current.Response.End();
}


Explication détaillée de la méthode de réponse aux messages de développement asp.net WeChatExplication détaillée de la méthode de réponse aux messages de développement asp.net WeChatCliquez pour afficher le texte intégral et accédez directement à la page Web que vous avez écrite. Concernant le problème des images de page Web adaptatives, définissez simplement la largeur. de l'image à 100%. Si vous souhaitez que la page web s'adapte à l'écran, pensez à ajouter Explication détaillée de la méthode de réponse aux messages de développement asp.net WeChat

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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