project,

用 Wechaty 实现微信任务小助手(wechat teamin chat robot)

darkli(李云军) darkli(李云军) Follow Jul 17, 2020 · 1 min read
用 Wechaty 实现微信任务小助手(wechat teamin chat robot)

PoweredBy Wechaty

Wechaty实现微信上的任务小助手

缘起

iphone自从增加了屏幕时间提醒以后,我惊奇的发现,现在一天有超过一半的时间都在看手机,而这么长的时间里面超过80%的时间在微信。。。
可能这是很多人日常生活的一个缩影,慢慢地我们会发现,生活重的各种点滴都开始会和微信关联起来。

知道有Wechaty以后,我萌生了一个想法,是否可以在微信上做一个小助手,让她来帮我管理日常生活中的各种琐事呢?
当有什么需要做的事情,就直接告诉小助手,他帮忙记录下来,等到了时间就来提醒我,想想就很爽,比打开一个效率管理的App一字字输入日程安排要简单多了。
小助手也可以做的更拟人化一些,让我觉得就好像真的是自己的一个助理。

挑战

设计思路

其实结构比较简单,我想了一下,一个最简单的实现结构是这样的
结构图

怎么接入Wechat,实现微信消息的收发,这个官方文档已经说的很详细了,这里就不多说了。
针对任务助手这块,要实现通过小助手把任务添加进来,对话的意图分析和关键词获取是最核心的两个步骤

意图分析
之前曾经对比过百度的UNIT、微软的Luis以及腾讯、讯飞的对话平台,效果最好的感觉还是微软的Luis,因此这里选择用他们的方案来做意图理解。

关键词获取
在Luis的意图分析中可以通过Entity顺便挑选出一些想要的词汇,但这些对于添加一条任务来说,还是远远不够
和一般我们看到的客服对话不太一样,添加任务的对话场景是开放式的,因此常规的这种关键词获取并不能满足我们的要求
比如:

  1. 提醒我明天上午去开会
  2. 提醒我后台去出差

这两句话中,提醒、时间词,这些都很好通过Entity挑选出来,比较难的是,任务的主题:开会、出差
任务主题的范围是开放式的,没有办法预料会有什么内容,也没有办法去限制,如果有一天小助手突然对你说,只能跟我说提醒你开会啊,那是一种什么样的心情。。。

为了能够精准获取主题的内容,语法结构就派上用场了,具体怎么分析,不属于这篇Blog的范畴,就不详细说啦。
大致的思路是通过语法结构分析,找出用户表达内容的部分,去掉一些无用的词汇,就可以形成主题了,说起来很简单,做起来嘛,嘿嘿。。。

嗯,大致的思路有了,开始搞一把。
基本逻辑是:

  1. 我发送语音、文字给微信
  2. 小助手通过Wechay接口获取我的信息,如果是语音,转成文字
  3. 将文字传送给Luis进行意图分析,同时获取一些简单的关键词:时间、地点、人物等
  4. 将句子进行句法分析,再抽取出任务的主题
  5. 形成业务逻辑,往数据库中记录任务
  6. 同时会有一个定时任务,定期检查任务是否到期,如果到期,通过Wechaty给我发送消息

效果尝试

由于任务主题的提取是一个非常难得事情,很难做到尽善尽美,不过常用的提醒任务都是没问题的,效果还是挺好的。
我们来看些例子: 聊天示例01

在这里,向小助手提的要求是:提醒我后天上午10点去三楼开会
在这句话中,后天上午10点,这两个关键词都可以在意图分析的时候,直接返回出来
按照前面说的,通过句法结构分析,我们发现,后天上午10点去三楼开会,都是提醒的宾语, 通过这个可以抽取出主题:去三楼开会
看起来是不是也不太难,嘿嘿。

那咱们来个复杂的: 聊天示例02

这次的话术是: 明天上午10点与客户开会,提醒一下小明下午3点之前把会议资料准备好

这个结构就复杂了,在这里,小明是这件事情的负责人, 同时这里有两个时间:明天上午10点下午3点之前 这句话的难点是:

  1. 判断小明是负责人
  2. 两个时间,上午10点是开会的正题,下午3点之前是需要准备资料的时间
  3. 得出主题:与客户开会,把会议资料准备好,不能有多余的无用的词

具体怎么做,有兴趣的小伙伴可以自己研究研究,还是挺有意思的。

写在最后

微信现在已经演变成了一个人和人之间的连接工具,对话慢慢会变成以后应用的主流, Wechaty的出现让我们进行类似这样的尝试有了新的机会,还是非常感谢Wechaty的作者们的辛勤努力的。 可以畅想,未来一定会出现一个更加智能的对话小助手,它可以帮你解决身边各种复杂的问题,希望这一天能够早点到来,:)

大家也可以加我们的小助手为好友,体验一下对话任务协作的功能,多多给我们提建议哦。

小助手二维码

作者: darkli

Join Newsletter
Get the latest news right in your inbox. We never spam!
Written by darkli(李云军)
人机对话在任务协作领域的探索者