微信開發(fā)如何實現(xiàn)各種消息的響應(yīng)-創(chuàng)新互聯(lián)

小編給大家分享一下微信開發(fā)如何實現(xiàn)各種消息的響應(yīng),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了察哈爾右翼前免費建站歡迎大家使用!

                                                       繼續(xù)之前我們沒有完成的部分,現(xiàn)在可以實現(xiàn)簡單的文本交互,這篇將實現(xiàn)各種消息,事件的響應(yīng)。

項目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

一:實現(xiàn)各類消息的簡單回復(fù)

基于現(xiàn)在的底層框架,我們不難看出其余的響應(yīng)機制不是很難,只是我們不是很熟悉這個SDK而已;現(xiàn)在已經(jīng)實現(xiàn)了文本回復(fù),我們在重寫OnTextRequest方法的時候發(fā)現(xiàn)有很多的重新方法,如下。

微信開發(fā)如何實現(xiàn)各種消息的響應(yīng)

這個就是我們需要實現(xiàn)各種消息機制和事件機制的方法??梢酝ㄟ^實現(xiàn)對應(yīng)的方法來響應(yīng)微信服務(wù)器發(fā)送過來的各種POST請求,如果網(wǎng)站有很多的需求,那么處理的業(yè)務(wù)邏輯就是在這些方法中進行。

  • 1.1:處理語音請求;

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

我們客戶端發(fā)送的語音請求先到OnVoiceRequest方法中,要是沒有任何的回復(fù)就到默認回復(fù)方法中回復(fù)用戶消息。在上面方法測試中我們創(chuàng)建了語音的回復(fù),默認回復(fù)它自己的語音,MediaId是通過素材管理接口上傳的多媒體文件得到的ID,其實就是微信服務(wù)器保存用戶發(fā)送語音的ID;

  • 1.2:處理圖片請求;

        public override IResponseMessageBase OnImageRequest(RequestMessageImage requestMessage)
        {
            var responseImage = base.CreateResponseMessage<ResponseMessageText>();
            responseImage.Content = "來自圖片,ahui";
            return responseImage;
        }

用戶發(fā)送的圖片請求,之后我們回復(fù)文本。要是需要復(fù)雜的邏輯我們可以自己在這里添加。其中的base.CreateResponseMessage<ResponseMessageText>()就是創(chuàng)建了一個回復(fù)的文本類型;

  • 1.3:處理地理位置請求;

        public override IResponseMessageBase OnLocationRequest(RequestMessageLocation requestMessage)
        {
            //返回的是圖文消息,是關(guān)于地址的圖文消息。
            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("您剛才發(fā)送了地理位置信息。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;
        }

處理地理位置請求,用戶發(fā)送自己的地理位置,我們可以給用戶發(fā)送任何我們想發(fā)送的信息,上面是調(diào)用百度地圖的接口,將它自己的信息又重新的發(fā)送。

  • 1.4:處理鏈接請求;

        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;
        }

關(guān)于鏈接也是回復(fù)圖文消息,之前的很多都是回復(fù)圖文消息,但是我們需要注意里面的參數(shù),這樣才可以符合微信的回復(fù)內(nèi)容。

二:POST事件的回復(fù)

微信用戶和公眾號的交互過程中,用戶的一些操作會使微信服務(wù)器以事件的形式發(fā)送請求到開發(fā)者設(shè)置的網(wǎng)站服務(wù)器上,某些事件可以讓我們回復(fù)用戶信息;下面就是來處理這些的。

微信開發(fā)者文檔的事件推送:

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

帶有Event_標識的代表就是事件的方法,我們需要重寫這些方法來實現(xiàn)我們的回復(fù)。這里面有很多可以看官網(wǎng)的介紹。

  • 2.1:訂閱事件

        /// <summary>
        /// 訂閱事件
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage)
        {
            var responseSubscribe = base.CreateResponseMessage<ResponseMessageText>();
            responseSubscribe.Content = "歡迎訂閱,張輝歡迎您。";
            return responseSubscribe;
        }

回復(fù)的是文本內(nèi)容,這有利于測試,我們可以添加任何的邏輯,也可以回復(fù)任何的圖文,語音,文本等類型。這就要看項目的需求了。

  • 2.2:點擊菜單拉取消息時的事件推送

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

這里你可能不知道這個點擊事件是什么,這個是在菜單欄那邊設(shè)置的,我們之后就會實現(xiàn)菜單欄的功能。

  • 2.3:點擊菜單跳轉(zhuǎn)鏈接時的事件推送

        public override IResponseMessageBase OnEvent_ViewRequest(RequestMessageEvent_View requestMessage)
        {
            var responseView = base.CreateResponseMessage<ResponseMessageText>();
            responseView.Content = "點擊帶有view的菜單欄";
            return responseView;
        }

三:實現(xiàn)微信公眾號自定義菜單

每一個微信的頁面下基本上都有菜單欄,人家的那個是通過常規(guī)的設(shè)置可以實現(xiàn)的,現(xiàn)在我們的只是測試號,在測試號頁面找了好久都沒有發(fā)現(xiàn),最后經(jīng)過查詢在開發(fā)者調(diào)試中可以設(shè)置。還有一種是利用SDK提供的頁面來實現(xiàn)。

  • 3.1:利用開發(fā)者調(diào)試工具實現(xiàn)自定義菜單

微信開發(fā)如何實現(xiàn)各種消息的響應(yīng)

開發(fā)者調(diào)試工具網(wǎng)址: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

我們發(fā)現(xiàn)這個還需要access_token來請求,但是我們從之前的開發(fā)中都沒有發(fā)現(xiàn)有這個,那么這個是什么呢,仔細的看官方的介紹吧;

獲取access_token,我們可以通過開發(fā)者調(diào)試工具,利用AppId和secret來獲?。?/p>

微信開發(fā)如何實現(xiàn)各種消息的響應(yīng)

在第一幅圖中我們還需要body,調(diào)用接口的json數(shù)據(jù)包;可以參考微信開發(fā)文檔里面的進行設(shè)置。注意里面就會看到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": "關(guān)于開發(fā)者", 
                        "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": "關(guān)注我們", 
                        "key": "V1001_GOOD", 
                        "sub_button": [ ]
                    }
                ]
            }, 
            {
                "name": "學(xué)生", 
                "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": "關(guān)注我們", 
                        "key": "V1001_GOOD", 
                        "sub_button": [ ]
                    }
                ]
            }
        ]
    }

關(guān)于里面的事件類型,我們可以自己隨意的設(shè)置,都會響應(yīng)我們前面設(shè)置的菜單事件,我們可以進行一系列的邏輯代碼的處理。

3.2:SDK的自定義菜單

通過下面的網(wǎng)址可以 進行設(shè)置,里面還是需要前面的兩個參數(shù)AppId和secret或者Token來設(shè)置微信的自定義菜單。

設(shè)置自定義菜單網(wǎng)址:http://sdk.weixin.senparc.com/Menu

微信開發(fā)如何實現(xiàn)各種消息的響應(yīng)微信開發(fā)如何實現(xiàn)各種消息的響應(yīng)

四:最終的結(jié)果展示

實現(xiàn)上面的代碼就可以實現(xiàn)相應(yīng)的功能。這個SDK簡單的使用我們現(xiàn)在已經(jīng)大體的會了,在之后的博文中會慢慢的解析這個SDK里面的一些東西,會從Request,Response等基礎(chǔ)開始。

微信開發(fā)如何實現(xiàn)各種消息的響應(yīng)微信開發(fā)如何實現(xiàn)各種消息的響應(yīng)

以上是“微信開發(fā)如何實現(xiàn)各種消息的響應(yīng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁標題:微信開發(fā)如何實現(xiàn)各種消息的響應(yīng)-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://bm7419.com/article22/dioecc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)動態(tài)網(wǎng)站、外貿(mào)建站、商城網(wǎng)站、微信小程序、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化