Dialogflow の LINE インテグレーションでは、Dialogflow エージェントを LINE bot として使用できます。
制限事項
この統合では、デフォルトのエージェント言語のみがサポートされます。
仕組み
統合の仕組みは次のとおりです。
- LINE チャネルを作成します。
- Dialogflow エージェントに作成したチャネルを関連付けて、相互に通信できるようにします。
- Dialogflow の統合では、LINE Messaging API を使用してエンドユーザーにメッセージを送信します。
- Dialogflow の統合では、LINE Webhook として機能することで、エンドユーザーからメッセージを受信します。
設定
統合を設定するには:
- Messaging API スタートガイドの手順に沿って、LINE チャネルを作成します。
- Dialogflow コンソールから LINE Webhook URL を取得します。
- Dialogflow ES コンソールに移動します。
- 左側のサイドバー メニューで [Integrations] をクリックします。
- [LINE] をクリックします。
- [Webhook URL] の値をコピーします。これは、LINE Webhook を構成するために必要になります。
- LINE Webhook を構成します。
- LINE 受信メッセージ(Webhook)の手順に沿って、チャネルに LINE Webhook を構成します。
- 上記でコピーした Webhook URL を使用して LINE Webhook 構成を指定します。
- [チャンネル ID]、[チャンネル シークレット]、[チャンネル アクセス トークン] の値をコピーします。これらの値は、Dialogflow の統合を構成するために必要になります。
- Dialogflow の統合を構成します。
- Dialogflow ES コンソールに移動します。
- 左側のサイドバー メニューで [Integrations] をクリックします。
- [LINE] をクリックします。
- [Channel ID]、[Channel secret]、[Channel access token] を、それぞれのフィールドに貼り付けます。
- 該当する環境を選択します。
- [START] ボタンをクリックします。
Webhook 署名の検証
Dialogflow ES は、LINE のチャネル シークレットを使用して、受信したすべての Webhook リクエストの X-Line-Signature HTTP リクエスト ヘッダーを検証します。
リクエストの真正性を検証するために、Dialogflow ES は、チャネル シークレットを使用して未加工の HTTP POST リクエスト本文の base64 エンコード HMAC-SHA256 ダイジェストを計算し、X-Line-Signature ヘッダーと比較します。LINE が Webhook ペイロードに署名する方法については、LINE 署名検証のドキュメントをご覧ください。
Webhook リクエストに X-Line-Signature ヘッダーがない、重複している、または無効な場合、Dialogflow ES は HTTP 400 Bad Request ステータス コードでリクエストを拒否します。
Webhook 署名の検証を継続するには、次の操作を行います。
- Dialogflow ES コンソールで構成されたチャネル シークレットが、LINE Messaging API チャネル設定のアクティブなチャネル シークレットと一致していることを確認します。LINE チャネルのチャネル シークレットをローテーションまたは再発行する場合は、Dialogflow ES コンソールで更新し、統合を再開します。
- Webhook トラフィックをプロキシ、API ゲートウェイ、またはミドルウェア サービス経由でルーティングしてから Dialogflow ES に転送する場合は、
X-Line-Signatureヘッダーを変更せずに転送し、再シリアル化や空白の変更を行わずに、未加工のリクエスト本文バイトをそのまま送信します。 - 署名なしのリクエストを Dialogflow ES LINE Webhook URL に直接送信しないでください。
テスト
エージェントをテストするには、LINE アプリのメイン画面で横に並んだ 3 つのドットをタップします。次に、QR コードのアイコンをタップし、ボットの設定ページで QR コードをスキャンします。これにより、ボットが会話のリストに追加されます。
リッチ レスポンス メッセージ
次のリッチ レスポンス メッセージがサポートされています。
画像のレスポンス
Dialogflow イメージ レスポンス タイプは、LINE イメージ メッセージ タイプとして LINE に送信されます。
サポートされている形式とサイズは次のとおりです。
- jpeg
- 最大サイズ 1 MB
- 最大画素数 240 × 240
カード形式のレスポンス
Dialogflow カード レスポンス タイプは、LINE テンプレート メッセージ タイプとして LINE に送信されます。
クイック返信のレスポンス
Dialogflow のクイック返信レスポンス タイプは、LINE テンプレート メッセージ タイプとして LINE に送信されます。
カスタム ペイロードのレスポンス
ほとんどの LINE メッセージ タイプは、カスタム ペイロード レスポンスで送信できます。
たとえば、次のカスタム ペイロードは LINE テンプレート メッセージを提供します。
{ "type": "template", "altText": "this is a buttons template", "template": { "type": "buttons", "thumbnailImageUrl": "https://example.com/bot/images/image.jpg", "title": "Menu", "text": "Please select", "actions": [ { "type": "postback", "label": "Buy", "data": "action=buy&itemid=123" }, { "type": "postback", "label": "Add to cart", "data": "action=add&itemid=123" }, { "type": "uri", "label": "View detail", "uri": "http://example.com/page/123" } ] } }