Windows Dev. Site

Bot Framework

最近はやりのBot。マイクロソフトもちょっと前にフレームワークを出しましたが、このBotBuilderを使って、まずは標準入出力で簡単に動かせるものを作ってみました。
環境: node ver 4.4.5 / Windows 10

Nodeは下記からダウンロード

https://nodejs.org/en/download/

node-v4.4.5-x64.msi

インストール

npm init
npm install –save botbuilder
npm install –save restify

Botは入力に対して、何かを返すというのが基本ですが、予想していない入力に対しては’?'で返し、ユーザの名前が登録されていないときは名前を尋ね、以後その名前で語りかけるという仕組みをつくったつもりです。

var builder = require('botbuilder');

var dialog = new builder.CommandDialog();

dialog.matches(["Hi", "Hello"], function (session) {
  if (!session.userData.name) {
    session.beginDialog('/getname');
  }
  else{
    session.send("> Hello, " + session.userData.name + "!");
  }
});
dialog.matches("How are you", function (session) {
  session.send("> I'm fine.")
});
dialog.matches("bye", function(session){
  session.send("> See you.")
  session.endDialog();
});

dialog.onDefault(function (session) {
  if(session.userData.name != session.message.text){
    session.send("> " + session.message.text + "?");
  }
});

var bot = new builder.TextBot();
bot.add('/', dialog);
bot.add('/getname', [
  function(session) {
    builder.Prompts.text(session, "> What's your name?");
  },
  function(session, results) {
    session.userData.name = results.response;
    session.send('> Hi, ' + session.userData.name);
    //session.endDialog();
    session.beginDialog('/');
  }
]);

bot.listenStdin();

実行結果
bot01

/getnameセッションが終わると、/に戻るかと思いましたが、そうならないためまたセッションを再度開始しています。
まだ調査不足のところがありますが、とりあえずここまでメモしておきたいと思います。

参考:

http://qiita.com/o0h/items/1a51cd0bbd9c38027388

http://www.atmarkit.co.jp/ait/articles/1604/15/news032_3.html