UNIT对接自己的微信公众号的详细流程
mxw2552261 发布于2017-12 浏览:26620 回复:56
8
收藏

我看了官网给的对接微信公众号的文档,里面给了一个例子URL:http://ai.baidu.com/unit-3rd-party/callback ,这个地址是百度AI提供的测试地址,可以直接配置到公众号里直接使用,可是他提供了一些自己的测试语句,而且他给的二维码测试公众号,好像不支持语音,试了几句话,都是提示“没有听清你的语音”,不知道是不是我手机问题,所以决定连接到自己的公众号,并且自己配置UNIT自己定制对话。具体怎么配置UNIT的对话,可以看官方文档,也可以看我上一篇关于UNIT的帖子。

首先,要有自己的公众号,这个可以去微信官网申注册,很简单,几部就搞定,可以选择个人的,也可以选择公司的,看自己的需求。

 

按照步骤一步步执行即可,申请成功后,就有了自己的微信公众号了,那么下一步在微信公众号里开通开发者,

开通之后,微信就会生成一个开发者ID,这就算开通成功了

下一步需要下载一个服务端代码部署到自己的服务器上,https://ai.bdstatic.com/file/374AA32FCE3641A49816720409A712D9 

这个是百度AI提供的一个服务,用java写的,其实实现很简单:

      逻辑就是接收微信里用户输入的信息作为请求参数,然后把输入信息传递给UNIT API,然后UNIT进行一系列的解析,然后把处理的结果返回给服务,然后服务再把结果返回给微信公众号,然后显示给用户。支持用户输入文字和语音,其实语音微信最终会解析成文字给到服务端的。

所以这个服务完全可以由我们客户自己去写,不限制语音,可以用python,可以用Nodejs,只要提供web服务,通过http接口调用即可。

      百度AI提供的程序,需要打包成war包,放到tomcat容器里才能运行。自从接触了springboot后,再也懒的安装tomcat了,所以我自己用springboot简单改造了一下他们的代码,其它都没动。打包成jar包,不用安装tomcat,只要有java环境,直接运行java -jar *.jar 这个jar包直接搞定。需要的小伙伴可以加我微信单独发给你。二维码在最下面。

先说说官网给的代码,需要修改几个配置文件,指定到自己的UNIT应用,

 

配置文件修改之后就可以打war包了。这个项目打包之后,生成了一个ROOT.war,因为他配置了pom文件里的finalName是ROOT,所以生成了ROOT.war

 

 

然后把ROOT.war放到服务器上tomcat里的webapps下就行了。

启动tomcat,启动成功后,然后下一步就要配置微信公众号来指向我们的服务器地址。

 

 

这个地方顺便说一句,对应初级程序员可能有帮助,

我的配置是http://unit.***.com/callback,而百度AI给的样例是http://ai.baidu.com/unit-3rd-party/callback ,多了一个项目名unit-3rd-party,这个地方我觉得对有经验的程序员来说,会直接删除这个项目名,而对于初学者来说,可能这么配置就报错了,而且微信公众号给的提示是token校验失败,但是token的确是对的。这说明微信公众号的报错提示不够严谨,没有逻辑校验,不管是什么错误,只要报错,都报同一个错误提示。

 

 

这里给初学者讲一下,为什么报错。

我们平时在tomcat下开发测试的时候,一般都是这么请求的:http://localhost:8080/项目名,项目名代表我们的要测试的项目,如果不写默认就是webapps目录下的ROOT项目 。所以配置里加了unit-3rd-party项目名,这样导致微信找不到这个路径。就报错了。其实他应该报URL地址错误。

如果非要按照百度给的样例加一个项目名的话,只需要修改一下pom里的配置finalName为unit-3rd-party即可

 

 

然后把unit-3rd-party.war放到webapps下,启动tomcat。然后配置微信公众号的URL地址,这时候就要把unit-3rd-party这个项目名称加上了。其他配置跟刚才是一样的。

配置完后,点击提交,这时候提示 “提交成功”,这时候说明我们的配置参数都是正确的,和百度UNIT已经对接成功了。服务器配置地方点击 "启用" 。

注意:一定要先启动tomcat,然后再配置微信,因为点击提交的时候微信会调用这个GET callback接口进行微信认证。

 

 

到这一步就完事儿了。小伙伴可以开开心心的使用微信公众号发消息进行验证了。

但是,

我粗心大意了,当我在微信公众号发消息的时候总是报错。

 

 

但是看不到错误消息,不知道报什么错。问题是肯定出现在我的服务器端了。调用服务器是微信后台转发调用的,所以用抓包工具是抓不到请求过程的,而且之前没做个微信公众号的开发,所以不知道他的请求格式是什么,所以也没办法用调试工具模拟调用,所以只能分析百度AI给的代码,发现他在接口里解析了一个xml,把解出来所有用到的数据放到了map里,所以我就改了一下代码加入输出map到日志文件里,然后重新部署,重新请求,然后输出到日志的数据拿出来数据组装成一个xml,就可以手动用模拟工具调用了。

日志: 接收到 微信平台 发送的消息:, {Format=amr, MediaId=AZXi4Ab6AEVT2yaIv74OIKkxjb8vPWG7cQYJ6Yttdmu4iekomGuE5MH-y1oINeOB, CreateTime=1513221912, ToUserName=gh_eea8ce28a776, FromUserName=oGmOJ1upSiE8rcpQhQKywl-IuHZs, MsgType=voice, MsgId=6499238623630589952, Recognition=我要听郭德纲。}

 

既然可以模拟调用了,那么我在本地启动服务,然后用模拟工具调用我本地服务,最终看到了报错,error_code = "282901",然后对照系统提供的错误码,终于发现了是什么错误。

 

 

这个地方的确是我自己粗心大意了。没有把应用和我的场景进行关联。然后找到我的应用,发现没有修改功能?我没理解系统为什么不让修改,然后我只能删除原来的应用,重新建一个新的应用。这个地方需要请教一下客服人员,为啥不能修改呢?

 

 

然后再核对一下程序的配置参数,用模拟工具再次调用。beautiful

 

最后到微信公众号测试:

下面是我公众号,大家可以试试效果:

我要听英语栏目

我要听汽车栏目

我要听郭德纲的专辑

等等。

后续还会加入更多。比如导航。。收音机,音乐等等。

收藏
点赞
8
个赞
共56条回复 最后由用户已被禁言回复于2022-04
#59mxw2552261回复于2018-12
#57 watermoonxcy回复
这是1.0版的,有2.0版么,跪求Orz

自己写一个吧,很简单

0
#58Leautolink回复于2018-12
#57 watermoonxcy回复
这是1.0版的,有2.0版么,跪求Orz

自己写一个吧,很简单

0
#57watermoonxcy回复于2018-11

这是1.0版的,有2.0版么,跪求Orz

0
#56watermoonxcy回复于2018-11

现在没有场景勾选了,怎么办?还是报错

0
#55mxw2552261回复于2018-08
#54 无名java生回复
我就想问一下,官方提供了接入微信公众号功能,自己再弄个服务器接入有什么意义?
展开

嗯,写这篇文章以前,好像官方还没有,你看看时间。

0
#54无名java生回复于2018-08

我就想问一下,官方提供了接入微信公众号功能,自己再弄个服务器接入有什么意义?

0
#53卡农LLLL回复于2018-03

活捉管理员一枚.快红烧了.

0
#52周俊316回复于2018-02
#49 卡农LLLL回复
我在想她要是看到我们的对话...会不会撕了我..

好吧  我是个宽容的人儿·~·

0
#50mxw2552261回复于2018-01

你们说的周姐是汧汧女神吗?会撕了你的,哈哈

0
#49卡农LLLL回复于2018-01
#47 荒墨丶迷失回复
你说是那个大姐。哈哈 有那么大嘛 ……

我在想她要是看到我们的对话...会不会撕了我..

0
#48卡农LLLL回复于2018-01
#43 mxw2552261回复
是互扯。哈哈。周姐是哪个大姐啊?

周大姐没找过你么....

0
#47荒墨丶迷失回复于2018-01
#43 mxw2552261回复
是互扯。哈哈。周姐是哪个大姐啊?

你说是那个大姐。哈哈 有那么大嘛 ……

1
#46荒墨丶迷失回复于2018-01
#42 卡农LLLL回复
昨天看周姐把你的胡扯程序的文章发朋友圈了呢.

那个文章?就是从小白到大神的嘛。嘿嘿

1
#45mxw2552261回复于2018-01
#44 吕婷婷great123回复
请求url超时为什么,网址写的是对的啊

你试试用测试工具调用url看通不通

0
#44吕婷婷great123回复于2018-01

请求url超时为什么,网址写的是对的啊

0
#43mxw2552261回复于2018-01
#42 卡农LLLL回复
昨天看周姐把你的胡扯程序的文章发朋友圈了呢.

是互扯。哈哈。周姐是哪个大姐啊?

0
#42卡农LLLL回复于2018-01

昨天看周姐把你的胡扯程序的文章发朋友圈了呢.

0
#41mxw2552261回复于2017-12
#40 15053535385回复
很详细很好

谢谢

0
#4015053535385回复于2017-12

很详细很好

0
#39mxw2552261回复于2017-12
#37 daipeng_hi回复
顶一下,写得太详细了;good

谢谢

0
TOP
切换版块