asp.net WeChat 개발 메시지 응답 방법에 대한 자세한 설명
일반 WeChat 사용자가 공개 계정으로 메시지를 보내면 WeChat 서버는 메시지의 XML 데이터 패킷을 개발자가 입력한 URL에 게시합니다.
참고:
1、关于重试的消息排重,推荐使用msgid排重。 2、微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。详情请见“发送消息-被动回复消息”。 3、为了保证更高的安全保障,开发者可以在公众平台官网的开发者中心处设置消息加密。开启加密后,用户发来的消息会被加密,公众号被动回复用户的消息也需要加密(但开发者通过客服接口等API调用形式向用户发送消息,则不受影响)。关于消息加解密的详细说明,请见“消息加解密说明”。
각 메시지 유형의 푸시 XML 패킷 구조는 다음과 같습니다.
문자 메시지
<xml> <tousername></tousername> <fromusername></fromusername> <createtime>1348831860</createtime> <msgtype></msgtype> <content></content> <msgid>1234567890123456</msgid> </xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | text |
Content | 文本消息内容 |
MsgId | 消息id,64位整型 |
WeChat ID td >
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | image |
PicUrl | 图片链接 |
MediaId | 图片消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
MsgId | 消息id,64位整型 |
<xml> <tousername></tousername> <fromusername></fromusername> <createtime>1348831860</createtime> <msgtype></msgtype> <picurl></picurl> <mediaid></mediaid> <msgid>1234567890123456</msgid> </xml>
설명 | |
---|---|
ToUserName | 개발자WeChat ID |
FromUserName | 발신자 계정(OpenID) |
메시지 생성 시간(정수) | |
MsgType | 이미지 |
PicUrl | 사진 링크 |
MediaId | 사진 메시지 미디어 ID, 멀티미디어 파일 다운로드 인터페이스를 호출하여 데이터를 가져올 수 있습니다. |
MsgId | 메시지 ID, 64비트 정수 |
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 语音为voice |
MediaId | 语音消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
Format | 语音格式,如amr,speex等 |
MsgID | 消息id,64位整型 |
<xml> <tousername></tousername> <fromusername></fromusername> <createtime>1357290913</createtime> <msgtype></msgtype> <mediaid></mediaid> <format></format> <msgid>1234567890123456</msgid> </xml>
매개변수 | 설명 |
---|---|
ToUserName | 개발 WeChat ID |
FromUserName | 발신자 계정(OpenID) |
CreateTime td> | 메시지 생성 시간(정수) |
MsgType | 음성은 음성이다 |
MediaId | 음성 메시지 미디어 ID, 멀티미디어 파일 다운로드 인터페이스를 호출하여 데이터를 가져올 수 있습니다. |
형식 | amr, speex 등과 같은 음성 형식 |
MsgID td>메시지 ID, 64비트 정수 |
<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<format></format>
<recognition></recognition>
<msgid>1234567890123456</msgid>
</xml>
로그인 후 복사
추가 필드에서 Format은 음성 형식(보통 amr)이고 Recognition은 UTF8 인코딩을 사용한 음성 인식 결과입니다.
<xml> <tousername></tousername> <fromusername></fromusername> <createtime>1357290913</createtime> <msgtype></msgtype> <mediaid></mediaid> <format></format> <recognition></recognition> <msgid>1234567890123456</msgid> </xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 视频为video |
MediaId | 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
ThumbMediaId | 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 |
MsgId | 消息id,64位整型 |
<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<thumbmediaid></thumbmediaid>
<msgid>1234567890123456</msgid>
</xml>
로그인 후 복사로그인 후 복사
매개변수
설명
ToUserName
개발자WeChat ID
FromUserName
발신자 계정(OpenID)
CreateTime
메시지 생성 시간(정수)
MsgType
동영상은 동영상임 tr>
MediaId
동영상 메시지 미디어 ID, 멀티미디어 파일 다운로드 인터페이스를 호출하여 데이터를 가져올 수 있습니다.
ThumbMediaId
동영상 메시지 썸네일의 미디어 ID로, 멀티미디어 파일 다운로드 인터페이스를 호출하여 데이터를 가져올 수 있습니다.
MsgId
메시지 ID, 64비트 정수
参数
描述
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
小视频为shortvideo
MediaId
视频消息媒体id,可以调用多媒体文件下载接口拉取数据。
ThumbMediaId
视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。
MsgId
消息id,64位整型
작은 영상 메시지<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<thumbmediaid></thumbmediaid>
<msgid>1234567890123456</msgid>
</xml>
로그인 후 복사로그인 후 복사
매개변수
설명
사용자 이름
개발자 WeChat ID
FromUserName
발신자 계정(OpenID)
CreateTime
메시지 생성 시간(정수)
MsgType
짧은 동영상은 shortvideo
MediaId
동영상 메시지 미디어 ID, 멀티미디어 파일 다운로드 인터페이스를 호출하여 데이터를 가져올 수 있습니다.
ThumbMediaId
동영상 메시지 썸네일의 미디어 ID로, 멀티미디어 파일 다운로드 인터페이스를 호출하여 데이터를 가져올 수 있습니다.
MsgId
메시지 ID, 64비트 정수
地理位置消息
<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位整型

이전 글에 이어 ResponseXML(postString)을 보면 메소드는 다음과 같습니다
///
/// 사용자가 보낸 메시지 가져오기
///
///
private void ResponseXML(string postString)
{
XmlElement rootElement = xmlDoc.Docu mentElement;//문서 루트 가져오기
XmlNode MsgType = rootElement.SelectSingleNode("MsgType") //텍스트 가져오기 메시지 유형
RequestXML requestXML = new RequestXML();//인스턴스 선언, 각 속성 가져오기 및 값 할당
requestXML.ToUserName = rootElement.SelectSingleNode ("ToUserName").InnerText;//공용 계정
requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;//User
requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText ;//생성 시간
requestXML.MsgType = MsgType.InnerText;//메시지 유형
requestXML.Content = rootElement.SelectSingleNode("Content").InnerText;
~ 값 지리적 위치 위도, 경도, 지도 확대/축소 비율, 지리적 위치 설명
requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText;
requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText;
requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText;
m().ToLower() = = "이벤트")
~ > 결과적으로 값을 할당하기 전에 그렇지 않으면 requestXML.Recognition = rootElement.SelectSingleNode("Recognition").InnerText);
}
음성 인식 기능은 다음과 같이 켜집니다.
requestXML은 제가 별도로 만든 클래스입니다. 메시지에서 자주 사용되는 속성 필드를 다음과 같이 선언합니다. 다음은:
///
/// 메시지를 수신하는 엔터티 클래스
///
public class RequestXML
{
private String toUserName = 문자열 .Empty;
// /
사용자 WeChat ID | > 공개 문자열 콘텐츠 {get; ;}
/*다음은 이벤트 유형의 고유 속성입니다.
public String EventName{get;set;}
/// 문자열 eventKey {get; set;}
/*아래는 그래픽 유형의 고유 속성입니다*/
/// & lt; 요약 & gt; /// 그래픽 메시지 수
///
공개 int ArticleCount { get; set; summary>
공개 문자열 제목 }
///
공개 문자열 설명;
/// ///
🎜> ///
다음은 메시지 유형 유형의 고유 속성입니다*/
/// & lt; 요약 & gt; /// 지리적 위치 위도
/// & lt;/summary & gt; 공개 문자열 집합 }
/ //
/// 지리적 위치 경도
~ > public String Label { get; }
///
/// 🎜> ///
public String Recognition { get; set }
}
계속해서 ResponseMsg(requestXML); 방법은 다음과 같습니다.
private void ResponseMsg(RequestXML requestXML )
문자열 MsgType = 요청 스위치(MsgType)
> > string.IsNullOrWhiteSpace(requestXML.EventName ) && requestXML.EventName.ToString().Trim().Equals("subscribe")) ~ ~ g(requestXML);//이벤트 메시지 보내기
}
휴식
Case "voice":
SendVoiceMsg(requestXML);//음성 메시지 보내기
break;
Case "location"://위치 메시지 보내기
SendMapMsg(requestXML);
break;
기본값:
break;
}
}
catch(예외)
> ~ 문자 보내기
> FormatTextXML(requestXML.FromUserName, requestXML.ToUserName, requestXML.Content); HttpContext.Current.Response.ContentEncoding = Encoding.UTF8 ;
HttpContext.Current.Response.Write(responseContent);
HttpContext.Current.Response.End();
}FormatTextXML 메소드로 형식을 설정합니다
///
~ // 공개 계정
| ~ ~ 사용자 이름> ToUserName>" + DateTime.Now.Subtract(new DateTime(1970, 1, 1, 8, 0 , 0)).TotalSeconds.ToString() + " 1 ";
이런 식으로 사용자가 메시지 응답을 구현할 수 있습니다. 버튼을 클릭하면 다음 코드가 나타납니다.
case "event"://이벤트 메시지 보내기
if
(!string.IsNullOrWhiteSpace(requestXML.EventName) &&
requestXML.EventName.ToString().Trim().Equals("구독"))
~
else if (!string.IsNullOrWhiteSpace(requestXML.EventName) &&
requestXML.EventName.ToString().Trim().Equals("CLICK"))
~ ~ . ///
; param>
private void SendEventMsg(RequestXML requestXML)
{
string keyStr = requestXML.EventKey.ToString();
스위치(keyStr )
{
사례 "mypay":
SendPayDetails(requestXML);//급여 청구서 보내기
SendWeaterMessage(requestXML);/ /날씨 예보 보내기
휴식;
사례 "kaixinyixiao " :
SendKaiXinMessage(requestXML);//행복한 미소 결과 세트 보내기
SendUpdateMessage(requestXML);//수정 정보 링크 보내기
> 케이스 "yuangonghuodong":
SendYuanGongHuoDong(re 퀘스트XML);/ /학생 활동 보내기
휴식;
사례 "yu angongtongzhi":
~ SendYuanGongTongzhi(requestXML); //직원 알림 보내기
사례 "youwenbida": SendWenti(요청 :
SendWentiList (requestXML);//질문 목록 링크 보내기
;
기본값:
문자열 응답 내용 = String.Emp 타이;
responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName,"이 기능은 아직 사용할 수 없습니다! 계속 지켜봐 주시기 바랍니다!") tpContext.Current. Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.Write( responseContent);
HttpContext.Current.Response.End();
break;
}
}
SendWelComeMsg(requestXML); //다음을 수행할 때 반환되는 그래픽 메시지
///
/// 팔로우 시 반환되는 그래픽 메시지 ///
string PUrlfileName = "http://www.deqiaohr. com.cn/weixin/welcome.jpg ";
responseContent = string.Format(Message_News_Main, requestXML.FromUserName, requestXML.ToUserName, newdate, "1",
직원 서비스 센터", "Suzhou Deqiao Human Resources는 2002년에 설립되었습니다...", PUrlfileName , "http://www.deqiaohr.com.cn/weixin/WxGsjianjie.aspx"));
HttpContext.Current .Response.ContentType = "text/xml";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
}
Message_News_Main 및 Message_News_Item은 그래픽 및 텍스트 메시지 형식입니다
///
/// 返回图文消息主体
///
공개 정적 문자열 Message_News_Main
{
받기
{
@"
{2}
{4}
기사>
🎜> }
///
/// 返回图文消息项
///
공개 정적 문자열 Message_News_Item
{
받기
{
@"
반환
";
}
}
///
/// /param>
private void iceMsg(RequestXML requestXML)
ToString());
HttpContext.Current.Response.ContentType = "텍스트 /xml";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current .Response.Write(responseContent) ;
HttpContext.Current.Response.End();
}

클릭하면 전체 텍스트를 볼 수 있고 작성한 웹 페이지로 바로 이동합니다. 적응형 웹 페이지 이미지 문제와 관련하여 너비만 설정하면 됩니다. 웹페이지를 화면에 맞게 조정하려면 
<xml> <tousername></tousername> <fromusername></fromusername> <createtime>1357290913</createtime> <msgtype></msgtype> <mediaid></mediaid> <thumbmediaid></thumbmediaid> <msgid>1234567890123456</msgid> </xml>
<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位整型

/// 사용자가 보낸 메시지 가져오기
///
///
private void ResponseXML(string postString)
{
XmlElement rootElement = xmlDoc.Docu mentElement;//문서 루트 가져오기
XmlNode MsgType = rootElement.SelectSingleNode("MsgType") //텍스트 가져오기 메시지 유형
RequestXML requestXML = new RequestXML();//인스턴스 선언, 각 속성 가져오기 및 값 할당
requestXML.ToUserName = rootElement.SelectSingleNode ("ToUserName").InnerText;//공용 계정
requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;//User
requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText ;//생성 시간
requestXML.MsgType = MsgType.InnerText;//메시지 유형
requestXML.Content = rootElement.SelectSingleNode("Content").InnerText;
~ 값 지리적 위치 위도, 경도, 지도 확대/축소 비율, 지리적 위치 설명
requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText;
requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText;
requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText;
m().ToLower() = = "이벤트")
~ > 결과적으로 값을 할당하기 전에 그렇지 않으면 requestXML.Recognition = rootElement.SelectSingleNode("Recognition").InnerText);
}
음성 인식 기능은 다음과 같이 켜집니다.
requestXML은 제가 별도로 만든 클래스입니다. 메시지에서 자주 사용되는 속성 필드를 다음과 같이 선언합니다. 다음은:
/// 메시지를 수신하는 엔터티 클래스
///
public class RequestXML
{
private String toUserName = 문자열 .Empty;
// /
사용자 WeChat ID | > 공개 문자열 콘텐츠 {get; ;}
/*다음은 이벤트 유형의 고유 속성입니다.
public String EventName{get;set;}
///
/*아래는 그래픽 유형의 고유 속성입니다*/
/// & lt; 요약 & gt; /// 그래픽 메시지 수
///
공개 int ArticleCount { get; set; summary>
공개 문자열 제목 }
///
공개 문자열 설명;
/// ///
🎜> ///
다음은 메시지 유형 유형의 고유 속성입니다*/
/// & lt; 요약 & gt; /// 지리적 위치 위도
/// & lt;/summary & gt; 공개 문자열 집합 }
/ //
/// 지리적 위치 경도
~ > public String Label { get; }
///
/// 🎜> ///
public String Recognition { get; set }
}
private void ResponseMsg(RequestXML requestXML )
문자열 MsgType = 요청 스위치(MsgType)
}
SendVoiceMsg(requestXML);//음성 메시지 보내기
break;
Case "location"://위치 메시지 보내기
SendMapMsg(requestXML);
break;
기본값:
break;
}
}
catch(예외)
> ~ 문자 보내기
> FormatTextXML(requestXML.FromUserName, requestXML.ToUserName, requestXML.Content); HttpContext.Current.Response.ContentEncoding = Encoding.UTF8 ;
HttpContext.Current.Response.Write(responseContent);
HttpContext.Current.Response.End();
~ // 공개 계정
| ~ ~ 사용자 이름> ToUserName>
이런 식으로 사용자가 메시지 응답을 구현할 수 있습니다. 버튼을 클릭하면 다음 코드가 나타납니다.
case "event"://이벤트 메시지 보내기
if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("구독"))
~ else if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("CLICK"))
~ ~ .
///
; param>
private void SendEventMsg(RequestXML requestXML)
{
string keyStr = requestXML.EventKey.ToString();
스위치(keyStr )
{
사례 "mypay":
SendPayDetails(requestXML);//급여 청구서 보내기
SendWeaterMessage(requestXML);/ /날씨 예보 보내기
휴식;
사례 "kaixinyixiao " :
SendKaiXinMessage(requestXML);//행복한 미소 결과 세트 보내기
SendUpdateMessage(requestXML);//수정 정보 링크 보내기
> 케이스 "yuangonghuodong":
SendYuanGongHuoDong(re 퀘스트XML);/ /학생 활동 보내기
휴식;
사례 "yu angongtongzhi":
~ SendYuanGongTongzhi(requestXML); //직원 알림 보내기
사례 "youwenbida": SendWenti(요청 :
SendWentiList (requestXML);//질문 목록 링크 보내기
;
기본값:
문자열 응답 내용 = String.Emp 타이;
responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName,"이 기능은 아직 사용할 수 없습니다! 계속 지켜봐 주시기 바랍니다!") tpContext.Current. Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.Write( responseContent);
HttpContext.Current.Response.End();
break;
}
}
SendWelComeMsg(requestXML); //다음을 수행할 때 반환되는 그래픽 메시지
///
///
string PUrlfileName = "http://www.deqiaohr. com.cn/weixin/welcome.jpg ";
responseContent = string.Format(Message_News_Main, requestXML.FromUserName, requestXML.ToUserName, newdate, "1",
직원 서비스 센터", "Suzhou Deqiao Human Resources는 2002년에 설립되었습니다...", PUrlfileName , "http://www.deqiaohr.com.cn/weixin/WxGsjianjie.aspx"));
HttpContext.Current .Response.ContentType = "text/xml";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
}
Message_News_Main 및 Message_News_Item은 그래픽 및 텍스트 메시지 형식입니다
///
/// 返回图文消息主体
///
공개 정적 문자열 Message_News_Main
{
받기
{
@"
기사>
///
/// 返回图文消息项
///
공개 정적 문자열 Message_News_Item
{
받기
{
@"
반환
}
}
///
/// /param>
private void iceMsg(RequestXML requestXML)
ToString());
HttpContext.Current.Response.ContentType = "텍스트 /xml";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current .Response.Write(responseContent) ;
HttpContext.Current.Response.End();
}
클릭하면 전체 텍스트를 볼 수 있고 작성한 웹 페이지로 바로 이동합니다. 적응형 웹 페이지 이미지 문제와 관련하여 너비만 설정하면 됩니다. 웹페이지를 화면에 맞게 조정하려면
위 내용은 asp.net WeChat 개발 메시지 응답 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









