正确的提示信息

扫码打开虎嗅APP

从思考到创造
打开APP
搜索历史
删除
完成
全部删除
热搜词
2012-12-16 14:02

我是如何用微信做出翻译客服机器人的

之前微信上的公众帐号还是以推送信息和做客服为主,虽然也有自定义回复,但功能太弱。前不久微信公众平台开放了自定义回复接口,这让公众号能够实现的功能就有了更多的想像空间。

我们知道目前有几家公司已经通过这个接口实现了比较高级的功能,比如“订酒店”这个帐号。当用户在微信中把自己当前的地理位置(微信可以直接发送地图信息)发送给订酒店之后,订酒店会回复一条信息,告诉用户附近有哪些酒店可以预订,并提供订房的费用和电话号码。

第二个例子是白鸦做的“逛”,用户向逛的帐号发送“鞋子”等商品信息,逛会自动回复三条图文并茂的鞋子信息给用户,点击可直接进入逛的移动版页面。

对以上两个例子感兴趣的童鞋可以看一下这两篇文章:


微信自定义机器人的最初需求样本 by 白鸦,Guang.com创始人

受上面两个Case的启发,我结合官方提供的PHP示例做了一个微信版的有道词典”可可翻译“,微信号:kkfanyi,大家可以体验下。


我用Balsamiq Mockups画了一张图来说明微信翻译机器人是如何工作的。首先用户发送文本信息或地理位置信息,然后微信平台将它POST到之前我们预先设置的URL上,也就是一个PHP程序,程序向有道翻译API或百度地图Place API发送请求得到相关的数据(以JSON的形式返回),然后按微信的格式要求组成XML数据,微信理解后以文本形式回复给用户。

下面两张图分别是发送文本信息和地理位置信息后最终的显示结果:


上面第一张图演示的是中英文的互译的功能,可以获得有道翻译的结果,暂不支持中文翻译英语以外的其他语种,但可以将其他语种(日语、韩语、法语、俄语、西班牙)翻译成中文,直接输入其他语种即可,比如输入韩语:사랑해요 会返回:我爱你。

在第二图中,你只要发送地理位置信息,就可以获取2公里以内的英语培训机构的名称,地址和联系电话(显示前3条,数据来自百度地图)。

技术难点

在开发这个微信翻译机器人的过程中,我遇到了三大技术难点:

1.如何获取有道翻译结果?

2.如何获取用户的地理位置信息(纬度,经度)并从百度地图拿数据?

3.如何判断用户发送的是文本信息还是地理位置信息?

坦率的讲,在做可可翻译的过程中我走了不少的弯路,内外因都有。内因是自己毕竟还只是PHP初学者,在写代码的过程中经常因符号错误等问题耽误了不少时间。外因是腾讯给的PHP示例太TM弱爆了,很难想象出自企鹅这种大公司之手,如果直接用的话是不能返回消息结果的,必须加上$wechatObj->responseMsg();才行,位置信息获取也没有给出demo,官方的开发文档只给了XML数据的格式。还有就是现在的程序员都太自私了,网上搜到的跟微信公众号自定义回复接口开发的技术文章不超过10篇(还有很多是互相抄袭的),在官方开发群也不敢轻易发言,人家动不动就给你提钱的事,哎,桑心啊,不说了。

直接上代码

1.function language($value)函数,通过文本信息获取有道翻译结果。


2.function maps($location)函数,通过经纬度获取百度地图的数据。


3.根据用户发送的地理位置信息获取经纬度。


4.判断用户发送的是文本信息还是地理位置信息。


有童鞋问我为什么不直接上源码而要以截图的方式呈现,原因很简单,不想大家成为伸手党。

写在最后(摘自36Kr)

提供个性化服务的公众帐号,其实就是一个lite版的app。
假设你现在要解决这三个需求:订酒店、查看附近美食、美化图片,那么你需要分别装3个app。但是在微信中,你只要关注3个公众帐号就可以实现这些功能(比如向图片处理类公众帐号发一张图片,对方处理后返回一张带滤镜效果的图给你)。也就是说每一个公众帐号,都是一个app。只是功能相对原生app来说没有那么强大。
我猜测的是,目前 app store 上已经有的分类下的应用,可能微信都会把它们接入进来。而微信本身,我们也将能够看到类似 app store那样,把公众帐号按各个分类展示出来让大家去关注,让各个开发者在微信平台上自由发挥。那时,微信将成为一个类似于 app store 的 store 平台。

想要测试的童鞋可以扫描下面的二维码或者加微信号:kkfanyi

本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系 hezuo@huxiu.com
如对本稿件有异议或投诉,请联系tougao@huxiu.com
打开虎嗅APP,查看全文
频道:

支持一下

赞赏

0人已赞赏

大 家 都 在 看

大 家 都 在 搜

好的内容,值得赞赏

您的赞赏金额会直接进入作者的虎嗅账号

    自定义
    支付: