BotBuilder Nodejs示例查看
关于Bot Framework知识,可以参考《Nodejs Bot学习》
本文是根据bot framework官方示例《https://github.com/Microsoft/BotBuilder》写出的个人学习资料
示例一:basics-waterfall(最基础的瀑布流)(https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-waterfall)
https://github.com/ChenWes/bot-nodejs-sample/tree/master/1-basics-waterfall
多个方法时,上一个方法的结果,可以在下一个方法提取到,就是所说的瀑布流,运行完一个方法,接着运行下一个方法
将数据保存至userData,但第二次并未取出

示例二:basics-loops(最基础的循环)(https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-loops)
https://github.com/ChenWes/bot-nodejs-sample/tree/master/2-basics-loops
预先定义好问题的数组,bot开始直接进入至dialog,在dialog中,提取数组中的问题,并发送给用户,获取回复
数组没有循环完成,则继续下一个问题(使用replaceDialog替换dialog),循环完成了,则返回至bot开始的方法中(endDialog()和endDialogWithResult()都可以返回)

示例三:basics-menus(基本的菜单选择)(https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-menus)
https://github.com/ChenWes/bot-nodejs-sample/tree/master/3-basics-menus
bot开始进入至主菜单,选择不同的菜单进入不同的dialog,各个dialog完成时,使用endDialog()方法返回到主菜单dialog,此时使用replaceDialog()方法重新获取控制权
在主菜单中,使用endDialog()返回,主动权回到bot中,如果使用endConverstation()方法,则会结束整个对话
在endDialog()方法加入数组参数,则会以bot SDK的默认规则随机选择其中一个元素返回

示例四:basics-naturalLanguage(结合Luis开发“闹钟”应用)(https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-naturalLanguage)
https://github.com/ChenWes/bot-nodejs-sample/tree/master/4-basics-naturalLanguage
结合Luis,在本机一个对象中,加入“闹钟”对象,并设置一个定时器,如果是对应的时间,就直接返回一条消息给用户
增加“闹钟”前获取用户的地址(该地址记录的是用户的地址)

返回消息前设置用户的地址,这样就可以返回至增加“闹钟”的用户了,其他用户并不会有提示,发送完提示后删除“闹钟”

实体识别可以知道返回的时间,并变为日期与时间组合

从Luis实体中找到参数,如果没有,则让用户选择需要删除的“闹钟”


示例五:basics-multiTurn(多轮瀑布流)(https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-multiTurn)
https://github.com/ChenWes/bot-nodejs-sample/tree/master/5-basics-multiTurn
运行例子是失败的,从代码的逻辑看,应该是通过查询不同的问题,不同的问题都是返回到同一个dialog回应(但传入dialog的参数是不同的,回复dialog会根据参数不同从而有不同的回应)

示例六:basics-firstRun(中间件)(https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-firstRun)
https://github.com/ChenWes/bot-nodejs-sample/tree/master/6-basics-firstRun
中间件的作用就是可以设定是否重复运行对话
每发一条消息,都会进入onFindAction方法中,onFindAction即中间件
中间件,首次,userData.version为空,则callback时,score为1.1,则会运行firstRun dialog,userData.version修改为1
以后,userData.version为1,则callback时,score为0,则会跳过firstRun dialog
运行效果:首次(打开模拟器的第一次,关闭后重新计算)会进入至firstRun dialog,无论你是否输入名称,都会保存至userData,然后,以后每次都会运行bot的第二行和第三行代码
在以后的输入中,你如果输入了help,就会一直卡住在help中

示例七:basics-logging(日志中间件)(https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-logging)
https://github.com/ChenWes/bot-nodejs-sample/tree/master/7-basics-logging
日志中间件的方法名称得是botbuilder
在中间件中,如没有运行next()方法,则bot本身的消息不会被发送出去

示例八:basics-localization(多语言支持)(https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-localization)
https://github.com/ChenWes/bot-nodejs-sample/tree/master/8-basics-localization
用户可选择语言,预计在项目中加入JSON文件,并可以让用户进行选择语言,用户选择语言后,可以读取JSON文件对应节点的文本
session.preferredLocale可以选择不同的语言


示例九:basics-customPrompt(自定义对话框)(https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-customPrompt)
https://github.com/ChenWes/bot-nodejs-sample/tree/master/9-basics-customPrompt
主程序等待回复,当子dialog运行endDialogWithResult(),即会重新激活

第一次进入至onBegin(),一定会经过matches()方法,
如果匹配到了,就会结束,没有匹配会运行onDefault(),
也会查看文本是否等于42,等于42则结束,不等于42会发出提示文本,但并不会退出

示例十:basics-libraries(dialog封装成Lib)(https://github.com/Microsoft/BotBuilder/tree/master/Node/examples/basics-libraries)
https://github.com/ChenWes/bot-nodejs-sample/tree/master/10-basics-libraries

定义一个Library,然后导出

lib的dialog定义事件,调用时,直接使用beginDialog()//参加使用Lib加dialog名称


BotBuilder Nodejs示例查看的更多相关文章
- 运行所有sdk目录下的示例,查看它们的功能,方便以后查寻
运行所有sdk目录下的示例,查看它们的功能,方便以后查寻
- NodeJS示例异步式(Asynchronous)IO与同步式Synchronous)IO
理解IO IO(Input/Output)通常是指计算机线程进行慈磁盘读写或者网络通信时的一种行为. 同步式(Synchronous)IO和异步式(Asynchronous )IO ...
- BotFramework Nodejs示例
关于Bot Framework知识,可以参考<Nodejs Bot学习> 本文是根据bot framework sample<https://github.com/Microsoft ...
- Nodejs Bot学习
关于示例部分可以参考<BotFramework Nodejs示例><BotBuilder Nodejs示例查看> Bot Framework Nodejs SDK包括几种与用户 ...
- 在Linux(ubuntu server)上面安装NodeJS的正确姿势
上一篇文章,我介绍了 在Windows中安装NodeJS的正确姿势,这一篇,我们继续来看一下在Linux上面安装和配置NodeJS. 为了保持一致,这里也列举三个方法 第一个方法:通过官网下载安装 h ...
- windows下的Nodejs及npm的安装、常用命令,Nodejs开发环境配置
http://www.cnblogs.com/webstorm/p/5744942.html ***************************************** 第一步:下载Nodej ...
- ubuntu14.04下nodejs + npm + bower的安装、调试和部署
1. 简介 本文介绍ubuntu14.04下nodejs+npm+bower的安装.调试和部署 参考文档 https://docs.npmjs.com/getting-started https: ...
- NodeJS的异步编程风格
NodeJS的异步编程风格 http://www.infoq.com/cn/news/2011/09/nodejs-async-code NodeJS运行环境因其支持Javascript语言和异步编程 ...
- Nodejs in Visual Studio Code 01.简单介绍Nodejs
1.开始 作者自己:开发人员,Asp.Net , html / js , restful , memcached , oracle ,windows , iis 目标读者:供自己以后回顾 2.我看No ...
随机推荐
- POJ 1661 DP
Help Jimmy Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11071 Accepted: 3607 Descr ...
- DEBUG宏
4.8.6.运算中的临时匿名变量4.8.6.1.C语言和汇编的区别(汇编完全对应机器操作,C对应逻辑操作)(1)C语言叫高级语言,汇编语言叫低级语言.(2)低级语言的意思是汇编语言和机器操作相对应,汇 ...
- ES6中函数的扩展
一.设置默认参数 ES6之前,给函数设置默认参数是这样做的: function fn(a) { if(typeof y === undefined){ a = a || 'hello'; } cons ...
- uva 10683 Fill
https://vjudge.net/problem/UVA-10603 题意: 倒水问题,输出最少的倒水量和目标水量 如果无解,目标水量就是尽可能接近给定点的目标水量,但不得大于给定的目标水量 推推 ...
- 图论:Floyd-多源最短路、无向图最小环
在最短路问题中,如果我们面对的是稠密图(十分稠密的那种,比如说全连接图),计算多源最短路的时候,Floyd算法才能充分发挥它的优势,彻彻底底打败SPFA和Dijkstra 在别的最短路问题中都不推荐使 ...
- 快速搭建rabbitmq单节点并配置使用
安装erlang环境 wget http://erlang.org/download/otp_src_20.3.tar.gz tar xf otp_src_20.3.tar.gz && ...
- [LA3135]node形式的优先队列
n个触发器,每个触发器每period秒就产生一个编号为qnum的事件,求前k个事件. n<=1000 k<=10000 node形式的优先队列 主要在于重载小于号,确定优先顺序. #in ...
- 【洛谷 P4180】【模板】严格次小生成树[BJWC2010](倍增)
题目链接 题意如题. 这题作为我们KS图论的T4,我直接打了个很暴力的暴力,骗了20分.. 当然,我们KS里的数据范围远不及这题. 这题我debug了整整一个晚上还没debug出来,第二天早上眼前一亮 ...
- 如何免费上传4G以上大文件至百度云网盘
百度云网盘的容量高达2048G,因而如今使用百度云网盘的用户也越来越多, 但是百度云中如果要上传超过4G的大文件,必须要升级VIP才行,但这需要收费.那么,超过4G以上的大文件我们该怎样上传到百度云呢 ...
- python中正则用法举例
一.根据正则表达式替换字符串 import re text='abc123' text=re.sub(r'\d','-',text) print(text) 输出:abc---将每个数字替换为-,如果 ...