>  기사  >  위챗 애플릿  >  WeChat 개발은 다양한 메시지에 대한 응답을 구현합니다.

WeChat 개발은 다양한 메시지에 대한 응답을 구현합니다.

高洛峰
高洛峰원래의
2017-03-08 16:40:071605검색

이전에 완료하지 못한 부분에 이어 이제 간단한 텍스트 상호작용을 구현할 수 있습니다. 이 글에서는 다양한 메시지와 이벤트에 대한 응답을 구현하겠습니다.

프로젝트 GitHub 주소: https://github.com/Andyahui/xgyxsh_WeiXin

SDK GitHub 주소: https:/ / github.com/JeffreySu/WeiXinMPSDK/

SDK 공식 소개 블로그: http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course- index .html


1: 다양한 메시지에 대한 간단한 답장 구현

현재 기본 프레임워크를 기반으로 보면 나머지 응답 메커니즘 어렵지 않습니다. 단지 우리가 이 SDK에 익숙하지 않다는 것뿐입니다. 이제 텍스트 응답이 구현되었으므로 OnTextRequest 메서드를 다시 작성할 때 다음과 같이 많은 다시 메서드가 있음을 발견했습니다.

WeChat 개발은 다양한 메시지에 대한 응답을 구현합니다.

이렇게 다양한 메시지 메커니즘과 이벤트 메커니즘을 구현해야 합니다. 해당 메소드를 구현하여 WeChat 서버에서 보낸 다양한 POST 요청에 응답할 수 있습니다. 웹사이트에 요구사항이 많으면 비즈니스 로직이 이러한 메소드로 처리됩니다.

  • 1.1: 음성 요청 처리

        public override IResponseMessageBase OnVoiceRequest(RequestMessageVoice requestMessage)
        {
            var responseVoice = base.CreateResponseMessage<responsemessagevoice>();
            responseVoice.Voice=new Voice()
            {                
                MediaId = requestMessage.MediaId
            };           
            return responseVoice;
        }</responsemessagevoice>

클라이언트가 보낸 음성 요청은 먼저 응답이 없는 경우 OnVoiceRequest 메서드로 이동합니다. , 기본 응답 방법으로 사용자의 메시지에 응답합니다. 위 방법 테스트에서는 기본적으로 자체 음성으로 응답하는 음성 응답을 만들었습니다. MediaId는 자료 관리 인터페이스를 통해 업로드된 멀티미디어 파일에서 얻은 ID입니다. 실제로 WeChat 서버는 전송된 음성 ID를 저장합니다. 사용자에 의한

  • 1.2: 이미지 요청 처리

rreee

                         그러면 문자로 답변드리겠습니다. 복잡한 논리가 필요한 경우 여기에 직접 추가할 수 있습니다. 그중 base.CreateResponseMessage()는

  • 1.3: 지리적 위치 요청 처리

        public override IResponseMessageBase OnImageRequest(RequestMessageImage requestMessage)
        {
            var responseImage = base.CreateResponseMessage<responsemessagetext>();
            responseImage.Content = "来自图片,ahui";
            return responseImage;
        }</responsemessagetext>

처리 중입니다. 지리적 위치 요청을 하면 사용자는 자신의 지리적 위치를 보내고 우리는 사용자에게 원하는 정보를 보낼 수 있습니다. 위는 Baidu Maps를 호출하여 자체 정보를 다시 보내는 인터페이스입니다.

  • 1.4: 링크 요청 처리

        public override IResponseMessageBase OnLocationRequest(RequestMessageLocation requestMessage)
        {
            //返回的是图文消息,是关于地址的图文消息。
            var responseLocation = base.CreateResponseMessage<responsemessagenews>();

            var markersList = new List<baidumarkers>();
            markersList.Add(new BaiduMarkers()
            {
                Size=BaiduMarkerSize.m,
                Color ="red",
                Label="A",
                Latitude =requestMessage.Location_X,
                Longitude=requestMessage.Location_Y,
            });
            var mapUrl = BaiduMapHelper.GetBaiduStaticMap(requestMessage.Location_Y,requestMessage.Location_X,1,13,markersList);
            responseLocation.Articles.Add(new Article()
            {
                Description = string.Format("您刚才发送了地理位置信息。Location_X:{0},Location_Y:{1},Scale:{2},标签:{3}",requestMessage.Location_X,requestMessage.Location_Y,requestMessage.Scale,requestMessage.Label),
                PicUrl = "http://pic.cnblogs.com/avatar/679140/20141128195544.png",
                Title="张辉的地图",
                Url = mapUrl
            });
            return responseLocation;
        }</baidumarkers></responsemessagenews>

링크와 관련하여 이전의 많은 메시지에 응답했습니다. 그래픽 및 문자 메시지에 회신하지만 WeChat의 회신 내용을 준수할 수 있도록 내부 매개변수에 주의를 기울여야 합니다.

2: POST 이벤트에 응답

WeChat 사용자와 공식 계정 간의 상호 작용 중에 일부 사용자 작업으로 인해 WeChat 서버가 개발팀에 요청을 보냅니다. 이벤트의 형태 작성자가 설정한 웹사이트 서버에서 특정 이벤트를 통해 사용자 정보에 응답할 수 있으며 이를 처리하는 방법은 다음과 같습니다.

WeChat 개발자 문서 이벤트 푸시:

http://mp.weixin.qq.com/wiki/7/9f89d962eba4c5924ed95b513ba69d9b.html

Event_ 로고가 있는 대표자는 이벤트 메서드입니다. 응답을 구현하려면 이러한 메서드를 다시 작성해야 합니다. 공식 웹사이트에서 읽을 수 있는 많은 소개가 있습니다.

  • 2.1: 이벤트 구독

        public override IResponseMessageBase OnLinkRequest(RequestMessageLink requestMessage)
        {
            var responseLink = base.CreateResponseMessage<responsemessagenews>();
            responseLink.Articles.Add(new Article()
            {
                Title="处理链接来的请求。",
                Description =requestMessage.Description,
                PicUrl = "http://pic.cnblogs.com/avatar/679140/20141128195544.png",
                Url=requestMessage.Url
            });
            return responseLink;
        }</responsemessagenews>

는 테스트하기에 좋은 텍스트 콘텐츠로 답장을 보낼 수 있습니다. 이미지, 음성, 텍스트 등 모든 유형. 이는 프로젝트의 요구 사항에 따라 다릅니다.

  • 2.2: 메뉴를 클릭하여 메시지를 가져올 때 이벤트 푸시

        /// <summary>
        /// 订阅事件
        /// </summary>
        /// <param>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage)
        {
            var responseSubscribe = base.CreateResponseMessage<responsemessagetext>();
            responseSubscribe.Content = "欢迎订阅,张辉欢迎您。";
            return responseSubscribe;
        }</responsemessagetext>

여기서 이 클릭 이벤트가 무엇인지 모를 수도 있습니다. 메뉴바에 설정한 내용은 나중에 메뉴바의 기능을 구현해 보겠습니다.

  • 2.3: 메뉴 점프 링크 클릭 시 이벤트 푸시

        /// <summary>
        /// 点击事件
        /// </summary>
        /// <param>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_ClickRequest(RequestMessageEvent_Click requestMessage)
        {
            var respondeEvert = base.CreateResponseMessage<responsemessagetext>();
            respondeEvert.Content = "点击事件,";
            return respondeEvert;
        }</responsemessagetext>

3: WeChat 공개 계정 맞춤 메뉴 구현

기본적으로 모든 WeChat 페이지에는 메뉴 표시줄이 있습니다. 현재 우리 계정은 테스트 계정 페이지를 오랫동안 검색했지만 찾을 수 없습니다. 마지막으로 쿼리 후 개발자 디버깅에서 설정할 수 있습니다. 또 다른 방법은 SDK에서 제공하는 페이지를 사용하여 이를 달성하는 것입니다.

  • 3.1: 개발자 디버깅 도구를 사용하여 사용자 정의 메뉴 구현

WeChat 개발은 다양한 메시지에 대한 응답을 구현합니다.

开发者调试工具网址:https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3%E8%B0%83%E8%AF%95&form=%E4%BA%8B%E4%BB%B6%E6%B6%88%E6%81%AF

     我们发现这个还需要access_token来请求,但是我们从之前的开发中都没有发现有这个,那么这个是什么呢,仔细的看官方的介绍吧;

获取access_token,我们可以通过开发者调试工具,利用AppId和secret来获取;

WeChat 개발은 다양한 메시지에 대한 응답을 구현합니다.

在第一幅图中我们还需要body,调用接口的json数据包;可以参考微信开发文档里面的进行设置。注意里面就会看到click和view这两个事件类型。

{
        "button": [
            {
                "name": "IT资讯", 
                "sub_button": [
                    {
                        "type": "view", 
                        "name": "博客园", 
                        "url": "http://m.cnblogs.com/", 
                        "sub_button": [ ]
                    }, 
                    {
                        "type": "view", 
                        "name": "IT新闻", 
                        "url": "http://news.cnblogs.com/m", 
                        "sub_button": [ ]
                    }, 
                    {
                        "type": "click", 
                        "name": "关于开发者", 
                        "key": "http://m.cnblogs.com/?u=netxiaohui", 
                        "sub_button": [ ]
                    }
                ]
            }, 
            {
                "name": "校园生活", 
                "sub_button": [
                    {
                        "type": "view", 
                        "name": "搜索", 
                        "url": "http://www.baidu.com/", 
                        "sub_button": [ ]
                    }, 
                    {
                        "type": "view", 
                        "name": "视频", 
                        "url": "http://v.qq.com/", 
                        "sub_button": [ ]
                    }, 
                    {
                        "type": "click", 
                        "name": "关注我们", 
                        "key": "V1001_GOOD", 
                        "sub_button": [ ]
                    }
                ]
            }, 
            {
                "name": "学生", 
                "sub_button": [
                    {
                        "type": "view", 
                        "name": "搜索", 
                        "url": "http://www.soso.com/", 
                        "sub_button": [ ]
                    }, 
                    {
                        "type": "view", 
                        "name": "视频", 
                        "url": "http://v.qq.com/", 
                        "sub_button": [ ]
                    }, 
                    {
                        "type": "click", 
                        "name": "关注我们", 
                        "key": "V1001_GOOD", 
                        "sub_button": [ ]
                    }
                ]
            }
        ]
    }

    关于里面的事件类型,我们可以自己随意的设置,都会响应我们前面设置的菜单事件,我们可以进行一系列的逻辑代码的处理。

3.2:SDK的自定义菜单

      通过下面的网址可以 进行设置,里面还是需要前面的两个参数AppId和secret或者Token来设置微信的自定义菜单。

设置自定义菜单网址:http://sdk.weixin.senparc.com/Menu

WeChat 개발은 다양한 메시지에 대한 응답을 구현합니다.WeChat 개발은 다양한 메시지에 대한 응답을 구현합니다.

四:最终的结果展示

    实现上面的代码就可以实现相应的功能。这个SDK简单的使用我们现在已经大体的会了,在之后的博文中会慢慢的解析这个SDK里面的一些东西,会从Request,Response等基础开始。

WeChat 개발은 다양한 메시지에 대한 응답을 구현합니다.WeChat 개발은 다양한 메시지에 대한 응답을 구현합니다.


위 내용은 WeChat 개발은 다양한 메시지에 대한 응답을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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