关于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示例查看的更多相关文章

  1. 运行所有sdk目录下的示例,查看它们的功能,方便以后查寻

    运行所有sdk目录下的示例,查看它们的功能,方便以后查寻

  2. NodeJS示例异步式(Asynchronous)IO与同步式Synchronous)IO

    理解IO      IO(Input/Output)通常是指计算机线程进行慈磁盘读写或者网络通信时的一种行为.   同步式(Synchronous)IO和异步式(Asynchronous )IO   ...

  3. BotFramework Nodejs示例

    关于Bot Framework知识,可以参考<Nodejs Bot学习> 本文是根据bot framework sample<https://github.com/Microsoft ...

  4. Nodejs Bot学习

    关于示例部分可以参考<BotFramework Nodejs示例><BotBuilder Nodejs示例查看> Bot Framework Nodejs SDK包括几种与用户 ...

  5. 在Linux(ubuntu server)上面安装NodeJS的正确姿势

    上一篇文章,我介绍了 在Windows中安装NodeJS的正确姿势,这一篇,我们继续来看一下在Linux上面安装和配置NodeJS. 为了保持一致,这里也列举三个方法 第一个方法:通过官网下载安装 h ...

  6. windows下的Nodejs及npm的安装、常用命令,Nodejs开发环境配置

    http://www.cnblogs.com/webstorm/p/5744942.html ***************************************** 第一步:下载Nodej ...

  7. ubuntu14.04下nodejs + npm + bower的安装、调试和部署

      1. 简介 本文介绍ubuntu14.04下nodejs+npm+bower的安装.调试和部署 参考文档 https://docs.npmjs.com/getting-started https: ...

  8. NodeJS的异步编程风格

    NodeJS的异步编程风格 http://www.infoq.com/cn/news/2011/09/nodejs-async-code NodeJS运行环境因其支持Javascript语言和异步编程 ...

  9. Nodejs in Visual Studio Code 01.简单介绍Nodejs

    1.开始 作者自己:开发人员,Asp.Net , html / js , restful , memcached , oracle ,windows , iis 目标读者:供自己以后回顾 2.我看No ...

随机推荐

  1. X210(s5pv210)中断系统

    1.SoC对中断的实现机制:异常向量表 (1)异常向量表是CPU中某些特定地址的特定定义.当中断发生的时候,中断要想办法通知CPU去处理中断,怎么做到?这就要靠异常向量表.(2)在CPU设计时,就事先 ...

  2. Android滚动栏控件的优化

    背景 由于普通TextView的跑马灯效果与焦点获取有关 所以不能直接使用 之前查找到的控件在数据设置方面存在问题 所以通过寻找github上的开源控件 并修改源码 得到一个目前感觉不错的效果 原理  ...

  3. 疯狂java学习笔记

    面向对象: 从现实世界中客观存在的事物(对象)出发构造软件系统,并在软件系统构造中运用人类的自然思维方式,强调直接以现实世界中的事物为中心来思考,认识问题,并根据这些事务的本质特点,将他们抽象为系统中 ...

  4. maven中用yuicompressor和closure-compiler对js、css文件进行压缩

    转载自:http://matychen.iteye.com/blog/1477350 项目采用maven构建的时候,需要压缩js,css等,网上找了相关资料,自己综合了下-  直接放代码: <! ...

  5. jquery动画切换引擎插件 Velocity.js 学习02

    案例实践: 第一页会以动画形式进入页面: 点击进入按钮时,第一页以动画消失,第二页以动画形式进入,同时四张图片也定义从小到大的动画形式: 第二页关闭按钮点击时,先是四张图片以缩小动画消失,然后第二页以 ...

  6. yum快速安装gitlab

    安装gitlab前戏使用官方的源,还是比较慢的,gitlab官方提供了一个清华大学的源 新建 /etc/yum.repos.d/gitlab-ce.repo,内容为 源[gitlab-ce]name= ...

  7. Vs2013 agent 安装

    1. 在windows 2008 R2上安装vs2013 agents需要满足: 1) .net 3.5 2) sp1补丁包(同windows7 sp1) 2. 安装vs2013 agents 步骤如 ...

  8. NSObject class和NSObject protocol的关系(抽象基类与协议)

    [转载请注明出处] 1.接口的实现 对于接口这一概念的支持,不同语言的实现形式不同.Java中,由于不支持多重继承,因此提供了一个Interface关键词.而在C++中,通常是通过定义抽象基类的方式来 ...

  9. 【洛谷 P1525】 关押罪犯 (二分图+二分答案)

    题目链接 并查集+贪心当然是可以做的. 但我用二分图+二分答案. 二分一个\(mid\),删去所有边权小于等于\(mid\)的边,看有没有奇环存在,如果存在,则\(mid\)不行. #include ...

  10. hdu 1253 胜利大逃亡(简单题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 题目大意:在所给的时间能顺利离开城堡. #include <iostream> #i ...