일반 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位整型 |
参数 | 描述 |
---|---|
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 인코딩을 사용한 음성 인식 결과입니다.
参数 | 描述 |
---|---|
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;}
///
/*아래는 그래픽 유형의 고유 속성입니다*/
/// & 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)
~ ~ 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();
/// /// /// /// /// /// 클릭하면 전체 텍스트를 볼 수 있고 작성한 웹 페이지로 바로 이동합니다. 적응형 웹 페이지 이미지 문제와 관련하여 너비만 설정하면 됩니다. 웹페이지를 화면에 맞게 조정하려면
~ // 공개 계정
| ~ ~ 사용자 이름> 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!