00:00
看一下咱们呢,接下来看一看啊,那我们呢,接下来呢,要去想办法去接收处理好用户的消息,那在之前呢,我们是在这里呢,简要的进行处理一下,是不是简要的处理一下,好,那我们来去做一下处理啊,我们呢来看现在呢,我是不是没有这块东西了,我就不需要它了,我就要引入一个模块,是不是引入一个模块,好比方说我们引入它。引入这个。我们叫做模块,是不是模块啊一个。Tempate等于require典型了呢,Template是不是好,拿到它之后呢,今后呢,我就这样去处理好,一个是这play message呢,就是tablet想办法去传一个options是不是,所以说呢,待会要去做的话呢,我这个options就得去把在前面是不是把它给定义好啊,比如在前面呢,你就得定一个。
01:02
Options,然后这个options等一个对象是不是有什么to username等于to username的值为。Message点。想想啊,Message是我对应的这个对象,是不是是它的to还是from啊,是from,因为刚好相反,是不是刚好相反,然后这里是from username为我的message的to username啊to username好,除了这些呢,我还有一个quick time,是不是time呢?是data点好除了这个呢,还有我的message。Type是不是好在这呢,Message写错了啊,在这呢,我们假设回复给用户呢,是文本下写在这写写啊到后面的肯定要变它,到后面肯能要变它,我们呢就默认回复的是文本是不是test啊好除了这个呢,是不是还有一个C字段,好这的字段呢,因为我在前面呢,是没办法确定的,他是不是要到后面才能确定,确定落实啊,所以说呢,在回复之前呢,我们做个这样的处理啊。
02:18
等于我的这个是不是,等于我这个options是不是只有那接下来呢,只要我回复消息,是不是这块就会options就会全部处理好,只要options处理好了。我的这个table模板是不是就会把我把这个最终回复给用户消息给他处理好,所以说我这个message是不是没有问题了啊,所以说这这是里甚至可以cos去定义,然后呢,最终是不是响应给用户,响应给用户啊,到时候都可以打印看一下啊PLA message好到这一步呢,我们其实是完善了一下我们刚刚写的这个table模板,将我们之前的文件改了改,改了改啊好,那关键是呢,这上面的处理它呢,不止这些。
03:06
他们还有很多很多要处理的东西,因为呢,我用户呢,不止发送文本的,他可能发送图片,可能发送语音,甚至可能发送视频等等消息,是不是,所以说呢,我们要想处理好的话呢,我们还得去一个个判断。那这个东西。待会儿呢,我会发现啊,用户发送的消息呢,它的类型啊非常多。有十几种,那么这十几种如果全部写在这个文件下的话呢,也会造成这个文件可能会比较麻烦,比较复杂,所以说呢,我们打算呢,将这个回复用户消息的这块东西呢,也将它单独给提取出去,定义成一个模块,那到时候呢,只要我这个模块调用这个模块,它就能得到我最终想要回复的内容就行了,所以说呢,我将这个东西呢,也定成模块啊,待会我们先来看一下到底有哪些回复用用户发送过的消息类型啊,到底有哪些啊,来看一下。
04:09
就在这啊,它分了两块,一块是普通消息,一块是世界推送,是不是,那咱们先看普通消息啊。普通消息呢,这里呢也介绍了一下,他呢不会动态连接,一共会13次,是不是等等啊好,咱们不看了,第一种是不是文本消息啊,还有。图片消息,那图片消息呢,比文本多了一些东西啊,多了一个pic ul是不是图片连接啊,还有诶在这里是不是也有媒体ID,哎,这一个呢,都是前面说的啊,就是前面的看一下他会不会写呢。啊,这里没有写啊,就是我微信服务器呢,会保存我用户的消息,保存三到五天,是不是保存三天左右,然后呢,保存的时候呢,这个媒体ID和这个ul呢,是不是都能用啊,在规定时间内都能用,但是规定时间外呢,就失效了是不是,所以呢,我们在规定时间内呢,都能用一用这些东西啊图片消息,然后后面是不是语音消息啊,语音消息有些不一样的东西,好我们都来处理一下啊,都来处理一下来,我们呢把这一块呢也分装成一个模块,那我们该在哪里怎么写呢。
05:24
比方说在WeChat里面定一个模块。叫做。对叫做对好这个模块里面要做什么来看啊,我是不是要最终回复用户消息这些内容都放过去啊,好,那大家告诉我,我要放哪些东西过去。我这类模块呢,最终呢,他也应该是一个函数调用。也应该是个函数,那要传什么值我还不知道,那在这里呢,我最终呢,要想办法把这些东西是不是都给处理好啊,都给处理好那么好,那在这里呢,我要做什么事呢。
06:03
来看啊,你看我们会发现我定这replay的话呢,其实他呢,最终呢,我们来想一想他应该做什么事。然后他们最终用来去想办法去处理。处理用户发送的消息类型和内容是不是主体上的消息,发送的消息类型有什么test啊,有image啊,有什么video等等,来判断它的内容到底是什么,根据这些内容我是不是返回的数据,返回给它的响应是不一样的,然后呢去决定。决定返回不同的内容给。用户是不是返回不同的内容给用户,好,那在这呢,我们就要把这些相应的逻辑是不是都得挪过来啊,都得挪过来,那看下有哪些逻辑需要挪过来。
07:04
说简单一点,是不是这一块要挪过来啊,是不是整体这一块挪过来好,挪过来挪过来还不够啊,因为最终这个options是不是要在这里面进行处理好啊,所以整个option呢,也应该。放进来,因为最终我是不是要形成一个options,这个options是最终我这term模块要引用的,所以呢,我在这里呢,要把这个options去决定好,这个东西呢,就是最终我要返回给用户的内容是不是options好这里面发回之后呢,我们再把这个弄过来,是不是还有这里啊全部拿过来,这个东西呢,是不是放在我这个下面呢。是不是在这里好,你简单一点的话呢,是不是可以直接把这个option给出去,最终呢,是不是在这里引,在这个主模块上引用一下,在这里调一下就可以了啊,你可以这样做,当然也没问题啊,好,我们就假设这样做啊。我们呢,这里是不是报露出去这个option,那对应的我这主模块呢,我是不是要引入它,然后在这引入啊,引入这个,引入咱们的这个呃模块。
08:12
它Co一个PLA等于我这个require了,咱们的这个典型的类是不是好在这里呢?它就是相当于是在前面来看啊,前面我在这里是不是我要去调用这个repla,他们会得到一个box子是不是好,这个如play调用的时候要不要传三。你看看他这里面有没有用到什么参数。有没有用到,是不是用到这个message啊,对应的你这个message是不是要传递进来啊,传递进来才有,所以说呢,我在这里调调的时候呢,要传一个message才行,是不是好,那这里呢,会得到一个options,最终呢,通过这个play呢,会将这个options是最终给输出啊,最终会转化成我要回复给用户的商表数据,然后最终是不是C的数据啊,最终C的数据好在这里面呢,我们再写一写啊,我们的基本基本的样子呢,写出来了,然后中间呢,我是不是还去处理其他的一些消息啊,那我们就接着处理呗。
09:23
这里写else if,他的message have,如果等等于image,是不是说明他发送的是用户发送的是图片消息啊,啊图片消息的话呢,我这里呢,首先我们这里都默认用啊,其实我这里也能返回回个图片消息给他,也能返回一个图片消息来看一下啊,咱们返回图片消息的要求,首先message time必须变成。Image,另外呢,我是不是要有个媒体ID啊好,那我也可以返回给他啊,来看下怎么返回呢。大家回顾一下啊,我这里面是不是有图片消息啊,诶他是不是会发一个media给我,那我是不是可以据说media是不是再发送一个给他啊,那这样的话呢,仅仅是测试一下他能不能用而已啊,这相当于什么呢?
10:13
相当于是用户把这图片发给我,我呢又把你图片发给他啊,咱们在这呢,就相当于是测试一下我这个最终这个东西是好用的啊,要测试一下来,我们来去做一下,这个是做这个事呢,我们看啊,我们初始化这个message是不是tap啊,但是在这里呢,你要改成。改成image是不是改成image,然后呢,Options的是不是要添加一个属性叫做媒体ID呀,媒体ID应该等于谁呢?等于message,到时候用户发送过来的一个媒体ID是不是,我们看一下他的媒体ID怎么写。是不是这个东东,我把它复制一份就是诶。
11:03
CTCC。看是不是这个就这个,除了这个以外呢,我们还可以在服务器这里打印输出一下啊,打印输出看一看别的东西,它呢还发送过来一些东西,像这个PUL给我是不是,那你也可以通过这里打印这个message.pul看一看是不是你也可以看看啊好。那我这样一做的话呢,待会我是不是会返回一个图片给用户啊,好待会我们都来测试啊,好除了这个呢,我们再看一下其他类型。我们还有什么语音,是不是voice?好把这个写一下。啊呢,同样的他呢,是不是也会返回个媒ID给我啊,那么我也把他的语音消息也语音帮我返回给他,那么我也可以做这个事啊,我把这个改成。Wise是不是,然后再看一下外里面呢,它也要传一个mand是不是,所以说我这里呢,也要做一个这样的事,是不是也做这样事啊,同样的呢,注意当用户发送给语音消息的时候啊,如果你开启了语音转换的话呢。
12:12
当你开启的语音识别的时候,你会发现呢,它还会多一个参数,叫做这个东东,这个东东呢,就是我所说的语音识别结果,比如通过这个东西呢,你就知道用户发送的消息内容呢,到底是什么东西,所以说我们可以打印看一下,到时候用户发送我的语音到底是什么东西啊,这个怎么开启呢?来到这往下翻,这下面的有一个接收语音识别结果,是不是你要把它给开启才行,开启之后呢才能用啊,这是这一块,好,启完之后呢,就不用管它了,这是语音消息是不是,那下面这些东西呢,我们就不一个个写了,下面这些东西呢,就是类似的,大家呢,待会写的时候呢,把它全部给实现了,我们呢就告诉大家最后一个吧,就把这个地理位置给它写一写吧,最后一个是不是有个地理位置啊,这个地理位置呢,它这里面呢,我们来想一想,它是干嘛的啊,地理位置它的世界类型呢,叫做。
13:09
Location是不是就是location,所以说我在这里呢,还要写一个if。Message type.message type等于location是不是我们呢,在这里呢,就回复给用户一个文本小息,就写个就可以了,插这里面有那个什么什么纬度精度是不是来缩放大小,还有位置信息啊,我把这些东西呢,都返回给用户啊,它的纬度。纬度为我拼串啊,这里都用魔法字符串进行拼吧。好多的符大括号message.x好,这里呢,有精度,是不是精度。进度呢,也是多了大括号来,多了福大括号message.location y是不是location y,然后呢,还有什么地图的缩放大小,是不是缩放大小啊。
14:18
波缩放大小,缩放大小,那我们都看一下吧,多少大括号,然后呢,这里面是叫做是不是scale,还有这个label,我们都看一下吧,message.scale然后最后呢,还有一个。呃,一个叫做什么呢?叫做位置信息啊,这个位置信息呢,就是你具体你在哪个地方,他会给你打印出来啊。这里呢是多了不大括号,那message.label la1label,好,这里呢,是不是到时候会回复给用户一个文本消息啊好,文本消息好,那这些呢,就是回复用户消息的一些这样种类啊,咱们就不一个个写了,那大家待会测试的时候呢,可以把它写完啊好,我们来这一块呢,是不是我们接收用户的普通消息啊,那我们也来看一下视频推送啊,其实都是类似的一些操作啊,我们都来过一下,这里面呢有很多事件,什么关注跟取消关注事件,还有扫描带参数的二维码事件,是不是还有点击菜单等等一些事件推送,自定义事件推送等等啊,还有什么上报地理位置的事件,那我们呢,这些事件呢,可能在我们用的时候呢,还用的比较多,用的比较多,而上面这种呢,可能接收普通世界消息的话呢,我们用的比较少,通常接收的话呢,我们一般普通消息啊,我们一般是针对用户的。
15:48
文本消息进行处理,或者是语音消息进行处理,通常情况下用户发送的图片啊,什么视频呀等等这些东西呢,我们一般是忽略的,说白了是不理他,是不是一般是不去做的,一般是用户发送的文本啊,或者语音可能会做一做处理啊,那在这里呢就不一样了,用户关注的时候,我是不是应该。
16:13
给他不一样的东西啊,是不是还有扫描二维码,这个是怎么做的呢?当我们去推广你的微信公众号的时候,是不是到时候会拿个二维码让别人扫啊?是不是大家应该在学校的时候也会遇到一些。在学校推广公众号,是不是也是扫扫二维码,是不是当呢,当你扫完二维码的时候呢,就会把一些他们可能最近搞的一个活动啊,就立马就推送给你,就这样,所以说这个呢,我们有时候也会去做,然后呢,这里还有上报地理位置,哎,他跟咱们那个地理位置呢,有点像,前面我们接收普通消息,是不是接收这个的地理位置消息啊,啊有点像,待会来看啊,还这个菜单事件,咱们的一个公众号呢,肯定有菜单呢,有菜单的话呢,对应用户触发菜单的时候啊,他就得执行一些不同的操作,那么在这里呢,你也可能要去定义一下,所以说我们在这里呢,去看一下这个事件消息,我该怎么去处理好。
17:10
来看一下第一个呢,首先世界消息呢,他们消息类型都是疑问不一样的,是不是好,但是呢,我们发现这以上所有这些所有的消息呢,它都是疑问字。所以通过疑问词呢,并不能判断什么,我们还通过这个东西判断这个大写的疑问词是不是这个东西呢,它就告诉你具体的事件啊,到底是什么事件,Subscribe是不是订阅啊,啊subscribe就是取消订阅啊,取消订阅,那么咱们来看一下怎么写呢?我继续else if,然后呢,Message type等等于。首先一开始是event是不是,然后在这里面呢,跟再去判断它的message点大写的event,大写的event,如果等等于什么。
18:08
说明他是用户订阅事件,那这个时候是不是可以去回复一些信息啊,通常呢,我们记得最多的是不是回复文本信息,那我就直接写content了,就是欢迎您的关注啊,欢迎您的关注。欢迎您的关注啊,通常呢,这里呢,会写的比较详细啊,写你这里面公众号的一些功能到底怎么操作的,通常会在订阅的时候告诉用户,就是告诉他怎么去操作的啊好,除了这一个呢,他还有一个。什N世界呢?取消订阅事件是不是好,那这个取消订阅事件,大家想一想,我要回复什么数据给用户?
19:01
需不需要回复用消息给用户,需不需要想一想啊,啊,你取用户都取消关注了,他还能接收到你的消息吗?那就接收不到了,所以说你在这里回复任何消息是不是没有作用啊,没有任何作用啊,所以说在这里呢,我们就打一下呗,我无情喜欢是不是无情喜欢啊,就这里打一输出一下,我们就知道就好了啊,知道就好了,那除了这些呢,我们下面还有一些事件,我们可以看一下,还有是扫描带参数的二维码事件是不是好,这里面呢,分为两种。啊,这个二维码比较特殊啊,它是带参数的二维码,那这个带参数的二维码呢,就不是普通的我们这些二维码啊,我们这个二维码呢,是不带参数的,不是他的啊,这个带参数的二维码呢,要特殊的一个微信的一个接口才能够请求回来的一个二维码啊,所以说呢,这个东西呢,可能现在我们没办法测试啊,他们就是通常就带参数二维码在哪里用呢?
20:06
就是做活动的时候他们才会去整的,比如微信推广,他呢,是不是要整很多很多人去推广啊,比如说有几个团队,有三个团队吧,是不是,那么他们肯定到时候要根据他们推广的业务,他们推广的这个关注量来去给他们到时候计算钱是不是,所以呢,就每个人发送发一条不一样的。不一样的参数的二维码,那么你通过不一样的参数二维码关注了的话呢,它对应的触发的事件就不一样,通过触发的事件不一样的话呢,我就能知道你这个团队到底通过你扫完你的二维码关注的人到底有多少,你这个团队扫描二维码关注的人又有多少,从而呢知道A团队,B团队,C团队谁做的最出色,那谁做的更好,来从而来去算钱什么的啊,就是通过这个扫描大于参数的二维码才算的出来,如果是普通二维码的话呢,他是不知道谁扫的谁的码的,所以说如果需要做那种特殊的事的话呢,就得去做这个带参数的二维码啊。
21:13
啊,这里面呢,这里面就是说如果带参数的二维码,说白了就是它呢,会有一个这个1K值,这个K值呢,可能不太一样。每一个带参数的这个key值都不一样,所以说呢,可以通过这个even key来判断到底这个是谁扫描谁的二维码的啊是这样的,然后这里面也有触发了两个事件,如果是。用户未关注时,扫描你二维码关注的话呢,它会进入到subscript事件,也说咱们script事件呢,除了扫描普通的二维码,它关注之后会触发的话呢,扫描特殊的二维码是不是也会被关注啊,那此时呢,它呢会多一个文K值,普通的是没有的,普通的是没有1K值的,是不是只有你扫描带参数的二维码才会有1K值,所以说呢,如果你要判断的话呢,就在这里判断。
22:07
If,它的这个message.key等等于你设定的某个参数,那这时候呢,你就知道到底是扫描谁的二维码是不是,那接下来是不是还可以l if啊,它就等于某某参数,就知道等于谁,那你在这里呢,可以进行比如设定一个变量NUMBER1 number2加加,这里加加是不是通过这个数量来去赚钱啊,可以去做的啊,那咱们呢,就现在是不做这个事,我们比如说就判断他有这个K值,说明他是。用户是扫描了带参数的。参数的二维码关注的世界,是不是关注世界啊。是这么一回事,好,这是扫描带参数的二维码关注出现,然后呢,一旦它是扫描带参数的,它后面这个是不是会覆盖掉前面这个,就会覆盖掉前面这个回复的内容就不一样了啊,就是这一块,然后再往下走,当用户关注的时候,说明他是不是之前关注过啊,再扫描你那个大参数的二维码,它会触发另外一个事件叫做。
23:17
这个事啊,这个事件呢,是全首都是大写的是不是,所以说呢,你要写的话都是大写,而且它是even才为大写是不是,所以说你要写的话,那就是在后面接着加然if这个message点大写的event不是event k啊event等等于我那个这个东东是不是,然后呢,你就可以知道用户呢是。CTRLC啊用户呢,是已经关注过在扫描二维码关注的事件,是不是啊,只是这样的一个事件啊,事件触发都不一样不一样的,那下面呢,还有很多啊,我们呢就再写两个,这里是不是一个location啊,注意这个location事件是个大写location事件,它呢也会返回这个纬度,精度和B的精度是不是是这样的。
24:15
这里呢,就是l if。Message点大写的event,是不是大写的event等等,与我这个大写的location,这时候呢,我们就将这个把这个看成C吧。它的这个值为latitude,是不是这是精度,这是纬度啊latitude还有一个longitude是经度,是不是龙体体额,然后缩分大小就没有了,还有这个最后一个是精度啊,这个精度对应的是我这个。是不是好是个这样东东啊好,然后呢,这是location大小事件,这个事件又是怎么被触发的呢?哎,这个呢可以给你讲一下啊,这个呢跟我们之前的那个语音识别也得像,咱们语音识别是不是要开启啊,哎,咱们这个大型的location呢,也得开启才能用,在哪开启呢。
25:12
完了走在这里面是不是有个获取用户地理位置啊,诶你得开启啊,比如说我开启一下默认是关闭的,是不是点击开启它这里有两个选项。一个是用户进行对话时上报一次,这什么意思呢?啊,当用户不是说你发送一条消息就上报一次啊,是当你去打开那个微信公众号,他会上报一次,然后在此期间呢,如果你反复的操作微信公众号呢,是不会上报的啊,当你可能你退出了公众号,你下次是不是又金牌啊,那么就会又上报一次,是这样上报的啊,那这下面是说。每隔五秒上报一次,是不是就是说在你跟他对话期间呢,每隔五秒他就上报一次地理位置啊,所以说他们使用场景是不一样的,是不是第一种呢,理论上是上报一次的是不是啊,第二种呢,是上报多次对不对啊,这些呢,就是不同的业务场景,比如说第二种呢,可能你比如说是呃滴滴这些东西,是不是他可能要实时知道这个车的位置信息啊啊,那你可能用得上,那一般情况下呢,我们用第一种就够了,甚至呢,你不用也行啊,如果你压根不需要用,知道用户的地理位置的话呢,你压根可以不用,那比方说我们用一下上报一次,点击确定是不是好,就修改成功,那你就可以用了,就可以去使用这个位置信息了啊,就可使用了。
26:41
好,那下面呢,还有什么自定义菜单是不是对应的呢?是个可定的实践对不对,那这个呢,我们也写一下啊,这个呢,我们后面还用得上,所以说我们把把它写下。啊,这个message点等等于大写的。
27:00
可是不是,可咱们就后面还用得上啊,这里呢,我们就回复给用户消息啊你。点击了按钮是不是好,点击了按钮,然后这个按钮呢,这里有个UK值,这个K值呢,就是你到时候就设置这个按钮的一个值,通过这个K值呢,我就知道我用户点击的到底是哪一个按钮了,所以说通常呢,都会根据它来进行判断的啊,比如说呢,我就加拼个串啊,把这个K值呢,把它给拼上去。把这个值给它拼上去,就是这个message.even。是不是好,那到这儿呢,咱们就将这些用户啊,可能发送的一些类型,可能发送的一些内容都给它处理了一下,那就是这样去做的啊,就是根据这个文档,我们呢一步步写的啊,我们呢没有把所有的写完,有些东西呢,都是类似的,我们就没说写了,那大家呢,到时候呢,自己把它给写一写哈,啊好,咱们写完之后呢,我们接下来呢啊来看一下啊,我们先停一下。
我来说两句