Watsonチャットボットの作り方
~会話の作成からアプリ連携まで~

Watson Assistant

Watsonは、IBMクラウドに登録するだけで誰でも使うことができるAI(人工知能)です(無料プランあり)。
今回はWatsonを使って、自動でユーザーと対話を行うチャットボットを作成していきます。

[PR]自社サービス「FirstContact」についても紹介しておりますので、合わせて読んでいただけると嬉しいです!
ページの最後に実際にチャットツールを設置していますので、良かったら試してみてください。

IBM Cloud(Bluemix)にログインする

まずはIBMクラウドのアカウントを作成する必要があります。

こちらのページへアクセスし、必要事項を入力してアカウントを作成してください

Watson Assistant(旧Conversation)を使ったシナリオの設定方法

アカウント作成したら、さっそくチャットボットを作成していきます。

サービスを作成する

IBMクラウドには様々なサービスがありますので、その中から「Watson Assistant」を選択します。

見つからない方はここから移動できます

そのまま「作成」を押します。

ツールの起動」を押して開始します。

Watson Assistantの画面が起動しました。ここからは英語になります。

Workspaces」を押すと、チャットボットの単位である「ワークスペース」の一覧が表示されます。(最初はサンプルが1つ用意されています。)
Create」を押してワークスペースを新しく作ります。

Nameには適当な名前を入れてください。

LanguageJapaneseになっていることを確認したら、「Create」を押します。

完了すると、自動的に構築画面に遷移します。

Intents(インテント)にユーザーからの質問を登録する

ここから、シナリオの内容を登録していくことになります。
画面をみてみましょう。

左上にあるIntentsEntitiesDialogの3つが主に使っていくメニューになります

Intents(インテント)には、ユーザーからの入力データを登録していきます。
Add intent」を押して新規インテントを作成しましょう。

では、試しに商品の注文を行うインテントを作成していきましょう。

Intent nameを「注文」として登録します。

User examplesに、代表的な入力テキスト(ユーザーからの質問の例)を登録していきます。

今回は「注文したい」「購入」「購買する」などを代表的なテキストとして登録しました。

代表的なテキストに似通った質問が入力がなされると、同じ「注文」のインテントとして分類されます。

Entities(エンティティー)に辞書データを登録する

続いて、左上のメニューから「Entities」を選択してください。
Entities(エンティティー)は、商品名などの固有語・専門用語を登録する辞書データです。
Add entity」を押してエンティティーを作成します。

今回は、商品名を扱うエンティティーを作成していきましょう。

Entity nameを「商品名」として登録し、Value nameに商品名を入れていきます。

右側(Synonyms)には、類語、同じ意味として扱いたい言葉を入れていきます。

Dialog(ダイアログ)で会話を組み立てる

最後に、左上のメニューから「Dialog」を選択します。

Dialog(ダイアログ)では、実際の会話の流れを組み立てていきます。

Create」を押してダイアログを初期化します。

2つの四角が追加されました。
このそれぞれの四角は「Node(ノード)」といい、これを並べたり連結することで視覚的に会話フローを構築することができます。

最初に追加されたノードは次の2つです。

ようこそ(welcome)
ユーザーがチャットを開いた時に最初に表示されるノードです。

その他(anything_else)予想外の問い合わせなど、表示すべき内容がない場合に表示するノードです。

Add node」を押して新しいノードを追加しましょう。

ユーザーが商品の注文を行った場合のノード(メッセージ)を作成していきましょう。
一番上にノードの名前を入力します。「商品の注文」とします。

名前の下(呼び出し条件)には先程作成したインテント、エンティティーを指定します。

入力欄をクリックするとこのような表示になりますので、一番上の「# intents」を選択し、「#注文」を選択します。

を押して、さらに入力欄を追加。

二番目の「@ [Enter a search to filter by entity name]」を選択し、「@商品名」を選択します。
「#注文 and @商品名」という条件でメッセージの呼び出しを設定しました。

最後にTextにAIからのメッセージを入力します。

テストする

画面右上のを押すとテストツール(デモ画面)が起動します。
フランスパンを注文します」と入力してみましょう。

想定通りの回答が返ってくれば成功です!
今回はエンティティーを使用しましたが、挨拶などの固有語を持たない質問であれば、インテントとノードだけ追加すればOKです。
インテント、ダイアログ、必要に応じてエンティティーをどんどん追加し、会話のパターンを増やしましょう。

また、ここまでの流れは以下の公式動画にもまとまっています。ただし見た目が現在とは大きく違うので注意です。

Watsonでチャットボット構築チュートリアル(公式)

アプリ(API)と連携する

これでチャットボットの中身の部分ができましたので、実際にアプリで使用する方法について説明します。
開発が可能な場合にはBotkitなどのミドルウェアを使用することができますが、ここではコードを書かずに連携する方法を紹介します。

Facebook Messenger

メッセージングAPI(SNS)の代表としてFacebook Messengerとの連携方法を簡単にご紹介します。
Facebook MessengerとWatsonの連携にはIBMが用意した「Conversation Connector Toolchain」という連携ツールが利用できます。
このツールを使うには次のサービスのアカウントが必要ですのであらかじめご用意ください(いずれも登録無料です)。

用意ができましたら、こちらをクリックしてツールを起動してください(IBMクラウド、Githubにログインしている必要があります)。

Delivery Pipeline 必須」と書かれたパネルをクリックし、必要事項を入力していきます。

まずはFacebook側の設定キーです。

Facebook App Secret
Facebookアプリの 設定>ベーシック から確認できます

Facebook Page Access Token
Facebookアプリの プロダクト>Messenger>設定 から確認できます

Facebook Verification Token
任意の文字列を登録します。このキーはあとで使うので控えておいてください

Conversation Service Username
Conversation Service Password
Conversation Workspace ID

別窓でWatson Assistantの構築画面を開き、左のメニューからを選択後、Credentialsタブを開いてください。ここからそれぞれ確認できます。

すべて入力できたら「作成」を押します。

Delivery Pipeline」のパネルをクリックし、全てのプロセスが「成功」するまで待ちましょう。完了したら「Deploy Stage」の「ログおよび履歴の表示」をクリックし、ログ中からYour Request URL is: と書かれている部分を探します(おそらく一番下です)

そのURLをクリップボードにコピーしておいてください。

最後にFacebookアプリのページに戻り、プロダクトの設定からWebhookの設定を行いましょう。

コールバック
URLクリップボードのurlを貼り付けます。

トークン確認
先ほど控えたFacebook Verification Tokenを貼り付けます。

サブスクリプションフィールド
messagesmessaging_postbacksを選択してください。

これで完了ですが、思ったより時間がかかりました。

Facebookアプリを公開して、さっそくFacebook Messenger上で会話してみましょう。

Slack

業務効率化が期待できる「Slackボット」も開発なしで作成できるようです。手順はWatson Assistantの構築画面>左メニューの>Slackから見ることができます(英語)。

Webサイトへの設置

その他、自分のWebサイト上でチャットボット利用したい人向けにチャットのインターフェースを提供し、簡単な設定でチャットボットを使うことができるアプリケーションも多数あります。

Watson Assistantの機能

以上がWatson Assistantの基本的な使い方になります。Watsonには、さらにチャットを楽しいものにするための機能があります(一部のアプリでは対応していない場合があります)。

画像の送信

最近のアップデートでWatsonからのレスポンス(返答)の種類を選ぶことができるようになりました。
そのうちひとつは文章ではなく画像によるユーザーへの応答です。
チャット上に商品の使い方などの画像を表示してユーザーへわかりやすく案内したり、LINEの「スタンプ」のような使い方で豊かな感情表現ができます。

複数の選択肢ボタンの表示

ユーザーが、テキストの入力ではなくクリックやタップで、アクションを行うことができます。

ユーザー情報を記憶する

コンテキスト変数(Context=文脈)」と呼ばれる機能を使うことで、ユーザーのさまざまな情報を記憶することができます。

  • ユーザーのニックネームを覚えて呼びかける
  • ユーザーとの親密度(話した回数)に応じてメッセージを変える
  • サーバー側からWatsonにデータベースなどの値を渡す

などの使い方ができます。
チャットボットの構築はアイディア次第。過去の事例を参考にしてもいいですし、ユーザーのことを想像しながら楽しい会話を創造してみてください。

[PR]Watson Assistant対応のチャットサービスなら「FirstContact」

FirstContactの特色

チャットボットをWeb上で実用化するなら弊社「FirstContact」がおすすめです。

  • WatsonAssistantの各機能に対応
  • Webチャット、Facebook、LINEに対応
  • インターフェースが用意されているからすぐに使える
  • 月額12,000円(※有人対応のみなら2,980円)~

今なら20日間の無料トライアル!

実際にWebサイトに設置して無料でお試しいただけます。

FirstContactの無料トライアルのお申し込み