新しい IBM Developer JP サイトへようこそ!サイトのデザインが一新され、旧 developerWorks のコンテンツも統合されました。 詳細はこちら

危機コミュニケーション・チャットボットを作成し、ニュースと COVID-19 データ・ソースに接続する

危機の際に、人々が極めて重要な質問に対する答えをすばやく見つけるには、チャットボットが役立つはずです。COVID-19 のようなパンデミックにおいて人々が必要とする情報は、感染しているかどうかのテストを受けられる場所、症状、コミュニティーでの対応や、その他のリソースに関するものでしょう。

このチュートリアルでは、IBM® Watson™ Assistant を利用して危機コミュニケーション・チャットボットを作成する方法と、Watson Discovery と COVID-19 API に対して動的データのクエリーを実行できるよう、Watson Assistant に Webhook を追加する方法を説明します。

学習の目的

このチュートリアルの目的は次のとおりです。

  • Watson Assistant のインスタンスをプロビジョニングする
  • Watson Assistant インスタンスにダイアログ・スキルを追加する
  • Watson Assistant に Watson Discovery を接続する
  • Cloud Functions を作成する
  • Watson Assistant Webhook を使用してデータ・ソースを統合する

前提条件

IBM Cloud アカウントを登録します。

所要時間

このチュートリアルの所要時間は約 40 分です。

Watson Assistant インスタンスをセットアップしてチャットボットを作成する

ここでは Watson Assistant を利用してチャットボットを作成する方法を説明します。Watson Assistant を利用すれば、会話型インターフェースをあらゆるアプリケーション、デバイス、チャネルに統合できます。

  1. IBM Cloud カタログ内の「Services (サービス)」にナビゲートし、「Watson Assistant」のインスタンスをプロビジョニングします。

    カタログ内の Watson Assistant を示す画面のスクリーンショット

  2. Watson Assistant サービスを起動します。

  3. Create assistant (アシスタントを作成)」をクリックし、アシスタントを作成します。作成方法については、詳細な手順をご覧ください。

    Watson Assistant を示す画面のスクリーンショット 2

  4. Watson Assistance インスタンスに「COVID Crisis Communication」という名前を付けます。

    Watson Assistant を示す画面のスクリーンショット 3

  5. Add dialog skill (ダイアログ・スキルを追加)」をクリックし、アシスタントにダイアログ・スキルを追加します。不明な点がある場合は、このドキュメントに従ってください。

    Watson Assistant を示す画面のスクリーンショット 4

  6. 「Import Skill (スキルをインポート)」 > 「Choose JSON file (JSON ファイルを選択)」の順にクリックし、CovidJSON ファイルをインポートします。

    Watson Assistant を示す画面のスクリーンショット 5

  7. 「Assistants (アシスタント)」ページに戻ります。アクション・メニュー ( ) を開き、「Settings (設定)」を選択します。

    Watson Assistant を示す画面のスクリーンショット 6

  8. 「Settings (設定)」タブで、左側にある「API Details (API 詳細)」をクリックします。表示された「Assistant ID (アシスタント ID)」と「API Key (API 鍵)」の値を、後で使えるようにメモしておきます。

    Watson Assistant を示す画面のスクリーンショット 7

  9. 「Assistants (アシスタント)」ページに戻り、「Skills (スキル)」リンクをクリックします。

    「Skills (スキル)」リンクをクリックする画面のスクリーンショット

  10. 「Skill (スキル)」ページで、アクション・メニュー ( ⋮ ) をクリックし、「View API Details (API 詳細を表示)」を選択します。

    「Skills (スキル)」リンクをクリックする画面のスクリーンショット

  11. 「Skill Details (スキルの詳細)」ページが表示されます。このページに示されている「Skill ID (スキル ID)」の値を、後で使えるようにメモしておきます。

    「Skills (スキル)」リンクをクリックする画面のスクリーンショット

  12. ダイアログ・スキルのページに戻り、「Preview Link (リンクをプレビュー)」ボタンをクリックして、アシスタントをテストして確認するためのリンクを取得します。

    Watson Assistant を示す画面のスクリーンショット 9

  13. Watson Assistant チャットボットに、COVID-19 に関する質問をいくつかします。

    Watson Assistant を示す画面のスクリーンショット 10

チャットボットにデータ・ソースを統合する

Watson Assistant 対応のチャットボットを作成したら、そのチャットボットをデータ・ソースに接続する必要があります。以下のセクションで、チャットボットをデータ・ソースに接続するために、動的データのクエリーに対応する Webhook を Watson Assistant に追加する方法を説明します。

この危機コミュニケーション・チャットボットでは、以下の 3 つのデータ・ソースを使用します。

Webhook を定義する

まず、Webhook の機能を確認しましょう。Webhook は、プログラム内で発生したイベントに応じて外部プログラムを呼び出すためのメカニズムです。ダイアログ・スキル内で使用される Webhook は、アシスタントが Webhook 対応のノードを処理するときにトリガーされます。トリガーされた Webhook は、指定されたデータを収集するか、会話中にユーザーから収集してコンテキスト変数内に保存されているデータを収集します。

Webhook は収集したデータを HTTP POST リクエストの一部として、Webhook 定義で指定されている URL に送信します。Webhook からデータを受け取る URL は、リスナーと呼ばれます。リスナーは渡された情報を使用して、Webhook 定義で指定された事前定義アクションを実行します。また、必要に応じてレスポンスを返すこともできます。

Watson Discovery を利用してニュース情報を取得する

  1. IBM Cloud アカウントから Watson Discovery にアクセスします。

    Discover サービスを示す画面のスクリーンショット

  2. ライト・プランで新しいサービスを作成するために、「Create (作成)」をクリックします。

    Discover サービス・インスタンスの作成を開始する画面のスクリーンショット

  3. API 鍵と URL をメモします。次のステップで、これらの値が必要になります。

    資格情報が表示された画面のスクリーンショット

  4. Watson Discovery NEWS サービスを開きます。このサービスは、データが事前に取り込まれたディスカバリー・データセットで、Watson Discovery チームによって更新、保守されています。

    Watson Discovery NEWS を示す画面のスクリーンショット

  5. 右上隅にある API タブを開きます。「Collection ID (コレクション ID)」と「Environment ID (環境 ID)」の値をメモします。

    NEWS API 情報が表示された画面のスクリーンショット

Weather Company API 鍵を取得する

The Weather Company の COVID-19 Disease Tracking API を使用するには、API 鍵が必要です。Call for Code の参加者であれば、TWC API 鍵をリクエストできます。利用条件を読んで、Call for Code 2020 COVID チャレンジへの参加を登録してください。

  1. https://callforcode.weather.com/register/ にアクセスします。

  2. 該当する情報を入力して API 鍵を登録します。API 鍵は e-メールで送られてきます。

  3. 後で使用できるように API 鍵を保存します。

Cloud Functions を作成する

  1. IBM Cloud カタログ内で IBM Cloud Functions を表示します。

  2. Start Creating (作成を開始)」をクリックします。

    IBM Cloud Functions を示す画面のスクリーンショット

  3. Create Action (アクションを作成)」を選択します。

    「Create (作成)」画面のスクリーンショット

  4. アクションに名前を付けます。「Runtime (ランタイム)」として、ドロップダウンから「Node.js 10」を選択します。

    環境を設定する画面のスクリーンショット

  5. コードを action/covid-webhook.js で置き換えます。

    コードが表示された画面のスクリーンショット

  6. ここで使用するコードは主に 2 つの部分からなります。関数呼び出しで送信されたパラメーターに基づいて、COVID-19 API または Watson Discovery のどちらを呼び出すかを決定します。クエリー・パラメーターが type=api に設定されている場合は、summary エンドポイント上にある COVID-19 API を呼び出します。

    この API からは、以下の形式のデータが返されます。

     {
       Countries: [
         {
           Country: "",
           Slug: "",
           NewConfirmed: 0,
           TotalConfirmed: 0,
           NewDeaths: 0,
           TotalDeaths: 0,
           NewRecovered: 0,
           TotalRecovered: 0
         },
         {
           Country: " Azerbaijan",
           Slug: "-azerbaijan",
           NewConfirmed: 0,
           TotalConfirmed: 0,
           NewDeaths: 0,
           TotalDeaths: 0,
           NewRecovered: 0,
           TotalRecovered: 0
         },
         ...
       ]
     }
    
  7. 特定の場所 (国/国コード/米国の州) が選択されている場合は、The Weather Company API を使用して、あるいは summary レスポンス内で該当する場所を見つけて、その場所の状況を返します。

    例えば、type=apilocation=United States of America が設定されている場合のレスポンスは以下のようになります。

     {
       "result": "Total Cases: 65778\nTotal Deaths: 942\nTotal Recovered: 361\n\nSource: Johns Hopkins CSSE"
     }
    
  8. Discovery サービスを呼び出す場合、IAM 対応のサービスを呼び出すためのパラメーターをいくつか設定する必要があります。左側にある「Parameters (パラメーター)」タブをクリックして、以下のパラメーターを追加してください。

    • api_key (Discovery API 鍵)
    • twcApiKey (The Weather Company から取得した API 鍵)
    • url (Discovery サービス・インスタンスの URL)
    • collection_id
    • env_id

      パラメーターが表示された画面のスクリーンショット

  9. アクションを Web アクションとして使用できるようにします。それには、左側にある「Endpoints (エンドポイント)」タブを選択します。「Enable as Web Action (Web アクションとして有効にする)」の横にあるチェック・ボックスをクリックします。

    「Edpoints (エンドポイント)」タブを示す画面のスクリーンショット

  10. HTTP URL をメモします。これをアシスタントの Webhook として使用できます。URL の末尾に .json を追加すると、この URL が Webhook として機能します。

    HTTP エンドポイントを示す画面のスクリーンショット

Watson Assistant Webhook を使用してデータ・ソースを統合する

Webhook を介してデータ・ソースを統合する手順の詳細については、Watson Assistant からのプログラマチック呼び出しの実行に関する IBM Cloud 資料をご覧ください。

ここでは、Webhook を COVID-19 チャットボットに追加するための具体的なステップを説明します。

  1. 前に作成した COVID-19 アシスタントを起動します。「Services (サービス)」 > 「IBM Watson Assistant」を表示して、IBM Cloud アカウント内のアシスタントを見つけます。「CDC COVID FAQ」ダイアログをクリックして開きます。

    Watson Assistant を表示する画面のスクリーンショット

  2. 左側にある「Options (オプション)」をクリックします。

    「Options (オプション)」タブを示す画面のスクリーンショット

  3. 「Options (オプション)」 > 「Webhooks」にある「URL」テキスト・ボックスに、Cloud Funciton のステップでコピーした URL を貼り付けます。必ず、URL の末尾に .json を追加してください。

    URL を貼り付ける画面のスクリーンショット

  4. 左側のナビゲーションにある「Dialog (ダイアログ)」を選択します。

    「Dialog (ダイアログ)」タブを示す画面のスクリーンショット

  5. Webhook を追加する対象のダイアログ・ノードを開きます。

  6. ノードを選択してから「Customize (カスタマイズ)」をクリックします。

    「Customize (カスタマイズ)」ボタンのスクリーンショット

  7. 「Webhooks」セクション内にあるトグル・ボタンを「On (オン)」に切り替えて Webhook を有効にします。「Save (保存)」をクリックします。

    「Webhooks」セクションを示す画面のスクリーンショット

  8. Webhook に必要なパラメーターを追加します。これらのパラメーターがクエリー・パラメーターとして送信されます。

    Webhook のパラメーターを追加する画面のスクリーンショット

  9. Webhook 統合が機能することをテストするために、「Try It (テスト)」タブを表示して、Webhook を呼び出すダイアログを開始します。

    Webhook をテストする画面のスクリーンショット

Webhook を使用すれば、Watson Assistant をさまざまな外部 API やデータベースに簡単に接続できます。

次のステップ

このチュートリアルでは、COVID-19 チャットボットを作成して Watson Discovery と COVID-19 API に接続する方法を説明しましたが、他にも選択できる統合パスがいくつかあります。以下のチュートリアルで、このチャットボットを Slack、シンプルな Web アプリケーション、または Node-RED ダッシュボードに統合する方法を説明しています。

COVID-19 と対決する

このチュートリアルでは、Watson Assistant を利用してチャットボットを作成し、Watson Discovery と COVID-19 API データ・ソースに接続して、このパンデミックに関するタイムリーな情報を提供できるようにする方法を学びました。COVID-19 チャレンジに参加して、ここで学んだテクノロジーを利用してこのパンデミックと対決し、世界に変革をもたらしてください!