Edited at

「Botkit + 雑談対話API」を使ってSlack上でBotと会話してみる!

More than 3 years have passed since last update.


Botkit

Slack用のBotを簡単に作るためのフレームワーク


https://github.com/howdyai/botkit


雑談対話API

docomoが公開している、ユーザが入力したテキストを受け付け、その入力に対して自然な会話となる雑談を提供する


https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=dialogue&p_name=api_usage_scenario


SlackのBotの追加

以下のURLにアクセスしてBotを作成する

https://my.slack.com/services/new/bot

※API token以外は必要な部分を変更する


docomo Developer supportアカウントの作成

以下URLからアカウントを作成する

https://dev.smt.docomo.ne.jp/?p=login


  1. アカウント取得後、マイページから 新規API利用申請 を行う。


  2. API機能選択雑談対話 を選択する

  3. 申請した アプリケーション情報 から API key を取得する


node環境の構築

node環境を構築します。


※既にnodeがインストールされている場合は、飛ばしてください。

yum install epel-release

yum install nodejs npm --enablerepo=epel


Botkitインストール

git clone https://github.com/howdyai/botkit.git

cd botkit
npm install


Botkitサンプルを動作させる

token=[Slack Bot用のAPI Token] node slack_bot.js


  1. 適当なチャンネルに作成したBotを招待する

  2. @作成したbot名 hello


  3. Hello. と返してくれれば成功


雑談対話APIを組み込んだjsファイルを作成する

if (!process.env.token) {

console.log('Error: Specify token in environment');
process.exit(1);
}

var Botkit = require('./lib/Botkit.js');
var request = require('request');

var controller = Botkit.slackbot({
debug: false
});

var bot = controller.spawn({
token: process.env.token
}).startRTM();

var context = '';
var mode = 'dialog';
var place = '福岡';

controller.hears('', 'direct_message,direct_mention,mention', function(bot, message) {

var options = {
url: 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY={docomo雑談対話API keyを指定する}',
json: {
utt: message.text,
place: place,

// 以下2行はしりとり以外の会話はコメントアウトいいかも
// 会話を継続しているかの情報
context: context,
mode: mode
}
}

//リクエスト送信
request.post(options, function (error, response, body) {
context = body.context;
mode = body.mode;

bot.reply(message, body.utt);
})

});


実行する

token=[Slack Bot用のAPI Token] node docomo.js

以下、2つのどちらかで会話することが可能


  1. 適当に @作成したbot名 適当な会話 で会話をする

  2. 「@作成したbot名 しりとり」と実行するとしりとりを行える(やり取り中も@ボット名が必要)