美文网首页我爱编程
女生科技体验节,wechaty专场技术复盘

女生科技体验节,wechaty专场技术复盘

作者: HelenYin | 来源:发表于2018-01-28 22:58 被阅读0次

在2018女生科技体验节中,讲师李佳芮向大家讲解了《从0到1,搭建你的个人智能助理》,基于同学们大多没有太多编码经验,所以这篇文章做一个技术复盘,把课程中讲到的技术知识点做一个总结。

OK,时间是把杀猪刀。课程第一步做了什么呢?嗯,做了课前准备。对,就是整个课程最复杂最麻烦的一步!很多同学在就牺牲在了第一步,俗话说得好,万事开头难,开了头就可以骑着马跑~为了保证到场人数达标,活动方派出了两位助教帮助同学们装环境(于是雨鸟为100多位同学装了docker,装得手抽经)废话说太多了,下面开始讲技术。
安装Wechaty有两种方法,Node和Docker。课前希望同学们能安装好。因为安装会花费很多时间,一个是本身软件很大,再加上wechaty镜像很大,如果全在会场来下载,会场的网络怕是扛不住的。。。
具体安装方法,安装成功的标志是,在命令行中输入node --version,会显示node的版本。

接下来讲一下docker, docker是一个简化部署的工具。为什么我们需要docker?对于初学者来说可能比较难理解,打一个比喻,集装箱!在集装箱出现之前,我们是怎么运输货物的呢,货物从工厂生产出来之后装箱,然后一箱箱的搬到卡车上,然后再一箱箱卸下来,一箱箱送上火车,运送到码头附近的火车站,再一箱箱卸下来,装上卡车,拉到货轮上,再一箱一箱的装上。可以看出在这个整个流程中,大量的时间,人力 ,物力全部浪费在了中间的装卸上。集装箱重要在它提供了一种通用的封装货物的标准规格(尺寸,外形符合统一标准)。只需要在运输前一次性封装,集装箱就可以放上火车,卡车,拉到码头,直接放在货船上这里后面还会具体介绍。理解就是,docker可以把整个开发环境中所需要应用按照一定的格式封装,开发者可以直接拉取镜像进行安装,就可以很容易的获取一套开发环境。如果把镜像比喻成面向对象中的类,容器就是一个实例。容器的实质就是一个进程。

docker安装好的标志是命令行运行:docker --version会显示docker的版本号。

好了,安装好docker之后我们要做的就是download wechaty的镜像

获取镜像的命令:docker pull [选项] [Docker Registry 地址]<仓库名>:<标签>

获取wechaty的镜像:docker pull [registry.docker-cn.com/zixia/wechaty]

获取镜像之后 运行 docker run zixia/wechaty

如果看到wechaty的欢迎界面就表示已经在本地成功运行wechaty

以上是环境搭建,搭好环境之后就可以编写我们想要的微信机器人了。

Wechaty

Wechaty是一个为个人微信号搭建的chat bot框架。
这里讲师给大家提供了一个机器人代码,实现了简单的自动通过好友请求,拉人入群,欢迎新人入群,踢人等功能。

需要大家拉下这个仓库,使用命令git clone https://github.com/lijiarui/wechaty-getting-started.git,没有安装git的同学可以直接下载这个仓库。下载好仓库后,需要进入到项目目录下(使用命令行:cd wechaty-getting-started),然后运行项目(使用命令行:docker run -ti --volume="$(pwd)":/bot --rm zixia/wechaty mybot.ts)这里我解释一下这两句命令行的意思:

1.cd wechaty-getting-started就是进入到wechaty-getting-started这个文件夹下面;

2.docker run -ti --volume="$(pwd)":/bot --rm zixia/wechaty mybot.ts

docker run的意思是创建一个新的容器,并运行一个命令,语法是docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

-ti是两个命令:-i是以交互模式运行容器,-t是为容器重新分配一个伪输入终端,这里我们打算进入bash执行一些命令并查看返回结果,因此我们需要交互式终端。

—rm这个参数是指容器退出后随之将其删除。

--volume是增加一个数据卷,具体什么是数据卷,将在后面的文章详细讲,这里只需要理解--volume="$(pwd)":/bot的意思就是把当前目录映射到容器里的bot

然后就是运行的zixia/wechaty这个镜像下的mybot.ts文件。

可能对js有了解的同学可能会问.ts文件和.js文件的区别,Wechaty框架是使用Typescript编写的项目,TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,TypeScript 通过类型注解提供编译时的静态类型检查。我们也可以直接用JavaScript进行编写

讲师提供的这个机器人做了一件什么事儿呢?

首先,当有好友请求添加好友的时候,能够自动添加为好友。

具体是这段代码

.on('friend', async function (contact, request) {
    if (request) {
        await request.accept()
        console.log(`Contact: ${contact.name()} send request ${request.hello}`)
    }
})

然后当接收到消息的时候,当对方说“hello”,机器人就会回应:"hello how are you”。这里的代码有一个小bug,就是回应的语句中也含有“hello”这个词,所以发生的当天著名的炸群事件,群里一个劲儿的回复“hello how are you”,导致当天有同学的微信号被封了。要修改这个bug很简单,就是将回复语中的“hello”换成其他词。继续往后,当同学们输入”room”的时候,机器人会找到一个名为“test”的群,然后将该同学拉进群里,并且会说:“welcome!${同学的名字}”,

.on('message', async function (m) {
        const contact = m.from()
        const content = m.content()
        const room = m.room()
        if (/room/.test(content)) {
            let keyroom = await Room.find({ topic: "test" })
            if (keyroom) {
                await keyroom.add(contact)
                await keyroom.say("welcome!", contact)
            }
        }
    })

当同学发送“out”这个信息的时候,会把自己从“test”这个群里把自己踢出去(这个功能也是很有意思的,自己把自己踢出群)

        if (/out/.test(content)) {
            let keyroom = await Room.find({ topic: "test" })
            if (keyroom) {
                await keyroom.say("Remove from the room", contact)
                await keyroom.del(contact)
            }
        }

好了,我把代码实现的功能讲述了一边,具体的就需要同学们自己去看代码了。这里我重点给大家介绍一下这段代码中用到的wechaty的几个类,分别是Wechaty、Contact、Message、和FriendRequest。每次我们只需要引入需要用到的类就可以使用类提供的方法了。
还提供了一些事件:‘scan’(扫描二维码),,’login’(机器人登录),‘logout’(机器人退出),‘message’(接收到新消息),‘error’(程序报错),‘friend’(好友请求)等。Wechaty提供了一套非常方便的API,供开发者方便的使用,满足机器人来管理群。

Server酱

网页版微信会经常把用户踢下线,Server酱可以帮助我们知道Wechaty发生了哪些异常。
Server酱,他是一个能从服务器推报警和日志到手机的工具,非常简单易操作:

1.用GitHub账号登入后,获得一个SCKEY(在「发送消息」页面) 按照引导,点击“微信推送”,扫码关注“方糖”后即可完成绑定 2.在login、logout、scan、和error事件触发后,将一些关键信息往 http://sc.ftqq.com/SCKEY.send 发Get请求,我自己的微信里就收到消息了。

这样,当我的机器人出现各种异常情况,我随时随地都可以知道,需要再扫码进入的时候,方糖这公众号就会把二维码推到我的手机上,我只要用机器人的微信扫码就可以了。

UNIT

最后,我们向大家介绍了怎么去制作智能微信机器人,使用了百度的UNIT框架。UNIT不需要有开发经验,我们需要做的是了解机器人使用在什么样的场景下,如何理解、如何回应用户。机器人是通过识别意图和词槽理解用户的。我们通过建立词槽,引入词典,配置词槽的澄清话术。配置回复文本及触发条件,配置引导话术、引导目标和触发条件,最后保存所有配置,导入语料,编辑对话模板,最后训练并生效模型。
这篇文章先写到这里,后面将会对同学们在课程中遇到的问题和一些专有名词进行解释。

相关文章

  • 女生科技体验节,wechaty专场技术复盘

    在2018女生科技体验节中,讲师李佳芮向大家讲解了《从0到1,搭建你的个人智能助理》,基于同学们大多没有太多编码经...

  • 女生科技体验节,Wechaty杂货铺

    这篇文章主要针对女生科技体验节Wechaty专场,同学们问的问题的汇总。因为很多同学没有太多编程基础,所以这篇文章...

  • 2018女生科技体验节感受

    今天参加女生科技体验节,第一次参加这种技术交流的活动,一眼望去几乎是女生,感觉很棒。 第一个讲师是古茜...

  • 每一场直播都是一次赋能成长!

    复盘(5月10日第16场-母亲节做自己) 热闹的母亲节直播专场结束了! 前期忙碌的主题确认、选品沟通、宣传推广,像...

  • 福利|个人复盘引导,哈哈,约满即止~

    如果你想体验一下复盘,找我找我找我~如果你想体验一下月晓的复盘,找我找我找我~ 个人复盘引导 架盘复盘法 碎片化复...

  • 定期对基金持仓进行复盘

    针对个人目前持仓,对基金做复盘,及时调整策略, 1、科技类复盘 2、医药类复盘 3、白酒复盘 4、指数复盘 创业板...

  • 复盘体验营第二课

    今天复盘体验课主要是谈复盘的意义和目的,

  • 11.24复盘

    99/150复盘&计划11.24 复盘 1.体验: 太阳很好,更好的是体验当下的感觉,体验坐在椅子上午休的安逸,体...

  • 【Andrea说】6个月阴霾,用6天来驱散

    结构化复盘体验营分享内容: 复盘初体验,成长无极限。 各位小伙伴们,大家晚上好,我是正在学习结构化复盘、实践结构化...

  • 女生专场

    未婚,我用验孕棒测出来怀孕了,心慌得不得了,赶紧给他打电话,他正在打牌,我问怎么办啊,渴望他负责任的回复,他说回头...

网友评论

    本文标题:女生科技体验节,wechaty专场技术复盘

    本文链接:https://www.haomeiwen.com/subject/ekltzxtx.html