概要
UserLocalの人工知能ボットAPIというのを使って、SlackのBotと日本語で会話できるようにしてみました。
Slackで受け取ったメッセージを人工知能ボットAPIに投げて、受け取ったものをまたSlackに流してるだけです。
人工知能ボットAPI:http://ai.userlocal.jp
コード全体
const Botkit = require('botkit');
const request = require('request');
const chatBotToken= 'your-chat-bot-api-key';
const controller = Botkit.slackbot({
debug: false
});
controller.spawn({
token: 'your-api-token'
}).startRTM()
controller.hears('(.*)',['direct_message','direct_mention','mention'],function(bot,message) {
const options = {
url: ' https://chatbot-api.userlocal.jp/api/chat',
method: 'POST',
json: true,
form: {
'key': chatBotToken,
'message': message.match[0]
}
}
request(options, function(err, res, body){
if (!err && res.statusCode == 200 && body.status == 'success') {
bot.replyWithTyping(message, body.result);
} else {
console.log(err);
bot.replyWithTyping(message, '今は話す気分ではありません:zipper_mouth_face:');
}
});
});
解説
人工知能ボットAPIに登録して発行してもらったAPIキー。
sample
を指定すると1時間に10回まで試用することが可能だそうです。(登録してあれば1時間に500回までコール可能)
const chatBotToken= 'your-chat-bot-api-key';
SlackのBot宛のメッセージを全て補足しています。
controller.hears('(.*)',['direct_message','direct_mention','mention'],function(bot,message) {
人工知能ボットAPIに渡すパラメータを組み立てています。
message.match[0]
に受け取ったメッセージが入っています。
const options = {
url: ' https://chatbot-api.userlocal.jp/api/chat',
method: 'POST',
json: true,
form: {
'key': chatBotToken,
'message': message.match[0]
}
}
人工知能ボットAPIにリクエストを送り、成功であればbody.result
に入っている返答のメッセージをそのまま返します。
request(options, function(err, res, body){
if (!err && res.statusCode == 200 && body.status == 'success') {
bot.replyWithTyping(message, body.result);
} else {
console.log(err);
bot.replyWithTyping(message, '今は話す気分ではありません:zipper_mouth_face:');
}
});
会話してみた結果
HPには「単純な返答だけではなく、過去の対話内容にあわせたテーマで会話させる、といった指定も可能です。」とありますが、方法は分かりませんでした。
マニュアルにもまだ機械学習の途中で賢くないという旨の記載があるので、今後はもっと高度な会話ができるようになるのかもしれません。