在开始继续机器人框架的学习之前,我需要首先解决Code运行编译js的问题,毕竟为了偷懒研究机器人框架的,每次手动输入 node app.js 啥的,多傻啊。
毕竟以前没用过Code,一时不知如何下手。突然想起之前装了Python,好像可以直接在Code里面F5键运行调试。那Node.js肯定也可以吧?研究下。
进入调试界面,仔细看了看,在调试后面有个下拉框,Python的各种调试都在里面了,研究了一下,原来是有一个launch.json的配置文件,照猫画虎的把找到的node运行调试的加上去了。咦?为啥不能直接运行?这个运行路径好像不对。改成${file}试试~ 果然,可以了。
嗯,继续机器人框架的学习。根据文档的介绍,其实人和机器人的交互可以叫做一次交流,每个交流可以有多次对话,每个对话里机器人的响应其实都是瀑布式 (waterfall) 的。是不是感觉很眼熟?我觉得这和程序的逻辑没啥不同嘛。
要开始真正的人机交互,需要从对话(dialog)开始。首先看看官方文档,然后贴一段示例代码过来跑跑~这是一段模拟订餐的人机对话。
很遗憾……报错了……提示 bot.dialog 没有定义。我也知道需要begindialog(),可你实例代码就是这么写的啊…塞哪也没用… 纠结了半天,决定先继续往下看。
看到下一章,这个问题就解决了。原来使用bot.dialog()在主程序之外定义的对话,然后在主程序里的默认dialog使用session.begindialog()来调用。再贴代码来跑跑~
这次跑的人机对话终于有点样子了,有个几回合的交互。
不改代码,怎么学习?我觉得通过改代码来理解一下它是如何运行的。首先我希望在有关预订内容之前,增加询问称呼的对话,然后后面的对话多一个称呼,显得礼貌一些。
照着示例代码的样子,写了一个bot.dialog(“askForName”),却发现无论如何跑起来都报错。
第一个错,出在第一个function我多加了results,某处又少了代码行结尾的”;”,结果一直提示session出错。
第二个错,出在我照葫芦画瓢,在第二个function里使用session.dialogdata.userName来引用变量。一直提示我userName未定义。后来我猜这个session.dialogdata.*估计是用来跨函数的全局变量,直接在当前函数赋值居然不能立刻引用…估计写法不对?反正我改成results.response,就好了。
那么,机器人支持中文么?我也得试试。
没问题啊~估计你得问,这tm哪里有人工智能了?我用VBS脚本都能写!且慢,请看看输入时间的地方~
builder.EntityRecognizer.resolveTime([results.response])
尝试了几种不同的输入,都能正确的解析成UTC时间格式,其实这里调用了简单的recognizer的功能,做了最简单的智能分析。毕竟这才刚开始,后面机器人还可以集成LUIS语音识别,Bing的搜索,Cortana的智能协助……如果我能完成学习的话~
本文转自HaoHu 51CTO博客,原文链接:,http://blog.51cto.com/haohu/1970425如需转载请自行联系原作者