一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

私域電商軟件及相關增值服務提供商    

免費試用

微信技術實操(11):公眾賬號接收非文字消息

2017-08-24|HiShop
導讀:用戶都是用使用文字在進行交互的,但是有時候使用圖片、語音、視頻以及地理位置等可以實現一些非常棒的功能,比如語音提醒公眾號里的發送語音就可以實現定時的事件提醒功能...

  用戶都是用使用文字在進行交互的,但是有時候使用圖片、語音、視頻以及地理位置等可以實現一些非常棒的功能,比如“語音提醒”公眾號里的發送語音就可以實現定時的事件提醒功能;比如ZTalk曾經搞過微信拍照曬電腦桌面的活動(響應的人太少,桑心……);比如一些預定本地化服務的公眾號里發送當前地理位置就可以查詢周邊商家。

  要實現這些功能首先得學會接收這些消息類型,比文字消息類型肯定要復雜很多了,目前我們能夠接收的消息類型只有圖片、地理位置以及退訂消息,其他的如鏈接消息、語音消息是需要官方授權的。接收到用戶消息以后回復的消息類型可以參考第11章,目前也就那三種。

  一、圖片消息接收

  相信拍照是目前智能手機用戶用得最多的功能沒有之一,在微信里也是一樣,看看每天朋友圈里分享的那些照片就知道了,那么如何接收和保存用戶照片捏,首先我們得了解用戶發送的圖片消息結構,如下圖:

  

 

 

  大家可以看到圖片消息除了固定的消息發送用戶ID、接收公眾號ID、生成時間等固定字段外,多了一個圖片鏈接PicUrl,這個就是用戶向公眾賬號發送圖片后,保存到微信的服務器上返回給公眾號的鏈接,該圖片鏈接格式如下:

  

 

 

  也就是說我們如果要把圖片保存到本地服務器,就要先將圖片從微信服務器上抓取下來,當然你也可以直接保存這個鏈接以后直接訪問,這個看具體應用了。今天要講的是圖片保存到本地服務器上,請看下面代碼:

  

 

 

  由于圖片消息是另一種消息類型,因此代碼添加位置可以位于文字消息上面或者下面,只要別在文字消息的判斷語句內就行。然后我來解釋下每個語句的作用:

  第20行,判斷消息類型是否為圖片消息,條件為$form_MsgType==image;

  第24行,獲取圖片消息數據中的圖片鏈接并賦值給$from_PicUrl;

  第26行,生成要保存到本地服務器的圖片名稱,為了避免重復新圖片命名使用了發送用戶的OPENID+當前時間戳,文件的后綴名我是直接設定為jpg文件。(由于從圖片鏈接上無法獲取到圖片后綴名,又懶得通過頭文件獲取圖片格式,就直接固定死了JPG格式,貌似沒有什么問題,哈哈哈);

  第28行,SAE上的內置接口類很多,SaeFetchurl是一個用來抓取遠程網頁的類,使用這個類就可以很方便的實現抓取其他網站的內容,否則使用PHP的curl或者file_get_contents這些估計還得解釋半天,這句代碼是新建一個抓取類的對象。

  第30行,執行抓取圖片鏈接,其中抓取的函數是fetch(),圖片鏈接是之前賦值的$from_PicUrl,抓取后的結果賦值給$res;

  第32行,判斷抓取結果,errno()返回的是抓取結束后的錯誤代碼,如果為0則成功,其他的就是不成功。

  第35行,圖片抓取成功后,新建一個Storage的對象,我們要保存圖片了。

  第37行,這句代碼其實已經在以前出現多次,這次將抓取的內容($res)寫入指定的文件($filename),并保存到Storage里,請注意把“weixincourse”替換成自己創建的Storage空間名。

  第39行到41行,保存成功后給用戶提示圖片上傳成功。

  第45行到48行,文件沒有抓取到提示用戶圖片上傳失敗。

  當然我們如果嚴謹一點,還要判斷圖片文件是否保存成功,可以把第37行后面改寫一下,如下圖:

  

 

 

  大家可以嘗試把Storage的空間名字故意寫錯,看看會有什么樣的提示。如果提示上傳成功,我們到SAE的Storage列表里就應該可以看到剛上傳的文件了。

  

 

 

  二、地理位置消息接收

  手機上基于地理位置的APP很多,是個應用現在都得跟LBS扯上點關系,SoLoMo里重要的一環就是地理位置,微信里也有很多應用是跟地理位置相關的,比如查個本地天氣、附近酒店餐館啥的。今天舉的例子是查本地天氣。先了解下地理位置消息的結構,如下圖:

  

 

 

  地理位置消息多了四項,分別是經緯度的X和Y坐標、地圖縮放比例以及地址信息,而實際上由于網絡原因我們經常是收不到地址信息的,只有坐標信息,因此地理位置的開發基本圍繞著坐標來。先來看本地天氣查詢代碼吧,如下圖:

  

 

 

  代碼添加位置同圖片消息,另起一個消息類型判斷語句,可以放在圖片消息前面或者后面。前面說了我們主要使用的是經緯度,經緯度是可以通過一些地圖api接口來獲取實際地址、周邊商家等信息的,天氣代碼這里我用的是百度地圖API接口,主要是因為它有URL接口,代碼解釋開始:

  第21行,消息類型判斷語句,消息類型為location;

  第24行到27行,將用戶推送地理消息的經緯度、地圖比例、地址信息分別賦值。經緯度分別為Location_X和Location_Y,相當于用經線和緯線的交叉點來標注地理位置。Scale是用戶發送地理位置時地圖的縮放比例。Label是地址信息(經常是獲取不到的,獲取了也沒啥用,因為都是連在一起的,無法提取地市縣信息)。

  第29行,定義百度地圖API接口的反向地址解析URL,反向地址解析是指通過經緯度獲取當前位置的地址信息。

  第31行,由于各家地圖不一樣因此傳輸過來的經緯度也會有所偏差,這里我選的是wgs84即手機GPS的坐標。

  第33行,又要抓頁面了,先建個抓取類的對象。

  第35行,百度地圖API接口的反向地址解析規則是URL+坐標類型+坐標值,其中$map_api_url.$map_coord_type兩個變量拼接就是URL+坐標類型,然后再加上經緯度參數,用location=經度,緯度來賦值。

  這里說下URL的規則,URL就是大家??吹降木W頁鏈接,一般由HTTP://后面加網址加參數組成,主要說下參數,參數一般是“參數名=賦值”組成,普通的URL參數格式是跟在網址后面第一個參數前用“?”號分隔,第二個參數開始用“&”分隔,參數在程序里是可以獲取到的,我們上面獲取坐標解析的實際地址形式為:

  

 

 

  接收的實際地址為http://api.map.baidu.com/geocoder,獲取到的參數是coord_type和location,值為相應后面跟著的。

  第37行,判斷是否抓取成功,如果抓取成功$geocoder的數據實際是如下格式:

  

 

 

  這里一大堆信息里只需要提取城市,即CITY這個標簽內的數據。

  第40行,這是一個正則表達式,比較復雜,作用就是根據規則將$geocoder里的北京市數據提取出來賦予$city這個變量,如果成功這個數據是會是一個多維數組,其中city標簽內的數據即北京市是存儲在$city[1][0]里的,$city[0][0]的值是“北京市”;

  第41行,將$city[1][0]的值即“北京市”提取出來,同時使用str_replace函數將“市”替換掉再重新賦值給$city,str_replace按照字面意思就是字符串替換,用法是:str_replace(要替換的內容,替換成的內容,字符串);其中替換的內容和替換成的內容可以使用數組,也可以使用單個字符串,我這里是用了數組,即將市縣區都替換成了空,替換的用處是因為后面查天氣預報的接口只支持城市名稱,不能有市縣區啥的……經過這一步$city的值就是“北京”;

  第43行,定義天氣API接口的URL;

  第45行,做了三件事,第一個使用iconv()函數將$city的字符編碼從UTF-8轉換成GBK,第二件是使用urlencode將漢字轉換成英文編碼方便URL傳值,第三件是將URL中的“&city=”的參數名拼接了。

  關于字符,有時候我們上網的時候會發現網頁有亂碼,大部分是因為字符編碼不對造成的,可以調節瀏覽器的編碼來切換,在程序里也是一樣,由于新浪接口接收的字符串是GBK的,而我們程序里使用UTF-8,所以需要轉碼后才能通訊,否則新浪接口收到的就是亂碼。

  PS:GBK或者GB2312是中文簡體編碼,屬于ANSI編碼,但是同個ANSI編碼值在不同國家的編碼對應是不同的文字,會非?;靵y,所以有了Unicode以及UTF-8,這是國際通用的文字編碼格式,所有文字都被分配了不同的編碼,也就不怕亂碼了。

  第46行,查詢天氣日期,0表示當天,1表示明天,以此類推……

  第49行,抓取天氣內容并賦值給$weather,這里不需要再建立抓取類的對象了,因為之前已經建立了可以直接用。

  第51行,判斷是否抓到天氣,這里我多加了一個

  

 

 

  strstr函數是用來檢查$weather里是否存在“Weather”這個字符串,&&表示并且,這里的判斷就是不僅要抓取成功并且在抓取到的內容里存在“Weather”。這樣寫的目的是因為新浪天氣接口不管有沒有查詢到天氣都會返回數據,而判斷數據里是否有天氣信息,只有判斷返回內容里有木有“Weather”這個字符串。成功抓取到的會是如下內容:

  

 

 

  這又是一個XML,然后用的是一些拼音首字母做了標簽,把這個回復給用戶估計會瘋的,我們要進行一些整理,方法嘛就是用正則表達式來提取我們需要的內容,我這里提取的標簽是city(城市)、status2-status1(天氣變化)、temperature2-temperature1(溫度變化)、direction2-power2(風向風力)、chy_shuoming(穿著建議)、savedate_weather(信息發布時間)

  第54行到62行就是提取這些數據的正則表達式,可以發現其實改動的只是標簽名和賦值的參數,如果大家還想加寫數據的可以參照著提取;

  第64行到71行判斷天氣變化是否相同,比如上面顯示的天氣1和天氣2其實都是陰,如果不做判斷就會返回給用戶“陰轉陰”,非常2,所以這里判斷如果兩個天氣是一致的則將任意一個天氣賦值給$w_status變量,否則就按照天氣2轉天氣1賦值給$w_status變量,最后輸出時用$w_status這個變量。

  第73行到81行新建一個數組,將前面獲取到的天氣數據添加為數組元素,格式就是$weather_res=array();然后在括號里用逗號分割每個天氣數據,最后一個后面不要加逗號,這樣做的好處是避免代碼行過長,而且很清晰。

  第82行,將數組用implode()函數轉化成數組,用””這個換行符來分割。

  其實73到82行完成的就是將所有數據拼接成一個字符串,使用“.”一個個拼也可以,不過效率低下而且代碼也不夠清晰。

  全部拼接完成就可以輸出了,在手機上效果如下:

  

 

 

  后面的就不詳細說了,都有標注,都是些判斷提示語句,大家可以自己學著看,不懂的可以直接在后臺問。另外強調一點,一般天氣預報是拿中國天氣網接口做的會比這個更好,能夠顯示縣區級的天氣,但是需要搞個城市代碼表,留到以后說吧,新浪的接口可以直接用城市名查就先演示下。

  三、退訂消息接收

  不知道還有多少人記得我曾寫過一篇《那些離開的朋友們》,是因為微信把退訂消息接口開了,每天看到不少人退訂心里有點小難過寫的,到今天我看了下差不多有2000個退訂用戶了,估計是我現在寫的東西不合他們胃口。

  退訂消息接口的代碼很簡單,跟用戶訂閱一樣是一個事件類型的消息,只是事件類型的標示是”unsubscribe“,退訂用戶最好是配合數據庫來記錄,我這里給大家的是一個保存成文件的例子,如下圖:

  

 

 

  代碼添加的位置請看仔細了,在事件消息判斷里的獲取事件類型之后。代碼很短,解釋如下:

  第300行,判斷事件類型標示是否為”unsubscribe“,大家可以看下訂閱消息是”subscribe“;

  第303行,新建一個Storage的對象;

  第305行,寫入文件,文件名為退訂用戶的OPENID,文件后綴是.txt,內容我用了退訂時間。

  當用戶退訂后在Storage的存儲空間里就會有一個文件生成。

TAGS:
推薦閱讀
主站蜘蛛池模板: 日本公交车上xxxxhd少妇|五月开心六月伊人色婷婷|97国产suv精品一区二区62|久久99精品久久久久久久清纯|精品国产欧美日韩|黄色网页入口 | 永久免费的啪啪网站免费观看浪潮|#NAME?|被按摩的人妻中文字幕|国产资源在线看|人人看人人射|免费看又黄又爽又猛的视频软件 | 午夜无码伦费影视在线观看|在线看成人片|免费在线观看黄色=av|#NAME?|日韩=a∨精品日韩在线观看|精品人妻无码一区二区色欲产成人 | 精品人妻中文字幕无码蜜桃臀|高清视频播放在线观看|色综合久久中文综合网|国产精品视频在线观看|美女爽到呻吟久久久久|亚洲国内精品 | 在线观看国产免费|亚洲免费成人在线视频|日韩免费一级毛片|国产综合久久|爱情岛论坛亚洲品质自拍hd|欧美成人免费一区二区 | 国产精彩免费视频|国产91亚洲精品一区二区三区|特黄男女交性=a片激情视频|日韩精品一二三四|www毛片|wwwxxxxx国产 | 日日婷婷夜日日天干|精品一区二区观看|亚洲热热色|一区二区欧美国产|自拍一二区|毛片无限看 | 女同互慰高潮呻吟免费播放|精品视频在线99|国产美女视频免费的|国产另类ts人妖高潮|欧美黄色片免费观看|一起操视频在线观看 | 台湾久久网|99久久精品免费看国产四区|亚洲一区二区三区在线视频观看|一区二区三区四区在线免费视频|红桃视频二区|国产久艹视频 | 国产精品nxnn|精品欧美一区二区三区在线观看|色88久久久久高潮综合影院|最好看的2018中文在线观看|#NAME?|91国偷自产中文字幕久久 | #NAME?|中文视频一区|亚洲第一=av男人的天堂|精品成人=av|日韩高清dvd碟片|日韩精品资源在线观看 | 91在线在线观看|超碰97在线人人|精品粉嫩BBWBBZBBW|成人深夜小视频|午夜爱爱影院|日日干日日操日日射 | HD性丰满白嫩白嫩少妇=aV|免费成人黄色大片|久久精品中文字幕|久久无码国产专区精品|欧美=a∨|91精品一久久香蕉国产线看观看软件 | 人人干狠狠操|欧美日韩xxxx|日本成人在线看|四虎影院免费在线|成人黄色亚洲|两个人看的www高清视频 | 男人操女人免费视频网站|粉嫩大学生无套内射无码卡视频|国产片人综合亚洲区|成年美女黄网站色大片免费看老狼|99色爱|在线免费观看亚洲视频 | 国产精品麻豆高潮刺激=a片|国产=aⅴ无码专区亚洲=av|草草在线视频|亚洲日韩精品无码专区加勒比|国产精品激情|成全视频观看免费高清第6季 | 国产成=a人亚洲精v品在线观看|色之久久综合|情欲综合网|久草免费在线色站|在线高清视频|国产快猫视频在线看免费 | 中国一级毛片在线视频|99在线观看免费视频|亚洲九九热|www.精品国产|亚洲www久久久|欧美白浆视频 | 粉嫩少妇内射浓精VIDEOS|免费nb=a在线观看|素人啪啪|俺也去久久|亚洲=av=av天堂=av在线网毛片|国产蜜月一区二区三区在线看 | 中文字幕亚洲码在线|国变精品美女久久久久=av爽|一区在线免费观看|精品91久久|国产精品成人=a片在线播放免费|小12萝裸乳无码 | 内射小寡妇无码|丰满少妇被猛烈进入=av久久|日韩=a无v码在线播放|91亚洲国产视频|男人和女人高潮免费网站|操久在线 国产精品一区2区3区|91蝌蚪在线播放|一级国产20岁美女毛片|国产伦精品一区二区三区视频不卡|少妇内射兰兰久久|日本成人=a | #NAME?|青青草在线视频免费观看|久草免费福利|日日噜噜夜夜狠狠爱视频免费樱桃|国产精品一级=a级理论片在线观看|亚洲狠狠色综合蜜桃 | 国产精品久久久久久免费观看|黄色=a毛片|日韩欧美亚洲一区二区|日韩午夜免费视频|日本三级网站视频|欧美性生恔XXXXXDDDD | 国产日本无码视频韩国网站写真|国产又色又爽又刺激在线播放|亚洲精品456在线播放牛牛影院|久久久亚洲国产|午夜视频成人|国产伦孑沙发午休精品 | 91大片淫黄大片在线天堂|国内国产精品久久|91cc.live最新国产|成人=aⅴ视频|v=a在线|国产成人免费视 | 国产精品爽爽=aV在线观看|国产蝌蚪视频在线观看|超碰伊人|国产二区不卡|亚洲高清欧美日韩一区二区三区|无码成人中文字幕不卡 | 人人草97|欧美成人免费在线观看视频|国产毛片午夜福利|美国一级黄色毛片|新婚人妻和上司出差被中出|久爱免费视频 | 丝袜美腿一区二区三区在线观看|91手机在线视频|无套内内射视频网站|亚洲国产精久久久久久久|午夜丰满少妇性开放视频|性大毛片视频 | 亚洲妇女多毛撒尿XXXⅩ|黄色毛片黄色毛片|公和我做好爽添厨房|日本韩国最新免费观看|日本=a∨精品中文字幕在线|国产免费拔擦拔擦8X高清在线 | 色一色成人网|久草在线影|精品视频在线观看99|国产香蕉尹人视频在线|亚洲=a∨好看=av高清在线观看|亚洲欧美日本在线 | 国产人妖在线|国产午夜福利在线播放|亚洲国产成人精品久久久国产成人|高柳の肉嫁动漫在线播放|日韩久久精品一区二区三区|精品偷自拍另类在线观看 | 久久久女人与动物群交毛片|草莓国产视频|一区在线播放|97视频精品|久草福利在线视频|久久久久亚洲=av成人网人人软件 | 狼人影院在线观看|成人免费观看视频大全|四虎成人精品永久免费=av|1区2区3区视频|有码在线播放|人妻被粗大猛进猛出国产 | 免费三级网|看毛片网站|午夜影剧院|国产农村一级一级毛片|十八禁g=ay网站|精品国产乱码久久久久久蜜臀网站 | 99ri=av国产精品视频|国产视频9999|中文字幕乱码在线|无码专区精品推荐第一页|免费超爽大片黄|一级小毛片 | 丁香花在线影院观看在线播放|成人网页在线|日本一码二码三码在线|偷拍25位美女撒尿bbb片户外|十八禁韩国女主播vip秀362视频|色哺乳xxxxhd国产 | 久久精品九九热无码免贵|日本=aⅴ精品一区二区三区|亚洲国产精品一区二区成人片|国产精品91久久|久草=av在线播放|亚洲在线www | 亚洲国产精品推荐|日韩欧美视频观看|国内老熟妇对白XXXXHD|亚洲综合精品香蕉久久网|国产男女免费完整视频网页|亚洲=av高清手机在线 | 一本一道波多野毛片中文在线|久久久久久久久久亚洲精品|高潮又爽又黄又无遮挡免费软件|57p=ao国产成永久免费视频|在线国产欧美|九草=av | 91美女视频|c=aoporm在线|狠狠色噜噜狠狠米奇777|欧美一级做一级爱=a做片性|亚洲=aV噜噜狠狠网址蜜桃|亚洲v=a一区二区 | 在线免费观看成年人视频|欧美日韩一区二区三区四区高清|激情免费看片|97久久超碰|www.蜜臀=av.com|亚洲=a一级 |