プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト...
TRANSCRIPT
![Page 1: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/1.jpg)
プロジェクト(金岡グループ)第2回2017年6月9日 金岡 晃
![Page 2: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/2.jpg)
金岡プロジェクトテーマ
配布資料より
テーマC 独自チャットボット作成
コミュニケーションツールSlack上で動き回るチャットボットシステムを作成する。シェルスクリプトやJavaScriptなどのスクリプト言語と、外部APIやデータセットの活用により、チームごとに特色のあるチャットボットの実現を試みる。
技術要素
なんらかの言語を使ったプログラミング
外部リソースの活用
HTTPによるアクセス
2017/6/9 プロジェクト1
![Page 3: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/3.jpg)
Slackとは
Slack(スラック)
コミュニケーションツール。グループでのチャットを中心として、ユーザ間のダイレクトメッセージやトピックごとのチャットなどが可能なWebサービス
https://slack.com/
類似・近いサービス?
2017/6/9 プロジェクト2
![Page 4: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/4.jpg)
スケジュール
内容
第1回(6月2日) プロジェクトの概要説明、基礎知識の学習(1)
第2回(6月9日) 基礎知識の学習(2)、Botデザイン
第3回(6月16日) Botデザインまとめ、発表
第4回(6月23日) 開発(1)
第5回(6月30日) 開発(2)
第6回(7月7日) 開発(3)
第7回(7月14日) 成果発表会
2017/6/9 プロジェクト3
![Page 5: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/5.jpg)
チャットボット
2017/6/9 プロジェクト4
ボット
チャット上でユーザとして参加してくるボット(プログラム)を作ることができる
プログラムのこと。特に人間に代わって作業を行うものを指すことが多い。マルウェアの用語としての一面も持つ。SiriやContanaもボットの一種
![Page 6: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/6.jpg)
簡単なボットならすぐできる
2017/6/9 プロジェクト5
Slackbotへの登録
![Page 7: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/7.jpg)
簡単なボットならすぐできる
2017/6/9 プロジェクト6
![Page 8: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/8.jpg)
本格的にボットを作る前に
2017/6/9 プロジェクト7
![Page 9: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/9.jpg)
ボットプログラム実行用の環境
• 金岡研究室内のサーバを利用
– 各種環境での実行が可能なようにしてある
• グループごとにアカウントを作成してあります
– グループでアカウントを共有してください
– 初期パスワードを配ります
– パスワードは変更してください
• sshでアクセス
– TeraTermを使う
– コマンドの実行などはこれで
• scpでアクセス
– WinSCPを使う
– ローカル(実習室で使っているPCや自宅PCなど)で作ったファイルをサーバに送る
2017/6/9 プロジェクト8
![Page 10: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/10.jpg)
サーバ用アカウント命名規則
2017/6/9 プロジェクト9
g201721
年度
シーズン1:春学期前半2:春学期後半3:秋学期前半4:秋学期後半
グループ番号
![Page 11: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/11.jpg)
チーム編成とアカウント名
学番 氏名
5515003新治 裕希
5515013太田 和希
5516101牧 伊織
5516111毛藤 匡哉
学番 氏名
5515012大石 涼火
5515016大橋 拓実
5516096平山 結菜
5516107水沼 佑太
学番 氏名
5515018岡野 就斗
5515021落合 伸紀
5516113山田 碧
5516118岡部 瞳
学番 氏名
5515017大山 滉平
5515023柿本 健
5516094平山 真聖
5516103松岡 智也
5516110宮本 康平
学番 氏名
5515005飯塚 拓巳
5515014大友 尚
5516089東森 大樹
5516100前田 直人
5516115吉澤 宏紀
学番 氏名
5515009伊藤 翼
5515024笠川 翔大
5516093平山 果奈
5516102増本 真子
5516105松本 実結貴
学番 氏名
5515007石橋 純
5515015大野 裕司
5516091平田 絵理
5516112山崎 優太
5516114山田 航大
グループ1 グループ3 グループ5 グループ7
グループ2 グループ4 グループ6
2017/6/2 プロジェクト10
g201721
g201722
g201723
g201724
g201725 g201727
g201726
![Page 12: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/12.jpg)
アクセスしてみよう
2017/6/9 プロジェクト11
avocado.klab.is.sci.toho-u.ac.jp
teratermとWinSCPの両方で
![Page 13: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/13.jpg)
TereTerm
2017/6/9 プロジェクト12
![Page 14: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/14.jpg)
TereTerm
2017/6/9 プロジェクト13
![Page 15: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/15.jpg)
TereTerm
2017/6/9 プロジェクト14
![Page 16: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/16.jpg)
WinSCP
2017/6/9 プロジェクト15
![Page 17: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/17.jpg)
WinSCP
2017/6/9 プロジェクト16
左側が自分のマシン 右側がサーバ
![Page 18: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/18.jpg)
本格的にボットを作る
2017/6/9 プロジェクト17
![Page 19: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/19.jpg)
ボットの開発
2017/6/9 プロジェクト18
JavaScriptによる開発
Botkitフレームワークの利用
Pythonによる開発
slackbotライブラリの利用
CoffeeScriptによる開発
Hubotフレームワークの利用
Javaによる開発
JBotフレームワークの利用
![Page 20: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/20.jpg)
共通する事項
2017/6/9 プロジェクト19
slackへの登録
• slackにBotを登録し、APIトークンを取得する• 複数のBotを作る場合、複数のAPIトークンを取得する
![Page 21: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/21.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト20
このマークをクリック
![Page 22: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/22.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト21
![Page 23: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/23.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト22
“Apps & integrations”をクリック
![Page 24: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/24.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト23
“Manage”をクリック
![Page 25: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/25.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト24
“Custom Integrations”をクリック
![Page 26: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/26.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト25
“Bots”をクリック
![Page 27: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/27.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト26
“Bots”をクリック
![Page 28: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/28.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト27
“Add Configuration”をクリック
![Page 29: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/29.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト28
“Bots”をクリック
ここで「Bots」が出ない人は
https://my.slack.com/services/new/botをクリック
![Page 30: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/30.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト29
Slackチーム内で表示されるユーザ名
![Page 31: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/31.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト30
“Add bot integration”をクリック
![Page 32: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/32.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト31
![Page 33: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/33.jpg)
ボットの登録、APIトークンの取得
2017/6/9 プロジェクト32
これがAPIトークン。これを別のファイル(テキストなど)に保管しておく。
![Page 34: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/34.jpg)
JavaScriptによる開発
2017/6/9 プロジェクト33
Botkitフレームワーク
ボットが実行されるフォルダの設定を行う(teratermによるサーバ上の作業)
• 実施コマンド• mkdir <フォルダ名>• cd <フォルダ名>• npm init• npm install botkit --save
mkdirでフォルダを新規に作成して、cdでそのフォルダに移動
botkitを使うための初期化
![Page 35: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/35.jpg)
JavaScriptによる開発
2017/6/9 プロジェクト34
Botkitフレームワーク
ボット本体の作成(ローカル<実習室PC、自宅PC>での作業)
ファイル名はかならず”index.js”とすること
JavaScript言語
![Page 36: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/36.jpg)
JavaScriptによる開発
2017/6/9 プロジェクト35
Botkitフレームワーク
ボット本体のサーバへのアップロード(ローカル<実習室PC、自宅PC>での作業)
• WinSCPを立ち上げてサーバ(avocado)に接続• さきほど作成したフォルダにindex.jsをアップロード
![Page 37: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/37.jpg)
JavaScriptによる開発
2017/6/9 プロジェクト36
Botkitフレームワーク
ボットの実行( teratermによるサーバ上の作業)
• 実施コマンド• token=<APIトークン> node index.js
![Page 38: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/38.jpg)
JavaScriptによる開発:簡単な例
2017/6/9 プロジェクト37
ボットが実行されるフォルダの設定を行う(teratermによるサーバ上の作業)
• 実施コマンド• mkdir testbot01• cd testbot01• npm init• npm install botkit --save
![Page 39: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/39.jpg)
JavaScriptによる開発:簡単な例
2017/6/9 プロジェクト38
ボット本体の作成(ローカル<実習室PC、自宅PC>での作業)
const Botkit = require('botkit');
if (!process.env.token) {console.log('Error: Specify token in environment');process.exit(1);
}
const controller = Botkit.slackbot({debug: false
});
controller.spawn({token: process.env.token
}).startRTM(function(err){if (err) {
throw new Error(err);}
});
// say hicontroller.hears('hi',['direct_message','direct_mention','mention'],function(bot,message) {
bot.reply(message,'hi');});
![Page 40: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/40.jpg)
JavaScriptによる開発:簡単な例
2017/6/9 プロジェクト39
ボット本体の作成(ローカル<実習室PC、自宅PC>での作業)
const Botkit = require('botkit');
if (!process.env.token) {console.log('Error: Specify token in environment');process.exit(1);
}
const controller = Botkit.slackbot({debug: false
});
controller.spawn({token: process.env.token
}).startRTM(function(err){if (err) {
throw new Error(err);}
});
// say hicontroller.hears('hi',['direct_message','direct_mention','mention'],function(bot,message) {
bot.reply(message,'hi');});
DMや言及(@ユーザ名 を付けてつぶやく)したときに、そのつぶやきが「hi」だったら、「hi」と返す
![Page 41: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/41.jpg)
JavaScriptによる開発:簡単な例
2017/6/9 プロジェクト40
Botkitフレームワーク
ボットの実行( teratermによるサーバ上の作業)
• 実施コマンド• token=xoxb-169493700566-7ev2Ze5xZJPeqHe0GbevIUJ6 node index.js
![Page 42: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/42.jpg)
JavaScriptによる開発:簡単な例
2017/6/9 プロジェクト41
![Page 43: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/43.jpg)
JavaScriptによる開発:軽い応用
2017/6/9 プロジェクト42
何かBotあてにつぶやかれたら、登録してある複数の文言からランダムに選択して返信する
やること
• 複数文言を登録してあるテキストファイル(1行に1文言)を用意
• テキストファイルの行数を読み込み、何行目を呼び出すかをランダムに決める
• 決められた行の文言をメッセージとして返す
![Page 44: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/44.jpg)
JavaScriptによる開発:軽い応用
2017/6/9 プロジェクト43
const Botkit = require('botkit');
if (!process.env.token) {
console.log('Error: Specify token in environment');
process.exit(1);
}
const controller = Botkit.slackbot({
debug: false
});
controller.spawn({
token: process.env.token
}).startRTM(function(err){
if (err) {
throw new Error(err);
}
});
index.js(前半)
さっきのと同じ
![Page 45: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/45.jpg)
JavaScriptによる開発:軽い応用
2017/6/9 プロジェクト44
// say hi
controller.hears('',['direct_message','direct_mention','mention'],function(bot,mess
age) {
var fs = require('fs');
var contents = fs.readFileSync('comments.txt');
var lines = contents.toString().split('¥n').length -1;
var num = Math.floor(Math.random()*lines);
var dat = '';
var lnum = 0;
fs.readFileSync('comments.txt').toString().split('¥n').forEach(function (line){
if(lnum==num)dat=line;
lnum++;
});
bot.reply(message,dat);
});
index.js(後半)どのメッセージでも反応する
文言ファイル(comments.txt)を開く
行数をカウント
レスする文言をランダムに選ぶ
その行をレスする
![Page 46: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/46.jpg)
2017/6/9 プロジェクト45
![Page 47: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/47.jpg)
Pythonによる開発
2017/6/9 プロジェクト46
slackbotライブラリ
ボットが実行されるフォルダの設定を行う(teratermによるサーバ上の作業)
• 実施コマンド• mkdir <フォルダ名>• cd <フォルダ名>• touch slackbot_settings.py• touch run.py• mkdir plugins• touch plugins/__init__.py
botkitを使うための初期化
![Page 48: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/48.jpg)
Pythonによる開発
2017/6/9 プロジェクト47
slackbotライブラリ
slackbot_settings.pyの編集
API_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
default_reply = “I could not understand that...“
PLUGINS = [‘plugins’,
]
APIトークン
デフォルトのリプライ
teratermで作業
ローカルで作成してWinSCPでアップロード
ボットが実行されるフォルダ
![Page 49: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/49.jpg)
Pythonによる開発
2017/6/9 プロジェクト48
slackbotライブラリ
run.pyの編集
from slackbot.bot import Botdef main():
bot = Bot()bot.run()
if __name__ == "__main__":main()
teratermで作業
ローカルで作成してWinSCPでアップロード
ボットが実行されるフォルダ
![Page 50: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/50.jpg)
Pythonによる開発
2017/6/9 プロジェクト49
slackbotライブラリ
好きなファイル(***.py)の編集
teratermで作業
ローカルで作成してWinSCPでアップロード
ボットが実行されるフォルダの下のpluginフォルダ
![Page 51: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/51.jpg)
Pythonによる開発
2017/6/9 プロジェクト50
slackbotライブラリ
ボットの実行( teratermによるサーバ上の作業)
• 実施コマンド• python run.py
![Page 52: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/52.jpg)
Pythonによる開発:簡単な例
2017/6/9 プロジェクト51
slackbotライブラリ
mention.pyの編集
from slackbot.bot import respond_to
@respond_to('tired')@respond_to('zzz')def cheer(message):
message.reply('You can make it!')
teratermで作業
ローカルで作成してWinSCPでアップロード
ボットが実行されるフォルダの下のpluginフォルダ
“tired”か”zzz”をボット宛につぶやくと反応する
“You can make it!”とレスする
![Page 53: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/53.jpg)
Pythonによる開発:簡単な例
2017/6/9 プロジェクト52
slackbotライブラリ
mention.pyの編集
from slackbot.bot import respond_to
@respond_to('tired')@respond_to('zzz')def cheer(message):
message.reply('You can make it!')
teratermで作業
ローカルで作成してWinSCPでアップロード
ボットが実行されるフォルダの下のpluginフォルダ
“tired”か”zzz”をボット宛につぶやくと反応する
“You can make it!”とレスする
![Page 54: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/54.jpg)
2017/6/9 プロジェクト53
![Page 55: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/55.jpg)
Pythonによる開発:軽い応用
2017/6/9 プロジェクト54
何かBotあてにつぶやかれたら、登録してある複数の文言からランダムに選択して返信する
やること
• 複数文言を登録してあるテキストファイル(1行に1文言)を用意
• テキストファイルの行数を読み込み、何行目を呼び出すかをランダムに決める
• 決められた行の文言をメッセージとして返す
![Page 56: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/56.jpg)
Pythonによる開発:軽い応用
2017/6/9 プロジェクト55
from slackbot.bot import respond_to
@respond_to('wei')
def getrandcomment(message):
import random
f = open('comments.txt','r')
list = f.readlines()
num = len(list)
randnum = random.randint(0,num-1)
message.reply(list[randnum])
randomcom.py
“wei”というメッセージに反応する
文言ファイル(comments.txt)を開く
行数をカウント
レスする文言をランダムに選んで、その行をレスする
![Page 57: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/57.jpg)
2017/6/9 プロジェクト56
![Page 58: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/58.jpg)
そのほか:Hubot、JBot
2017/6/9 プロジェクト57
JBotに関する資料は「関連資料:Javaによる開発(JBot利用)」としてアップロードしていますのでそちらを参照してください。
![Page 59: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/59.jpg)
Botデザイン:考える点
2017/6/9 プロジェクト58
どんな目的で、どんな機能を持たせるか
• 目的• 機能
• こういう入力があったらこう返す• 「こう」に特徴がある場合はそう返す• **時**分になったらこう返す• その他のトリガ
機能はどういう技術要素で持たせるか
• DB(MySQL)を使って…• クラウドサービスを使って画像なんかを取得して…• Wikipediaからその項目を検索して…• 得られたデータから**を**して…
![Page 60: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/60.jpg)
Botデザイン:考える点
2017/6/9 プロジェクト59
完成イメージ
• ボット名称• 動作イメージ
作業項目とメンバー割り当て、線表
![Page 61: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/61.jpg)
次回のプレゼンについて
2017/6/9 プロジェクト60
Botデザインで検討した項目を解説
• 目的、実装する機能• 機能実現のための技術要素• 完成イメージ• 作業項目、割り当て、線表
グループあたりの持ち時間
• 10分
![Page 62: プロジェクト(金岡グループ)...チャットボット 4 2017/6/9 プロジェクト ボット チャット上でユーザとして参加してくるボット(プ ログラム)を作ることができる](https://reader035.vdocuments.pub/reader035/viewer/2022063017/5fd7ec2532830129bd356418/html5/thumbnails/62.jpg)
ポイントとなりそうな要素技術
• 外部のリソースの利用
– 外部APIの利用
– 外部データベースの利用
• 他のライブラリの利用
• 正規表現
2017/6/9 プロジェクト61