


Explication détaillée de la méthode de réponse aux messages de développement asp.net WeChat
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>
Paramètre | Description | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ToUserName |
Micro Signal |
||||||||||||||
FromUserName | Compte expéditeur (un OpenID) | ||||||||||||||
CreateTime | Durée de création du message (entier)|||||||||||||||
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位整型 |
Paramètre | Description | ||
---|---|---|---|
ToUserName td > | DéveloppeurID WeChat |
||
FromUserName | Compte expéditeur (un OpenID) | tr>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 |
<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位整型 |
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> Copier après la connexion |
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>
参数 | 描述 |
---|---|
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>
Copier après la connexionCopier après la connexion
参数
描述
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
小视频为shortvideo
MediaId
视频消息媒体id,可以调用多媒体文件下载接口拉取数据。
ThumbMediaId
视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。
MsgId
消息id,64位整型
Petit message vidéo
ParamètreDescription
ToUserName
DéveloppeurID WeChat
FromUserName
Compte expéditeur (un OpenID)
CreateTimeDuré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>
Copier après la connexion
参数
描述
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>
Copier après la connexion
参数
描述
ToUserName
接收方微信号
FromUserName
发送方微信号,若为普通用户,则是一个OpenID
CreateTime
消息创建时间
MsgType
消息类型,link
Title
消息标题
Description
消息描述
Url
消息链接
MsgId
消息id,64位整型

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();
}

Cliquez 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 
<xml> <tousername></tousername> <fromusername></fromusername> <createtime>1357290913</createtime> <msgtype></msgtype> <mediaid></mediaid> <thumbmediaid></thumbmediaid> <msgid>1234567890123456</msgid> </xml>
<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>
<xml> <tousername></tousername> <fromusername></fromusername> <createtime>1351776360</createtime> <msgtype></msgtype> <title></title> <description></description> <url></url> <msgid>1234567890123456</msgid> </xml>
消息id,64位整型

/// 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;>
///
/*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 :
{
cas "événement"://Envoyer un message d'événement
si (!string.IsNullOrWhiteSpace(requestXML.EventName ) && requestXML.EventName.ToString().Trim().Equals("subscribe"))
}
Pause
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);
/// Renvoyer le contenu XML formaté
Compte public
/param>
Nom d'utilisateur> ;
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"))
; 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 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 @"
{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();
}
Cliquez 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
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

