Heim  >  Artikel  >  WeChat-Applet  >  Detaillierte Erläuterung der Nachrichtenantwortmethode für die WeChat-Entwicklung von asp.net

Detaillierte Erläuterung der Nachrichtenantwortmethode für die WeChat-Entwicklung von asp.net

高洛峰
高洛峰Original
2017-03-24 14:43:131706Durchsuche

Wenn ein gewöhnlicher WeChat-Benutzer eine Nachricht an ein öffentliches Konto sendet, sendet der WeChat-Server das XML-Datenpaket der Nachricht an die vom Entwickler eingegebene URL.

Bitte beachten Sie:

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

Die Push-XML-Paketstruktur jedes Nachrichtentyps ist wie folgt:

 

Textnachricht

 <xml>
 <tousername></tousername>
 <fromusername></fromusername> 
 <createtime>1348831860</createtime>
 <msgtype></msgtype>
 <content></content>
 <msgid>1234567890123456</msgid>
 </xml>
Zeitpunkt der Nachrichtenerstellung (Ganzzahl) Tabelle >Bildnachricht
 <xml>
 <tousername></tousername>
 <fromusername></fromusername>
 <createtime>1348831860</createtime>
 <msgtype></msgtype>
 <picurl></picurl>
 <mediaid></mediaid>
 <msgid>1234567890123456</msgid>
 </xml>
Parameter Beschreibung
ToUserName
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType text
Content 文本消息内容
MsgId 消息id,64位整型
Entwickler

Micro Signal

FromUserName Absenderkonto (eine OpenID)
CreateTime
MsgType Text
Inhalt Textnachrichteninhalt
MsgId Nachrichten-ID, 64-Bit-Ganzzahl
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType image
PicUrl 图片链接
MediaId 图片消息媒体id,可以调用多媒体文件下载接口拉取数据。
MsgId 消息id,64位整型
tr>
Parameter Beschreibung
ToUserName td >

EntwicklerWeChat-ID

FromUserName Absenderkonto (eine OpenID)CreateTime Erstellungszeit der Nachricht (Ganzzahl)
MsgType image
PicUrl Bildlink
MediaId Bildnachrichten-Medien-ID, Sie können die Multimedia-Datei-Download-Schnittstelle aufrufen ruft Daten ab.
MsgId Nachrichten-ID, 64-Bit-Ganzzahl
Sprachnachricht
<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
Parameter Beschreibung
ToUserName Entwickler
<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<format></format>
<recognition></recognition>
<msgid>1234567890123456</msgid>
</xml>
WeChat-ID
FromUserName Absenderkonto (eine OpenID)
CreateTime Nachrichtenerstellungszeit (Ganzzahl)
MsgType Stimme ist Stimme
Sprachnachrichten-Medien-ID, Sie können die Schnittstelle zum Herunterladen von Multimediadateien aufrufen, um Daten abzurufen.
Format Sprachformat wie AMR, Speex usw.
MsgID td>Nachrichten-ID, 64-Bit-Ganzzahl

Bitte beachten Sie, dass nach der Aktivierung der Spracherkennung jedes Mal, wenn der Benutzer eine Sprachnachricht an den Beamten sendet Konto, WeChat wird die Nachricht pushen. Fügen Sie im XML-Datenpaket der Sprachnachricht ein Erkennungsfeld hinzu (Hinweis: Aufgrund des Client-Caching aktivieren oder deaktivieren Entwickler die Spracherkennungsfunktion, die für neue Follower sofort wirksam wird und bereits 24 Stunden dauert Entwickler können diesem Konto erneut folgen. Dieses Konto dient zum Testen. Das Sprach-XML-Datenpaket nach der Aktivierung der Spracherkennung lautet wie folgt:

In den zusätzlichen Feldern ist „Format“ das Sprachformat, normalerweise amr, und „Recognition“ das Spracherkennungsergebnis unter Verwendung der UTF8-Kodierung.

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

Parameter Beschreibung
ToUserName EntwicklerWeChat-ID
FromUserName Absenderkonto (eine OpenID)
CreateTime Erstellungszeit der Nachricht (Ganzzahl)
MsgType Video ist Video
MediaId Medien-ID der Videonachricht. Sie können die Schnittstelle zum Herunterladen von Multimediadateien aufrufen, um Daten abzurufen.
ThumbMediaId Die Medien-ID der Miniaturansicht der Videonachricht. Sie können die Schnittstelle zum Herunterladen von Multimediadateien aufrufen, um die Daten abzurufen.
MsgId Nachrichten-ID, 64-Bit-Ganzzahl
<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位整型
Kleine VideobotschaftParameter CreateTime
Beschreibung
ToUserName EntwicklerWeChat-ID
FromUserName Absenderkonto (eine OpenID)
Erstellungszeit der Nachricht (Ganzzahl)
MsgType Das kurze Video ist shortvideo
MediaId Medien-ID der Videonachricht. Sie können die Schnittstelle zum Herunterladen von Multimediadateien aufrufen, um Daten abzurufen.
ThumbMediaId Die Medien-ID der Miniaturansicht der Videonachricht. Sie können die Schnittstelle zum Herunterladen von Multimediadateien aufrufen, um die Daten abzurufen.
MsgId Nachrichten-ID, 64-Bit-Ganzzahltyp

地理位置消息

<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位整型

Detaillierte Erläuterung der Nachrichtenantwortmethode für die WeChat-Entwicklung von asp.net

Weiter zum vorherigen Artikel, schauen Sie sich ResponseXML(postString) an; die Methode ist wie folgt

///


/// Von Benutzern gesendete Nachrichten abrufen
///

///
private void ResponseXML(string postString)
{
                                                                     Element;//Holen Sie sich das Stammverzeichnis des Dokuments
XmlNode MsgType = rootElement.SelectSingleNode("MsgType");/Holen Sie sich den Text Typ der Nachricht
RequestXML requestXML = new RequestXML();//Deklarieren Sie die Instanz, rufen Sie jedes Attribut ab und weisen Sie einen Wert zu
requestXML.ToUserName = rootElement.SelectSingleNode ("ToUserName").InnerText;//Öffentliches Konto
requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;//Benutzer
requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText ;//Erstellungszeit
requestXML.MsgType = MsgType.InnerText;//Nachrichtentyp

 
                                                                                                ​​​requestXML.Content = rootElement.SelectSingleNode("Content").InnerText;
                                                                                                                                          Werte geografischer Standort, Breitengrad, Längengrad, Kartenzoomverhältnis, geografische Standortbeschreibung
requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText;
requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText;
requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText;
  m().ToLower() = = "event")
                                                                                                                                                                                                                                   requestXML.EventKey = rootElement.SelectSingleNode.InnerText;
                                                                                               auf die Spracherkennungsfunktion im Entwicklermodus, sonst können Sie sie nicht abrufen. requestXML.Recognition = rootElement.SelectSingleNode("Recognition").InnerText;
Die Spracherkennungsfunktion wird wie folgt aktiviert:





requestXML ist eine von mir separat erstellte Klasse, die die häufig verwendeten Attributfelder in Nachrichten als deklariert folgt:

///


/// Die Entitätsklasse, die die Nachricht empfängt
///

öffentliche Klasse RequestXML
{
private String toUserName = String .Empty; }
/*Das Folgende ist das eindeutige Attribut des Ereignistyps
           public String EventName{get;set;}
          /// string eventKey {get; ;}
/*unten sind die eindeutigen Attribute der Grafiktypen*/
/// & lt; Zusammenfassung & gt; Zusammenfassung>                   🎜                                                  /// /// mary>
Das Folgende sind die eindeutigen Attribute des Nachrichtentyps type*/
/// & lt; Zusammenfassung & gt; /
/// Längengrad des geografischen Standorts
                                                                                                                                                                                                                                                        🎜> ///

public String Recognition { get; set; Methode ist wie folgt:

private void ResponseMsg(RequestXML requestXML )
                                                                string MsgType = request             switch (MsgType)
                                                                                                                      case "event"://Send event message
if (!string.IsNullOrWhiteSpace(requestXML.EventName ) && requestXML.EventName.ToString().Trim().Equals("subscribe"))
                                                                                  🎜>                                                                                                                  if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName .ToString().Trim().Equals("CLICK"))
                                                                                      g(requestXML);//Send event message
}

Pause;

case „voice“:
SendVoiceMsg(requestXML);//Eine Sprachnachricht senden
break;
case „location“://Send location message
      SendMapMsg(requestXML);
Break;
Standard:
break; requestXML.ToUserName, requestXML.Content); > }

FormatTextXML-Methode legt das Format fest

///


/// Den formatierten XML-Inhalt zurückgeben
Öffentlich
                                                                                              /param>
                                                                                                                                                                                                                                   Benutzername> ;" + DateTime.Now.Subtract(new DateTime( 1970, 1, 1, 8, 0, 0)).TotalSeconds.ToString() + " 1";
           

Auf diese Weise wird die Wenn der Benutzer auf die Schaltfläche klickt, wird der folgende Code angezeigt:

case "event"://Send event message
if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("subscribe"))

                                                                                                                                                                                                      else if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("CLICK"))

                                                                                                                                                                                                                                                                       

///


; param>
private void SendEventMsg(RequestXML requestXML)
{
string keyStr = requestXML.EventKey.ToString();
switch (keyStr )
{
case "mypay":
          SendPayDetails(requestXML);//Gehaltsabrechnung senden
                                                SendWeaterMessage(requestXML);/ /Wettervorhersage senden
Pause;
Fall „kaixinyixiao " :
SendKaiXinMessage(requestXML);//Sende einen Happy-Smile-Ergebnissatz
                                SendUpdateMessage(requestXML);//Sende Änderungsinformationslink
> case "yuangonghuodong":
. SendYuanGongHuoDong(re questXML);/ /Schüleraktivitäten senden
Pause;
Fall "yu. angongtongzhi":
                                                                                                                                                                                   SendYuanGongTongzhi(requestXML);  //Mitarbeiterbenachrichtigung senden
                            Wenti(Anfrage senden                                                                                                                               :
SendWentiList (requestXML);//Link zur Fragenliste senden
                                                             ;
Standard:
String ResponseContent =. String.Emp ty;
ResponseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName,"Diese Funktion ist noch nicht verfügbar! Bleiben Sie dran!"); );
HttpContext.Current.Response.End();
break;
}
}

SendWelComeMsg(requestXML); //Die grafische Nachricht wird zurückgegeben, wenn
folgt

///

/// Die grafische Nachricht wurde zurückgegeben, wenn

///

folgt                                                                                                                                    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 wurde 2002 gegründet ...", 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 und Message_News_Item sind Grafik- und Textnachrichtenformate
{

            bekommen
{
                return @"
                         .
                          
                          {2}
                        ;![CDATA[news]]>
                           {3}
                          . {3}            {4}
                         
                       
🎜> {  
        {
            get
            {
                return @"
                         
                           
                          
                          
                         .
      }
        }

///


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


Detaillierte Erläuterung der Nachrichtenantwortmethode für die WeChat-Entwicklung von asp.netDetaillierte Erläuterung der Nachrichtenantwortmethode für die WeChat-Entwicklung von asp.netKlicken Sie, um den vollständigen Text anzuzeigen und direkt zu der von Ihnen geschriebenen Webseite zu springen. Bezüglich des Problems der Anpassung von Webseitenbildern stellen Sie einfach die Breite ein Wenn Sie möchten, dass sich die Webseite an den Bildschirm anpasst, denken Sie daran, Detaillierte Erläuterung der Nachrichtenantwortmethode für die WeChat-Entwicklung von asp.net

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Nachrichtenantwortmethode für die WeChat-Entwicklung von asp.net. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn