


Conseils pour développer des réponses aux messages dans asp.net WeChat
Mar 10, 2017 pm 02:45 PMCet article présente principalement le contenu pertinent de la réponse aux messages dans le développement asp.net WeChat. Les amis qui en ont besoin peuvent s'y référer
Lorsque les utilisateurs ordinaires de WeChat envoient des messages à des comptes publics, le serveur WeChat POSTera le message. message paquet de données XML à l'URL renseignée par le développeur.
Veuillez noter?:
1 Concernant la déduplication des messages de nouvelle tentative, 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 se déconnectera 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??.
La structure des paquets XML push de chaque type de message est la suivante?:
Message texte
<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>
Message photo
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[image]]></MsgType> <PicUrl><![CDATA[this is a url]]></PicUrl> <MediaId><![CDATA[media_id]]></MediaId> <MsgId>1234567890123456</MsgId> </xml>
Message vocal
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1357290913</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <Format><![CDATA[Format]]></Format> <MsgId>1234567890123456</MsgId> </xml>
Veuillez noter qu'après que a activé la reconnaissance vocale, le l'utilisateur enverra Lors de l'envoi d'un message vocal à un compte officiel, WeChat ajoutera un champ de reconnaissance au paquet XML du message vocal poussé (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 pour les utilisateurs déjà suivis. Cela prend 24 heures pour prendre effet. Les développeurs peuvent suivre à nouveau ce compte à des fins de test). Le paquet de données XML vocales une fois la reconnaissance vocale activée est le suivant?:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1357290913</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <Format><![CDATA[Format]]></Format> <Recognition><![CDATA[騰訊微信團隊]]></Recognition> <MsgId>1234567890123456</MsgId> </xml>
Dans les champs supplémentaires, Format est le format vocal, généralement amr, la reconnaissance est le résultat de la reconnaissance vocale, utilisant le codage UTF8.
Message vidéo
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1357290913</CreateTime> <MsgType><![CDATA[video]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId> <MsgId>1234567890123456</MsgId> </xml>
Petit message vidéo
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1357290913</CreateTime> <MsgType><![CDATA[shortvideo]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId> <MsgId>1234567890123456</MsgId> </xml>
Message de géolocalisation
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[location]]></MsgType> <Location_X>23.134521</Location_X> <Location_Y>113.358803</Location_Y> <Scale>20</Scale> <Label><![CDATA[位置信息]]></Label> <MsgId>1234567890123456</MsgId> </xml>
Message de lien
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[link]]></MsgType> <Title><![CDATA[公眾平臺官網(wǎng)鏈接]]></Title> <Description><![CDATA[公眾平臺官網(wǎng)鏈接]]></Description> <Url><![CDATA[url]]></Url> <MsgId>1234567890123456</MsgId> </xml>
Dans la continuité de l'article précédent, regardez ResponseXML (postString)?; suit
/// <summary> /// 獲取用戶發(fā)送的消息 /// </summary> /// <param name="postString"></param> private void ResponseXML(string postString) { //使用XMLDocument加載信息結構 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(postString); XmlElement rootElement = xmlDoc.DocumentElement;//獲取文檔的根 XmlNode MsgType = rootElement.SelectSingleNode("MsgType"); //獲取消息的文本類型 RequestXML requestXML = new RequestXML();//聲明實例,獲取各個屬性并賦值 requestXML.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;//公眾號 requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;//用戶 requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;//創(chuàng)建時間 requestXML.MsgType = MsgType.InnerText;//消息類型 ///對消息的不同類型進行賦值 if (requestXML.MsgType == "text") { //賦值文本信息內容 requestXML.Content = rootElement.SelectSingleNode("Content").InnerText; } if (requestXML.MsgType.Trim() == "location") { ///賦值地理位置緯度,經(jīng)度,地圖縮放比例,地理位置說明 requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText; requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText; requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText; requestXML.Label = rootElement.SelectSingleNode("Label").InnerText; } if (requestXML.MsgType.Trim().ToLower() == "event") { ///賦值事件名稱和事件key值 requestXML.EventName = rootElement.SelectSingleNode("Event").InnerText; requestXML.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; } if (requestXML.MsgType.Trim().ToLower() == "voice") { ///賦值語音識別結果,賦值之前一定要記得在開發(fā)者模式下,把語音識別功能開啟,否則獲取不到 requestXML.Recognition = rootElement.SelectSingleNode("Recognition").InnerText; } ResponseMsg(requestXML); }
La fonction de reconnaissance vocale est activée comme suit?:
requestXML是我單獨創(chuàng)建的一個類,該類聲明了消息中常用的屬性字段,如下:
/// <summary> /// 接收消息的實體類 /// </summary> public class RequestXML { private String toUserName = String.Empty; /// <summary> /// 本公眾號 /// </summary> public String ToUserName{get;set;} /// <summary> /// 用戶微信號 /// </summary> public String FromUserName{get;set;} /// <summary> /// 創(chuàng)建時間 /// </summary> public String CreateTime{get;set;} /// <summary> /// 信息類型 /// </summary> public String MsgType{get;set;} /// <summary> /// 信息內容 /// </summary> public String Content{get;set;} /*以下為事件類型的消息特有的屬性*/ /// <summary> /// 事件名稱 /// </summary> public String EventName{get;set;} /// <summary> /// 事件值 /// </summary> public string EventKey { get; set; } /*以下為圖文類型的消息特有的屬性*/ /// <summary> /// 圖文消息的個數(shù) /// </summary> public int ArticleCount { get; set; } /// <summary> /// 圖文消息的標題 /// </summary> public string Title { get; set; } /// <summary> /// 圖文消息的簡介 /// </summary> public string Description { get; set; } /// <summary> /// 圖文消息圖片的鏈接地址 /// </summary> public string PicUrl { get; set; } /// <summary> /// 圖文消息詳情鏈接地址 /// </summary> public string Url { get; set; } /// <summary> /// 圖文消息集合 /// </summary> public List<RequestXML> Articles { get; set;} /*以下為地理位置類型的消息特有的屬性*/ /// <summary> /// 地理位置緯度 /// </summary> public String Location_X { get; set; } /// <summary> /// 地理位置經(jīng)度 /// </summary> public String Location_Y { get; set; } /// <summary> /// 地圖縮放比例 /// </summary> public String Scale { get; set; } /// <summary> /// 地圖位置說明 /// </summary> public String Label { get; set; } /// <summary> /// 語音消息特有字段 /// </summary> public String Recognition { get; set; } }
繼續(xù)關注 ResponseMsg(requestXML);方法如下
private void ResponseMsg(RequestXML requestXML) { string MsgType = requestXML.MsgType; try { //根據(jù)消息類型判斷發(fā)送何種類型消息 switch (MsgType) { case "text": SendTextCase(requestXML);//發(fā)送文本消息 break; case "event"://發(fā)送事件消息 if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("subscribe")) { SendWelComeMsg(requestXML);//關注時返回的圖文消息 } else if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("CLICK")) { SendEventMsg(requestXML);//發(fā)送事件消息 } break; case "voice": SendVoiceMsg(requestXML);//發(fā)送語音消息 break; case "location"://發(fā)送位置消息 SendMapMsg(requestXML); break; default: break; } } catch (Exception ex) { HttpContext.Current.Response.Write(ex.ToString()); } }
先來關注發(fā)送文本消息,SendTextCase(requestXML);//發(fā)送文本消息
/// <summary> /// 發(fā)送文本 /// </summary> /// <param name="requestXML"></param> private void SendTextCase(RequestXML requestXML) { string responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName, requestXML.Content); HttpContext.Current.Response.ContentType = "text/xml"; HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); HttpContext.Current.Response.End(); }
FormatTextXML方法制定格式
/// <summary> /// 返回格式化的Xml格式內容 /// </summary> /// <param name="p1">公眾號</param> /// <param name="p2">用戶號</param> /// <param name="p3">回復內容</param> /// <returns></returns> private string FormatTextXML(string p1, string p2, string p3) { return "<xml><ToUserName><![CDATA[" + p1 + "]]></ToUserName><FromUserName><![CDATA[" + p2 + "]]></FromUserName><CreateTime>" + DateTime.Now.Subtract(new DateTime(1970, 1, 1, 8, 0, 0)).TotalSeconds.ToString() + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + p3 + "]]></Content><FuncFlag>1</FuncFlag></xml>"; }
這樣就能實現(xiàn)消息的應答,如果用戶點擊的按鈕,如下代碼:
case "event"://發(fā)送事件消息 if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("subscribe")) { SendWelComeMsg(requestXML);//關注時返回的圖文消息 } else if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("CLICK")) { SendEventMsg(requestXML);//發(fā)送事件消息 } break; /// <summary> /// 發(fā)送響應事件消息 /// </summary> /// <param name="requestXML"></param> private void SendEventMsg(RequestXML requestXML) { string keyStr = requestXML.EventKey.ToString(); switch (keyStr) { case "mypay": SendPayDetails(requestXML);//發(fā)送薪資賬單 break; case "tianqiyubao": SendWeaterMessage(requestXML);//發(fā)送天氣預報 break; case "kaixinyixiao": SendKaiXinMessage(requestXML);//發(fā)送開心一笑結果集 break; case "updateMessage": SendUpdateMessage(requestXML);//發(fā)送修改信息鏈接 break; case "yuangonghuodong": SendYuanGongHuoDong(requestXML);//發(fā)送學生活動 break; case "yuangongtongzhi": SendYuanGongTongZhi(requestXML);//發(fā)送員工通知 break; case "youwenbida": SendWenti(requestXML);//發(fā)送員工提交問題鏈接 break; case "mywen": SendWentiList(requestXML);//發(fā)送問題列表鏈接 break; case "PhoneSerices": SendKeFuMessage(requestXML);//接入客服 break; default: String responseContent = String.Empty; responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName,"此功能暫未開放!敬請期待!"); HttpContext.Current.Response.ContentType = "text/xml"; HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); HttpContext.Current.Response.End(); break; } }
SendWelComeMsg(requestXML);//關注時返回的圖文消息
/// <summary> /// 發(fā)送關注時的圖文消息 /// </summary> /// <param name="requestXML"></param> private void SendWelComeMsg(RequestXML requestXML) { String responseContent = String.Empty; 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", string.Format(Message_News_Item, "歡迎關注德橋員工服務中心", "蘇州德橋人力資源創(chuàng)立于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.Write(responseContent); HttpContext.Current.Response.End(); }
Message_News_Main 和Message_News_Item是圖文消息格式化
/// <summary> /// 返回圖文消息主體 /// </summary> public static string Message_News_Main { get { return @"<xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>{3}</ArticleCount> <Articles> {4} </Articles> </xml> "; } } /// <summary> /// 返回圖文消息項 /// </summary> public static string Message_News_Item { get { return @"<item> <Title><![CDATA[{0}]]></Title> <Description><![CDATA[{1}]]></Description> <PicUrl><![CDATA[{2}]]></PicUrl> <Url><![CDATA[{3}]]></Url> </item>"; } } /// <summary> /// 發(fā)送響應語音識別結果 /// </summary> /// <param name="requestXML"></param> private void SendVoiceMsg(RequestXML requestXML) { string responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName, "您剛才說的語音消息識別結果為:" + requestXML.Recognition.ToString()); HttpContext.Current.Response.ContentType = "text/xml"; HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); HttpContext.Current.Response.End(); }
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

Undress AI Tool
Images de déshabillage gratuites

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.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

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)

PHP est un langage de script open source largement utilisé dans le développement Web et la programmation c?té serveur, notamment dans le développement de WeChat. Aujourd'hui, de plus en plus d'entreprises et de développeurs commencent à utiliser PHP pour le développement de WeChat, car il est devenu un langage de développement vraiment facile à apprendre et à utiliser. Dans le développement de WeChat, le cryptage et le décryptage des messages sont une question très importante car ils impliquent la sécurité des données. Pour les messages sans méthodes de cryptage et de décryptage, les pirates peuvent facilement obtenir les données, ce qui constitue une menace pour les utilisateurs.

Dans le développement des comptes publics WeChat, la fonction de vote est souvent utilisée. La fonction de vote est un excellent moyen pour les utilisateurs de participer rapidement aux interactions, et c'est également un outil important pour organiser des événements et recueillir des opinions. Cet article vous présentera comment utiliser PHP pour implémenter la fonction de vote WeChat. Obtenez l'autorisation du compte officiel WeChat. Tout d'abord, vous devez obtenir l'autorisation du compte officiel WeChat. Sur la plateforme publique WeChat, vous devez configurer l'adresse API du compte public WeChat, le compte officiel et le token correspondant au compte public. Dans le processus de développement en langage PHP, nous devons utiliser le PH officiellement fourni par WeChat

Avec la popularité de WeChat, de plus en plus d’entreprises commencent à l’utiliser comme outil marketing. La fonction de messagerie de groupe WeChat est l'un des moyens importants permettant aux entreprises de mener du marketing WeChat. Cependant, si vous comptez uniquement sur l’envoi manuel, il s’agit d’une tache extrêmement longue et laborieuse pour les spécialistes du marketing. Il est donc particulièrement important de développer un outil de messagerie de masse WeChat. Cet article présentera comment utiliser PHP pour développer des outils d'envoi de masse WeChat. 1. Travail de préparation Pour développer les outils d'envoi de masse WeChat, nous devons ma?triser les points techniques suivants : Connaissance de base du développement de la plateforme publique PHP WeChat Outils de développement : Sub

WeChat est actuellement l'une des plateformes sociales comptant la plus grande base d'utilisateurs au monde. Avec la popularité de l'Internet mobile, de plus en plus d'entreprises commencent à prendre conscience de l'importance du marketing WeChat. Lors du marketing WeChat, le service client est un élément crucial. Afin de mieux gérer la fenêtre de discussion du service client, nous pouvons utiliser le langage PHP pour le développement de WeChat. 1. Introduction au développement PHP WeChat PHP est un langage de script open source c?té serveur largement utilisé dans le domaine du développement Web. En combinaison avec l'interface de développement fournie par la plateforme publique WeChat, nous pouvons utiliser le langage PHP pour mener WeChat

Dans le développement des comptes publics WeChat, la gestion des balises utilisateur est une fonction très importante, qui permet aux développeurs de mieux comprendre et gérer leurs utilisateurs. Cet article explique comment utiliser PHP pour implémenter la fonction de gestion des balises utilisateur WeChat. 1. Obtenez l'openid de l'utilisateur WeChat Avant d'utiliser la fonction de gestion des balises utilisateur WeChat, nous devons d'abord obtenir l'openid de l'utilisateur. Dans le développement des comptes publics WeChat, il est courant d'obtenir l'openid via l'autorisation de l'utilisateur. Une fois l'autorisation de l'utilisateur terminée, nous pouvons obtenir l'utilisateur via le code suivant

Alors que WeChat devient un outil de communication de plus en plus important dans la vie des gens, sa fonction de messagerie agile est rapidement privilégiée par un grand nombre d'entreprises et de particuliers. Pour les entreprises, développer WeChat en une plate-forme marketing est devenu une tendance, et l'importance du développement de WeChat est progressivement devenue plus importante. Parmi eux, la fonction d'envoi de groupe est encore plus largement utilisée. Alors, en tant que programmeur PHP, comment implémenter des enregistrements d'envoi de messages de groupe ? Ce qui suit vous donnera une brève introduction. 1. Comprendre les connaissances en développement liées aux comptes publics WeChat. Avant de comprendre comment mettre en ?uvre des enregistrements d'envoi de messages de groupe, je

Comment utiliser PHP pour développer des comptes publics WeChat Les comptes publics WeChat sont devenus un canal important de promotion et d'interaction pour de nombreuses entreprises, et PHP, en tant que langage Web couramment utilisé, peut également être utilisé pour développer des comptes publics WeChat. Cet article présentera les étapes spécifiques pour utiliser PHP pour développer des comptes publics WeChat. étape 1 : Obtenez le compte développeur du compte officiel WeChat. Avant de commencer le développement du compte officiel WeChat, vous devez demander un compte développeur du compte officiel WeChat. Pour le processus d'inscription spécifique, veuillez vous référer au site officiel de la plateforme publique WeChat

Avec le développement d’Internet et des appareils mobiles intelligents, WeChat est devenu un élément indispensable dans les domaines social et marketing. Dans cette ère de plus en plus numérique, la manière d'utiliser PHP pour le développement de WeChat est devenue la préoccupation de nombreux développeurs. Cet article présente principalement les points de connaissances pertinents sur la fa?on d'utiliser PHP pour le développement WeChat, ainsi que certains conseils et précautions. 1. Préparation de l'environnement de développement Avant de développer WeChat, vous devez d'abord préparer l'environnement de développement correspondant. Plus précisément, vous devez installer l'environnement d'exploitation PHP et la plateforme publique WeChat
