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

Node-RED を使用して、音声対応の COVID-19 チャットボットを作成する

Node-RED と IBM® Watson™ Assistant、Watson Speech to Text、Watson Text to Speech サービスを利用して音声対応のチャットボットを作成する方法を学んでください。

学習の目的

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

  • Node-RED の概要と、Node-RED をローカルにインストールする方法と IBM Cloud 上にインストール方法を学ぶ
  • node-red-node-watson Node-RED ノードを探索する
  • サンプル Watson Assistant チャットボットをインポートしてデプロイする
  • 音声対応の Call for Code COVID-19 危機コミュニケーション・チャットボット・ソリューションを作成する

前提条件

所要時間

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

アーキテクチャー図

以下の図に、COVID-19 に関する質問に答える Node-RED チャットボットを作成する際のワークフローを示します。

危機コミュニケーションのアーキテクチャー図

  1. ユーザーが音声対応の Node-RED Web サイトにアクセスし、COVID-19 チャットボットに質問をします。
  2. Node-RED がユーザーの音声を WAV ファイル形式で記録し、IBM Cloud 内でホストされている Watson Speech to Text サービスを呼び出します。
  3. Watson Speech to Text が機械学習を使用してユーザーの音声をデコードします。
  4. Watson Speech to Text が COVID-19 に関する質問の音声をテキストに変換し、そのトランスクリプトで応答します。すると、Node-REDが IBM Cloud 内でホストされている Watson Assistant を呼び出します。
  5. Watson Assistant が自然言語理解機能と機械学習を使用して、ユーザーの質問からエンティティーとインテントを抽出します。
  6. 信頼できる CDC データから COVID-19 FAQ 情報を取り込みます。
  7. Watson Assistant が OpenWhisk オープンソースを利用した IBM Cloud Function を呼び出します。
  8. IBM Cloud Function が IBM Cloud 内で実行されている Watson Discovery サービスを呼び出します。
  9. Watson Discovery がニュース記事をスキャンし、関連する記事で応答します。
  10. Watson Assistant が OpenWhisk オープンソースを利用した IBM Cloud Function を呼び出します。
  11. IBM Cloud Function が COVID-19 API を呼び出して統計情報を取得します。
  12. Watson Assistant がユーザーの問い合わせに答え、Node-RED がテキストによるトランスクリプトを Watson Text to Speech に送信します。
  13. Watson Text to Speech がユーザーの言語でメッセージをエンコードします。
  14. Node-RED がユーザーに対し、.wav ファイルのチャットの応答を再生します。
  15. ユーザーがチャットの応答を聞きます。

手順

Node-RED について理解する

Node-RED は、ハードウェア・デバイス、API、オンライン・サービスを新しい興味深い方法で結び付けることができる、オープンソースのプログラミング・ツールです。Node-RED では、ブラウザー・ベースのエディターを使って、ランタイムにデプロイできる幅広いノードをパレットから選択し、シングルクリックで簡単に接続してフローを作成できます。

Node-RED 依存関係ノードをインストールする

Node-RED がインストールされたら、このチュートリアルで必要となる以下の依存関係を追加します。

ローカルにインストールする場合の手順

npm install node-red-node-ui-microphone node-red-dashboard node-red-node-watson node-red-contrib-play-audio node-red-contrib-twc-covid19-tracker

IBM Cloud 内にインストールする場合の手順

  • Manage Palette (パレットの管理)」を使用してパッケージを追加するのではなく、IBM Cloud 内で IBM Cloud Toolchain と git リポジトリーを使用して以下のパッケージを package.json に追加します。変更をコミットすると、CI/CD ツールチェーンにより CF アプリケーションの再ステージングが行われます。
"node-red-node-ui-microphone":"0.x",
"node-red-dashboard":"2.x",
"node-red-contrib-play-audio":"2.x",
"node-red-contrib-twc-covid19-tracker":"0.x",

node-red-node-watson Node-RED ノードを探索する

node-red-node-watson GitHub リポジトリーに、IBM Watson サービス用の一連の Node-RED ノードが格納されています。このパッケージにより、以下のノードが Node-RED パレットに追加されます。

  • Assistant (アシスタント): 会話機能をアプリケーションに追加します。
  • Discovery (ディスカバリ―): Watson Discovery 用に作成された環境を一覧表示します。
  • Language Identification (言語の識別): テキストで使用されている言語を検出します。
  • Language Translator (言語翻訳プログラム): テキストをある言語から別の言語に翻訳します。
  • Natural Language Classifier (自然言語分類器): 機械学習アルゴリズムを使用して、短いテキスト入力と一致する上位の事前定義クラスのいくつかを返します。
  • Natural Language Understanding (自然言語理解): テキストを分析して、その内容からコンセプト、エンティティー、キーワードなどのメタデータを抽出します。
  • Personality Insights (パーソナリティー・インサイト): 言語アナリティクスを使用して、テキストから認知的特性と社会的特性を推論します。
  • Speech To Text (音声テキスト変換): 発話を含む音声をテキストに変換します。
  • Text To Speech (テキスト音声変換): テキストを音声の発話に変換します。
  • Tone Analyzer (トーン・アナライザー): テキストに含まれる言語のトーンを検出、理解、改正します。
  • Visual Recognition (視覚認識): 画像の外観を分析して、その内容を理解します。

サンプル COVID-19 危機コミュニケーション・チャットボットをインポートしてデプロイする

Node-RED 依存関係をインストールしたので、Watson ノードを利用して Watson AI サービスを統合できる状態になりました。Watson Assistant、Watson Speech to Text、Watson Text to Speech を利用する音声対応のサンプル・チャットボットを作成しましょう。

  1. Call for Code スターター・キットからフローをインポートします。

  2. フローをデプロイします。

    Node-RED フロー

IBM Cloud 上で Watson サービス・インスタンスを作成する

フローが正常に実行されるためには、その前に、新しいサービス・インスタンスと API 鍵を使用して Watson Assistant ノードと Watson Speech ノードを構成する必要があります。

Watson Assistant インスタンスを作成する

  1. Watson Assistant インスタンスをまだ作成していない場合は、作成します。

    IBM Cloud カタログ内の Watson Assistant

  2. この手順に従って、COVID-19 用の Watson Assistant チャットボットをプロビジョニングします。

Watson Speech to Text サービス・インスタンスを作成する

  1. IBM Cloud カタログから Watson Speech to Text サービス・インスタンスを作成します。

  2. Create (作成)」をクリックします。

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

Node-RED Watson Speech to Text ノードには、この新しいインスタンスの apikey 資格情報が必要です。

  1. Watson Speech to Text サービス・インスタンスが作成されたら、「Service credentials (サービス資格情報)」(図中の 1) をクリックします。
  2. View credentials (資格情報を表示)」ツイスティー (図中の 2) をクリックします。
  3. apikey (図中の 3) の値をコピーします。次のセクションで、この値を使用します。

    Watson STT 資格情報

Watson Text to Speech サービス・インスタンスを作成する

IBM Cloud カタログから Watson Text to Speech サービス・インスタンスを作成します。

  1. Create (作成)」をクリックします。

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

Node-RED Watson Text to Speech ノードには、この新しいインスタンスの apikey 資格情報が必要です。

  1. Watson Text to Speech サービス・インスタンスが作成されたら、「Service credentials (サービス資格情報)」(図中の 1) をクリックします。
  2. View credentials (資格情報を表示)」ツイスティー (図中の 2) をクリックします。
  3. apikey (図中の 3) の値をコピーします。次のセクションで、この値を使用します。

    Watson TTS 資格情報

API 鍵を使用して Watson Speech ノードを有効にする

  1. speech to text (音声テキスト変換)」ノードをダブルクリックし、Watson Speech to Text サービス・インスタンスからコピーした API 鍵を貼り付けます。
  2. Done (完了)」をクリックします。

    Watson STT ノードを構成する画面のスクリーンショット

  3. text to speech (テキスト音声変換)」ノードをダブルクリックし、Watson Text to Speech サービス・インスタンスからコピーした API 鍵を貼り付けます。

  4. Done (完了)」をクリックします。

    Watson TTS ノードを構成する画面のスクリーンショット

COVID-19 ワークスペース ID と API 鍵を使用して Watson Assistant ノードを有効にする

  1. assistant (アシスタント)」ノードをダブルクリックし、Watson Assistant サービス・インスタンスからコピーしたスキル ID (「Workspace ID (ワークスペース ID)」フィールド)、Assistant サービス・エンドポイント URL、API 鍵を貼り付けます。

  2. Done (完了)」をクリックします。

    Watson Assistant ノードを構成する画面のスクリーンショット

インテントを解析して API 呼び出しを実行する

Watson Assistant は、ユーザーの質問に関するインテントを返します。

  • Switch (切り替え)」ノードは現在の COVID 統計データの外部データ・ソースに対するクエリーを実行するために、2 つのインテントを「http request (HTTP リクエスト)」ノードにルーティングします。
  • Function (関数)」ノードは要約統計データを追加して、発話するセンテンスを作成します。

Node-RED フローをデプロイする

  • Node-RED フローをデプロイするには、UI にある赤色の「Deploy (デプロイ)」ボタンをクリックします。
  • Node-RED ダッシュボードを起動するには、右側のスライダーにある「dashboard (ダッシュボード)」タブをクリックします。右上隅にある矢印アイコンをクリックします。

COVID-19 危機コミュニケーション・チャットボットと対話する

チャットボットと対話するには、「microphone (マイク)」入力ボタンをクリックし、COVID に関する質問をします。

Node-RED ダッシュボード

ユーザーが質問をすると、バックグラウンドで以下の Node-RED フローが実行されます。

Node-RED COVID データ・ダッシュボード

Node-RED COVID 統計ダッシュボードを作成する

おまけ: このフローには、COVID-19 の統計データを表示する複数のゲージからなる Node-RED ダッシュボードが含まれています。

  • 1 時間ごとに Node-RED フローが TWC COVID-19 Disease Tracker API を呼び出して、COVID-19 感染に関する動的な統計データを収集します。
  • 国別データが集約されてから、ゲージが更新されます。

ダッシュボードのコードについて理解する

以下の Node-RED フローは、このチュートリアルに付属しています。

Node-RED COVID データ・ダッシュボード

TWC COVID-19 Country Report (TWC COVID-19 国別レポート)」ノードは TWCCOVID-19 Global Disease Country List API を使用して、すべての国での感染に関するその日の情報を取得します。

各「function (関数)」ノードが、確認された症例の合計数、死亡者の合計数、回復者の合計数、国に合計数を集計し、その結果を対応する「gauge (ゲージ)」ノードに送信します。

function (関数)」ノードには、以下のコードが含まれています。

let totalConfirmedCase = 0;

msg.payload.Countries.map(function(line){
    totalConfirmedCase += line.TotalConfirmed;
});

msg.payload = totalConfirmedCase;

return msg;

node-red-contrib-twc-covid19-tracker データを使用すれば、COVID-19 データの視覚化を組み込んでチャート、テーブル、地図を追加したり、高度なチャットボット・ユーザー・エクスペリエンスを創出したりして、上記のダッシュボードを拡張できます。

SMS 対応の Watson Assistant COVID チャットボットを作成する

このフローをインポートしてデプロイしてください。

このサンプルには、以下の依存関係を追加でインストールする必要があります。

このフローには、SMS メッセージング Webhook が構成された Twilio 番号が必要です。その Webhook は「HTTP In (HTTP 入力)」ノードで指定された URL に POST リクエストを送信するように構成されている必要があります。

Twilio メッセージング Webhook の構成

Twilio で着信 SMS をこの Node-RED エンドポイントに再送するには、Node-RED が (ローカル・マシン上ではなく) インターネット上でホストされていて到達可能でなければなりません。上記の手順に従って、Node-RED を IBM Cloud 上にデプロイしてください。

Twilio を有効にすると、Node-RED フローは以下のようになります。

Node-RED フロー

Twilio からは、TWC COVID-19 トラッカー API を使用した以下のようなチャット・メッセージが送信されます。

Call for Code 危機コミュニケーション・ソリューションを構築してください!

このチュートリアルで学んだ知識を生かし、次はサンプル・フローと Node-RED ダッシュボードに変更を加えて、Call for Code COVID 危機コミュニケーション・ソリューションを構築してください。