実運用指向のPHP/Laravelを使ったchatbotシステムBotMan

ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 IOT セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 本ブログのナビ チャットボットと質疑応答技術 PHPとウェブ開発 本ブログのナビ 

オープンソースのチャットボットフレームワーク概要

オープンソースのチャットボット開発プラットフォームとしては以下のものがある。

  • Hubot: GitHub社が開発したチャットボット開発・実行フレームワークとなる。。オープンソースで、Node.js上のCoffeeScriptで書かれており、Herokuなどのプラットフォームで簡単にデプロイでき、画像の投稿、言語の翻訳、Google Maps との統合などのコアスクリプトが含まれている。Hubotのシステムは、大きく分けてHubot自身のコアであるRobot、チャットツールと対話するためのAdapter、botの動作を規定するscriptsの3つに分けて考えることができる。

Hubotを起動したときにまず実行されるのがこのRobotとなる。Robotは、チャットツールからメッセージを受け取り、スクリプトを実行する一連の流れを処理する。Robotには、それ以外にも様々な機能が内蔵されている。たとえば、botを動かしていく中で永続化したいデータがあった場合にRedisやMongoDBといった外部ストレージに保存する⁠brain⁠や、外部からbotにhttp経由で命令を送ることができる⁠httpd⁠など。

Adapterは、チャットツールからRobotに誰かが入力した発言などチャットの状況を入力し、スクリプトなどによって作られた出力をチャットツールに伝える役割をする。初期状態では、シェル上でHubotと対話できるshell adapterと、Campfireというチャットツールに接続するCampfire AdapterいうAdapterが付属している。

Hubotのbotとしての動作を規定するスクリプトは、CoffeeScriptかJavaScriptで記述し、Node.js上で動かすことになる。例としてHubotに「今日は何日?」と尋ねると今日の日付を教えてくれるという単純なスクリプト等が考えられる。

Hubotは、スクリプトを書くことで好きなように拡張できるため、おおよそプログラムで実行可能なあらゆることを実行できる。例えば、発言に含まれるURLのタイトルを表示したり、ミーティング時間の通知、サーバの負荷が上がった場合に通知、GitHubのリポジトリにpull requestが送られた場合に通知したり、デプロイの実行のようなことができる。

  • botpress: JavaScript/TypeScriptで自由に拡張できる「チャットボット型アプリの開発フレームワーク。軽量で非常に高速で、Node.js以外のシステム依存性ゼロで利用できる。チャットシーケンスをビジュアル的に編集できるなど、ユーザーインターフェースがnocode的な使い方ができる。

  • BotMan:クロスプラットフォームチャットボット開発用のオープンソースPHPフレームワークであり、PHPライブラリとして利用する。複数のメッセージングプラットフォーム向けのボット開発タスクを簡素化するように設計されており、「単純なコマンドボット」から「高度な会話型インターフェース」まで対応できる。またLaravelに対応したBotManStudioもある。
  • VISEO bot maker: bootpressと同様にチャットシーケンスをビジュアル的に編集できる機能を持ち、「人工知能」「自然言語処理」「自動翻訳」「言語検出」「コンピュータビジョン」や、CRMやERPなどのエンタープライズコア情報システムにも接続できるAPIを持つ。
  • Microsoft Bot Framework: マイクロソフトが発表したオープンソースのボットビルダーSDKとなる。

今回はこれらの中で最も学習コストが低く信頼性のある本番システムを構築可能なPHPフレームワーク(Laravel)で構築可能なBotManについて述べる。

PHPベースのチャットボットフレームワークBotMan

BotManは、Slack、Telegram、Microsoft Bot Framework、Nexmo、HipChat、Facebook Messenger、WeChatなど、複数のメッセージングプラットフォーム向けの革新的なボットの開発タスクを簡素化するために設計された、フレームワークに依存しないPHPチャットボットのフレームワークとなる。

BotManの機能としては、分析されたRSSフィードをカルーセル形式でユーザに提示するなど最新の記事リストの提示する機能、新しい記事が公開されたときに購読者に通知するプロセスを自動化して最新のコンテンツをプッシュする機能、MailChimpと統合してメーリングリストのユーザーにサインアップする機能、自然言語の解析をして簡単な対話に対応するためのGoogleのプロダクトである「Dialogflow」と連携したSmall Talk機能などがある。

BotManは単体でも動作するが、Laravelに取り込むことで、テストやチャットツールとの連携や設定が容易になり、効率の良い開発を行うことを可能としている。Laravelに取り込んだBotManはBotMan Studioと呼ばれる。

以下にBotMan Studioの導入について述べる。

まずbotmanをインストールする。

>composer global require "botman/installer"

それらは”usr/.composer/vendor/bin”ディレクトリ下にインストールされるので、zsh等にパスを通すコマンドを入れる。

>export PATH=$/Users/xxxxxxx/.composer/vendor/bin$PATH
>source ~/.zshrc

プロジェクトファイルを入れるディレクトリに移動してbotmanプロジェクトファイルを生成する

>composer create-project --prefer-dist botman/studio <filename>

生成後にcomposer updateしろと言ってくるので、<filename>フォルダに移動してupdateする。

>composer update

chatbotをテストするには以下を入力する

>php artisan serve

Laravel development server started: <http://127.0.0.1:8000>が表示されて、ブラウザで見ることができる。

基本的なbotmanのPHPコードは以下となる。

<?php

use BotMan\BotMan\BotMan;
use BotMan\BotMan\BotManFactory;
use BotMan\BotMan\Drivers\DriverManager;

$config = [
    // Your driver-specific configuration
    // "telegram" => [
    //    "token" => "TOKEN"
    // ]
];

// Load the driver(s) you want to use
DriverManager::loadDriver(\BotMan\Drivers\Telegram\TelegramDriver::class);

// Create an instance
$botman = BotManFactory::create($config);

// Give the bot something to listen for.
$botman->hears('hello', function (BotMan $bot) {
    $bot->reply('Hello yourself.');
});

// Start listening
$botman->listen();

 

コメント

  1. […] 実運用指向のPHP/Laravelを使ったchatbotシステムbotMan […]

タイトルとURLをコピーしました