推荐设备MORE

凡科抠图为花丛中的美女加上

凡科抠图为花丛中的美女加上

行业知识

第十一章:微信公众账号接受非文本信息(一)

日期:2020-11-22
我要分享
您当今所属部位:   小区与文本文档   手机微信开发设计   第十一章:微信公众账号接受非文本信息(一)
在手机微信微信公众号上放户全是用应用文本在开展互动的,可是有时候候应用照片、视频语音、视頻及其自然地理部位等能够完成一些十分棒的作用,例如“视频语音提示”微信公众号里的推送视频语音便可以完成定时执行的恶性事件提示作用;例如ZTalk以前搞过手机微信照相晒电脑上桌面上的主题活动(响应的人太少,桑心……);例如一些预订当地化服务的微信公众号里推送当今自然地理部位便可以查寻附近店家。
要完成这种作用最先得学好接受这种信息种类,比文本信息种类毫无疑问要繁杂许多了,现阶段大家可以接受的信息种类仅有照片、自然地理部位及其退订信息,别的的如连接信息、视频语音信息是必须官方网受权的。接受到客户信息之后回应的信息种类能够参照第一0章,现阶段也就那三种。
一、照片信息接受
坚信照相是现阶段智能化手机上客户用到数最多的作用沒有之一,在手机微信里也是一样,看一下每日微信朋友圈里共享的这些相片就了解了,那麼怎样接受和储存客户相片捏,最先大家得掌握客户推送的照片信息构造,以下图:

大伙儿能看到照片信息除开固定不动的信息推送客户ID、接受微信公众号ID、转化成時间等固定不动字段名外,多了一个照片连接PicUrl,这一便是客户向微信公众账号推送照片后,储存到手机微信的网络服务器上回到给微信公众号的连接,该照片连接文件格式以下:

换句话说大家假如要把照片储存到当地网络服务器,就需要先将照片从手机微信网络服务器上爬取出来,自然你还可以立即储存这一连接之后立即浏览,这一看实际运用了。今日要讲的是照片储存到当地网络服务器上,可以看下边编码:

因为照片信息是另外一种信息种类,因而编码加上部位能够坐落于文本信息上边或是下边,要是别在文本信息的分辨句子内就可以了。随后我来表述下每一个句子的功效:
第二0行,分辨信息种类是不是为照片信息,标准为$form_MsgType==image;
第二4行,获得照片信息数据信息中的照片连接并取值给$from_PicUrl;
第二6行,转化成要储存到当地网络服务器的照片名字,以便防止反复新照片取名应用了推送客户的OPENID+当今時间戳,文档的后缀名名我是立即设置为jpg文档。(因为从照片连接上没法获得到照片后缀名名,又懒得根据头文档获得照片文件格式,就立即固定不动去世了JPG文件格式,好像沒有甚么难题,嘿嘿哈);
第二8行,SAE上的内嵌插口类许多,SaeFetchurl是一个用于爬取远程控制网页页面的类,应用这一类便可以很便捷的完成爬取别的网站的內容,不然应用PHP的curl或是file_get_contents这种估算还得表述大半天,这句话编码是在建一个爬取类的目标。
第三0行,实行爬取照片连接,在其中爬取的涵数是fetch(),照片连接是以前取值的$from_PicUrl,爬取后的結果取值给$res;
第三2行,分辨爬取結果,errno()回到的是爬取完毕后的不正确编码,假如为0则取得成功,别的的便是不了功。
第三5行,照片爬取取得成功后,在建一个Storage的目标,大家要储存照片了。
第三7行,这句话编码实际上早已在之前出現数次,此次将爬取的內容($res)载入特定的文档($filename),并储存到Storage里,一定要注意把“weixincourse”更换成自身建立的Storage室内空间名。
第三9行到41行,储存取得成功后给客户提醒照片提交取得成功。
第四5行到48行,文档沒有爬取到提醒客户照片提交不成功。
自然大家假如认真细致一点,也要分辨照片文档是不是储存取得成功,能够把第三7行后边改变一下,以下图:

大伙儿能够试着把Storage的室内空间姓名有意写错,看一下会出现哪些的提醒。假如提醒提交取得成功,大家到SAE的Storage目录里就应当能看到刚提交的文档了。

二、自然地理部位信息接受
手机上上根据自然地理部位的APP许多,是个运用如今都得跟LBS扯上点关联,SoLoMo里关键的一环便是自然地理部位,手机微信里也是有许多运用是跟自然地理部位有关的,例如查个当地气温、周边酒店餐厅餐饮店啥的。今日举的事例是查当地气温。先掌握下自然地理部位信息的构造,以下图:

自然地理部位信息多了四项,各自是经伟度的X和Y座标、地形图放缩占比及其详细地址信息内容,而具体上因为互联网缘故大家常常是收不上详细地址信息内容的,仅有座标信息内容,因而自然地理部位的开发设计基本紧紧围绕着座标来。先看来当地气温查寻编码吧,以下图:

编码加上部位同照片信息,另起一个信息种类分辨句子,能够放到照片信息前边或是后边。前边讲过大家关键应用的是经伟度,经伟度是能够根据一些地形图api插口来获得具体详细地址、附近店家等信息内容的,气温编码这儿我用的是百度搜索地形图API插口,关键是由于它有URL插口,编码表述刚开始:
第二1行,信息种类分辨句子,信息种类为location;
第二4行到27行,将客户消息推送自然地理信息的经伟度、地形图占比、详细地址信息内容各自取值。经伟度各自为Location_X和Location_Y,非常于用经线和纬线的交叉式点来标明自然地理部位。Scale是客户推送自然地理部位时地形图的放缩占比。Label是详细地址信息内容(常常是获得不上的,获得了也没啥用,由于全是连在一起的,没法获取城市县信息内容)。
第二9行,界定百度搜索地形图API插口的反方向详细地址分析URL,反方向详细地址分析就是指根据经伟度获得当今部位的详细地址信息内容。
第三1行,因为每家地形图不一样因而传送回来的经伟度也会出现所误差,这儿我选的是wgs84即手机上GPS的座标。
第三3行,又要抓网页页面了,先建个爬取类的目标。
第三5行,百度搜索地形图API插口的反方向详细地址分析标准是URL+座标种类+座标值,在其中$map_api_url.$map_coord_type2个自变量拼凑便是URL+座标种类,随后加上上经伟度主要参数,用location=经度,纬度来取值。
这儿说下URL的标准,URL便是大伙儿常见到的网页页面连接,一般由HTTP://后边加网站地址加主要参数构成,关键说下主要参数,主要参数通常为“主要参数名=取值”构成,一般的URL主要参数文件格式是跟在网站地址后边第一个主要参数前用“?”号隔开,第二个主要参数刚开始用“ ”隔开,主要参数在程序里是能够获得到的,大家上边获得座标分析的具体详细地址方式为:

接受的具体详细地址为geocoder,获得到的主要参数是coord_type和location,数值相对后边跟随的。
第三7行,分辨是不是爬取取得成功,假如爬取取得成功$geocoder的数据信息具体是以下文件格式:

这儿一大堆信息内容里只必须获取大城市,即CITY这一标识内的数据信息。
第四0行,它是一个正则表达式表述式,较为繁杂,功效便是依据标准将$geocoder里的北京市市数据信息获取出去授予$city这一自变量,假如取得成功这一数据信息是会是一个多维度数字能量数组,在其中city标识内的数据信息即北京市市是储存在$city[1][0]里的,$city[0][0]的值是“北京市市”;
第四1行,将$city[1][0]的值即“北京市市”获取出去,同时应用str_replace涵数将“市”更换掉再再次取值给$city,str_replace依照字面上含意便是标识符串更换,使用方法是:str_replace(要更换的內容,更换成的內容,标识符串);在其中更换的內容和更换成的內容可使用数字能量数组,还可以应用单独标识符串,我这儿是用了数字能量数组,将要县市区都更换变成空,更换的用途是由于后边查气温气象预报的插口只适用大城市名字,不可以有县市区啥的……历经这一步$city的值便是“北京市”;
第四3行,界定气温API插口的URL;
第四5行,干了三件事,第一个应用iconv()涵数将$city的标识符编号从UTF-8变换成GBK,第二件是应用urlencode将中国汉字变换成英语编号便捷URL传值,第三件是将URL中的“ city=”的主要参数名拼凑了。
有关标识符,有时候候大家网上的情况下会发觉网页页面有错码,大部分分是由于标识符编号错误导致的,能够调整访问器的编号来转换,在程序里也是一样,因为新浪网插口接受的标识符串是GBK的,而大家程序里应用UTF-8,因此必须转换格式后才可以通信,不然新浪网插口接到的便是错码。
PS:GBK或是GB2312是汉语接下来编号,归属于ANSI编号,可是同个ANSI编号值不在同我国的编号相匹配不是同的文本,会十分错乱,因此拥有Unicode及其UTF-8,它是国际性通用性的文本编号文件格式,全部文本都被分派了不一样的编号,也也不怕错码了。
第四6行,查寻气温时间,0表明当日,1表明明日,为此类推……
第四9行,爬取气温內容并取值给$weather,这儿不用再创建爬取类的目标了,由于以前早已创建了能够立即用。
第51行,分辨是不是抓到气温,这儿我加多了一个

strstr涵数是用于查验$weather里是不是存有“Weather”这一标识符串, 表明而且,这儿的分辨便是不但要爬取取得成功而且在爬取到的內容里存有“Weather”。那样写的目地是由于新浪网气温插口无论有木有查寻到气温都是回到数据信息,而分辨数据信息里是不是有气温信息内容,仅有分辨回到內容里有没有“Weather”这一标识符串。取得成功爬取到的会是以下內容:

这也是一个XML,随后用的是一些拼音字母首英文字母干了标识,把这一回应给客户估算会疯的,大家要开展一些梳理,方式嘛便是用正则表达式表述式来获取大家必须的內容,我这儿获取的标识是city(大城市)、status2-status1(气温转变)、temperature2-temperature1(溫度转变)、direction2-power2(风频风力)、chy_shuoming(衣着提议)、savedate_weather(信息内容公布時间)
第54行到62行便是获取这种数据信息的正则表达式表述式,能够发觉实际上修改的仅仅标识名和取值的主要参数,假如大伙儿还想加写数据信息的能够参考着获取;
第六4行到71行分辨气温转变是不是同样,例如上边显示信息的气温1和气温2实际上全是阴,假如不做分辨便会回到给客户“阴转阴”,十分2,因此这儿分辨假如2个气温是一致的则将随意一个气温取值给$w_status自变量,不然就依照气温2转气温1取值给$w_status自变量,最终輸出时要$w_status这一自变量。
第73行到81行在建一数量组,将前边获得到的气温数据信息加上为数字能量数组原素,文件格式便是$weather_res=array();随后在括弧里用分号切分每一个气温数据信息,最终一个后边不必加分号,那样做的益处是防止编码行太长,并且很清楚。
第八2行,将数字能量数组用implode()涵数转换成数字能量数组,用”n”这一换行符来切分。
实际上73到82行进行的便是将全部数据信息拼凑成一字符串,应用“.”一个个拼还可以,但是高效率不高并且编码都不够清楚。
所有拼凑进行便可以輸出了,手中机上实际效果以下:

后边的也不详尽讲过,都是有标明,全是些分辨提醒句子,大伙儿能够自身学着看,不明白的能够立即在后台管理问。此外注重一点,一般气温气象预报是拿我国气温网插口做的会比这一更强,可以显示信息区县级的气温,可是必须搞个大城市编码表,留到之后讲吧,新浪网的插口能够立即用大城市名查就先演试下。
三、退订信息接受
不知道道也有是多少人还记得我曾写过一篇《这些离去的小伙伴们》,是由于手机微信把退订信息插口开过,每日见到很多人退订内心有点儿小伤心写的,到今日我觉得了下类似有2000个退订客户了,估算就是我如今写的物品不符合她们食欲。
退订信息插口的编码非常简单,跟客户定阅一样是一个恶性事件种类的信息,仅仅恶性事件种类的标识是”unsubscribe“,退订客户最好相互配合数据信息库来纪录,我这儿给大伙儿的是一个储存成小短文件的事例,以下图:

编码加上的部位可以看细心了,在恶性事件信息分辨里的获得恶性事件种类以后。编码很短,表述以下:
第三00行,分辨恶性事件种类标识是不是为”unsubscribe“,大伙儿能看下定阅信息是”subscribe“;
第三03行,在建一个Storage的目标;
第三05行,载入文档,文档名叫退订客户的OPENID,文档后缀名是.txt,內容我用了退订時间。
当客户退订后在Storage的储存室内空间里便会有一个文档转化成。
手机微信微信公众号开发设计的基本实例教程类似早已说完,后边还会继续讲讲数据信息库和云储存服务平台的应用,随后便会是详细实例,往往花那麼长期讲那麼细,是期待大伙儿可以先了解一些基本的程序编写,有一个由浅入深的全过程,全部繁杂的程序实际上全是这种基本控制模块构成,假如你感觉不明白,那将会是沒有跟随动手能力做,后边的实例教程估算会无法跟上,so,有时候间就伸伸手吧!anyway,我能把实例教程坚持不懈写完,由于许多人会有希望。