今回は前回からの続きです。
(実施のステップ)
- Github に用意した Node-RED 環境構築用の雛形を Gitpod にデプロイ
- Node-RED フローを使って LINE Platform と Watson Assistant とを接続
前回は、『1. Github に用意した Node-RED 環境構築用の雛形を Gitpod にデプロイ』 を行いました。
今回は、『2. Node-RED フローを使って、LINE Platform と Watson Assistant との接続』 を行います。
2. Node-RED フローを使って LINE Platform と Watson Assistant とを接続
実装イメージと手順について
ここからは、複数のサービスを行ったり来たりしますので、何をやっているのか、迷子になる可能性があります。
LINE、LINE プラットフォームとサービスの接続イメージ図がわかりやすく公式サイトに記載されています。
迷子にならないように、この番号に結びつけながらご説明していきます。
(例えば、『Messageing API イメージ図の x 番』 もしくは、『Messageing API イメージ図の LINE プラットフォーム』 と言うように、参照します)
LINE Developer アカウントの作成
『Messageing API イメージ図の LINE プラットフォーム』 にアクセスするために、LINE Developer アカウントを作成します。
LINE をエンドユーザーとして使用するだけなら必要ありませんが、LINE Messagin API を使用するために必要な認証キーの入手やサービス (ボットサーバ)への接続設定を行うために必要です。
手順はちょっと長いのですが、公式サイトのMessaging APIを始めように詳しい解説があります。
また、色々な人が Qiita で記事を書かれていますので、自分に合った方法を探してみてください。
ポイントは、
- Channel Secret
- Channel Access Token
- Webhook の有効化と Webhook 先の変更箇所
になりますので、作業しながらメモを取っておいてください。
LINE ノードを配置
『Messageing API イメージ図の Webhook ( ② 番と ③ 番)』 の部分を実装していきます。
実装と言っても、Node-RED 用に公開されている LINE ノードを使用させていただきますので、とっても簡単です。
Webhook ノードとReply ノードを方眼紙 (?) の上にドラッグ & ドロップ して、その 2 つを線で結びます。
Webhook ノードをダブルクリックし、Path に /line_webhook
と入力します。
Reply ノードをダブルクリックし、Channel Securet と Channel Access Token をそれぞれ入力します。
忘れずに右上のデプロイをクリックします。
エンドポイントを取得する
『Messageing API イメージ図の LINE プラットフォーム』 から webhook でアクセスするためのエンドポイントを取得します。
ブラウザーのタブで Gitpod に切り替えます。Node-RED タブの左側にある Get Started - node_red-linebot と表示されているタブです。
ブラウザーの右下位にある Ports: 1800 をクリックします。
こんな表示が現れたと思います。
細かいですが、このような意味となります。
①エンドポイントのコピーをクリックしして、エンドポイントを取得します。
こんな感じです。
https://1880-watsonbx04-noderedlineb-mkr0msq2333.ws-us79.gitpod.io
②エンドポイントのpublic化をクリックして、エンドポイントが外部からアクセスできるようにします。
State が open(public)に変わります。
無償の Gitpod 環境はアクセスがない時間を検知すると、サスペンド状態になります。サスペンドから復帰させると、ステータスは、open(private) に戻りますので上記手順で open(public) に変更するようにしてください。
Webhookに値をセットする
『Messageing API イメージ図の LINE プラットフォームにて、Webhook settings に、エンドポイントをセットします。エンドポイントの後ろに、/line_webhook
をつけることを忘れないでください。
設定作業は、LINE Developers から行います。
Verify をクリックします。Success が表示されれば成功です。
テストしてみる (いわゆる オウム返しボット)
自分の LINE アプリを使って、お友達登録します。
QR code を読み取ります。
いつもの手順でお友達登録を済ませてください。(スクリーショットを撮り忘れました。やり直しができないため、手順を省略します。すみません)
チャット画面が現れたら、何でも良いので、テキストを入力してください。
おうむ返しボットができました。
New Watson Assistant だと何が違うのか
おうむ返しボットができたので、次は New Watson Assistant と繋ぎます。
その前にちょっとだけ、従来の Watson Assistant との違いをお話しいたします。
API バージョンの違い
Watson Assistant の API には、従来との互換性を維持している V1 と 新しい機能が使える V2 があります。
この 2 つの内、New Watson Assistant を使用する場合は、V2 を使用することになります。
提供される環境の違い
New Watson Assistant では標準で検証環境と本番環境の2つを提供してくれます。
以前から Watson Assistant をお使いのユーザー様の中には、この2つの環境を分けるために、インスタンスを 2 つ作成されているケースがありましたが、ケースによっては、1 つのインスタンスで運用することも可能です。
この2つの環境の詳細は、こちらの記事で紹介しています。
インスタンスを分ける理由は環境の観点だけではなく、セキュリティや可用性の観点もございますので、インスタンスの数については、各々の要件に応じてご検討ください。
New Watson Assistant と接続するアプリケーションを独自に開発する場合、上記 2 点について考慮する必要があります。
そして、LINE と接続する場合は、独自に開発する場合に相当します。
標準で提供される Web Chat は上記 2 点をあまり意識せずとも使用できるように考慮されています。
Watson Assistant ノードを配置
Node-RED 上で Watson Assistant を構成します。
方法は簡単です。LINE の時と同じで、Watson Assistant ノードを使用します。
『Messageing API イメージ図の サービス (ボットサーバー)』 の部分を実装していきます。
assistant V2 ノードを方眼紙の上にドラッグします。
assistant V2 ノードをダブルクリックし、パラメータをセットします。
①入力 と ②入力 は、**Watson Assistant インスタンスの画面から取得してください。
③入力 は Environments 環境の Draft もしくは Live から入手します。
(図は Drift から入手する例です)
LINE と New Waton Assistant をつなぐ
change ノード を方眼紙の上にドラッグし、図のように、配線してください。
change ノード のプロパティは、このようにします。
プロパティ属性: msg.
入力値: payload.output.generic[0].text
テストしてみる
LINE アプリからテストしてみてください。ちゃんとピザの注文ができました
完成したフローは、Github にアップしてありますので、ご参考まで。(『実装例』タブにあります)
いかがでしたでしょうか
手順は長かったのですが、思ったより簡単(?)に LINE ボットが作れたのではないでしょうか。
それも、ほぼ No Codeで。
(Node-RED 用の LINE ノードを作成してくれた n0bisuke 様 、 1ft-seabass 様、本当に感謝です)
Gitpod 環境は便利なのですが、無償の場合、すぐにサスペンドしてしまうのが難点ですね。。。
再アクティベートの際は、各ノードへの認証情報再セットと エンドポイントの open(public)化をお忘れなく!
続きの記事 / 前回の記事
参考情報
LINE 公式サイト
LINE Bot 関連