>위챗 애플릿 >위챗 개발 >asp.net WeChat 개발 메시지 응답 방법에 대한 자세한 설명

asp.net WeChat 개발 메시지 응답 방법에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-03-24 14:43:131718검색

일반 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
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType text
Content 文本消息内容
MsgId 消息id,64位整型
개발자

WeChat ID td >

FromUserName 발신자 계정(OpenID) CreateTime 메시지 생성 시간(정수) MsgType 텍스트 콘텐츠 텍스트 메시지 내용 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>
매개변수CreateTime
설명
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비트 정수
음성 인식을 활성화한 후 사용자가 공식 담당자에게 음성 메시지를 보낼 때마다 계정에 있으면 WeChat이 메시지를 푸시합니다. 음성 메시지 XML 데이터 패킷에 인식 필드를 추가합니다(참고: 클라이언트 캐싱으로 인해 개발자는 음성 인식 기능을 활성화 또는 비활성화합니다. 이 기능은 새 팔로어에게 즉시 적용되며 이미 24시간이 소요됩니다) 팔로우한 사용자는 개발자가 다시 팔로우할 수 있습니다. 이 계정은 테스트용입니다. 음성 인식을 활성화한 후의 음성 XML 데이터 패킷은 다음과 같습니다.

<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>
tr>
매개변수 설명
ToUserName 개발자WeChat ID
FromUserName 발신자 계정(OpenID)
CreateTime 메시지 생성 시간(정수)
MsgType 동영상은 동영상임
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位整型

asp.net WeChat 개발 메시지 응답 방법에 대한 자세한 설명

이전 글에 이어 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();
}


asp.net WeChat 개발 메시지 응답 방법에 대한 자세한 설명asp.net WeChat 개발 메시지 응답 방법에 대한 자세한 설명클릭하면 전체 텍스트를 볼 수 있고 작성한 웹 페이지로 바로 이동합니다. 적응형 웹 페이지 이미지 문제와 관련하여 너비만 설정하면 됩니다. 웹페이지를 화면에 맞게 조정하려면 asp.net WeChat 개발 메시지 응답 방법에 대한 자세한 설명

위 내용은 asp.net WeChat 개발 메시지 응답 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.