CLOVA Chatbot と API Gateway の基本連携

Prev Next

Classic/VPC環境で利用できます。

チャットボットを外部チャンネルと連携させるには、まず NAVERクラウドプラットフォームの API Gatewayと連携させる必要があります。チャットボットドメインと API Gatewayを連携して連携情報を取得し、その連携情報を用いて外部チャンネルと Webhookで連携する方式です。ドメイン別使用量に応じて API Gateway料金が課金されます(API Gatewayは1,000,000件の API呼び出しが無料で提供されます)。API Gatewayに詳しくなくても、数回のクリックだけで簡単に連携を行えます。本ガイドを参照して連携 URLと Secret Keyを大切に保管してください。

チャットボットと API Gatewayの連携手順

  1. チャットボットドメインの InvokeURLを API Gatewayの Endpointに連携
  2. メッセンジャーと連携/固有チャネルと連携
参考
  • 各ドメインには1つの固有の InvokeURLがあります。InvokeURLは、安全なサービスのために外部サービスに直接公開されていません。NAVERクラウドプラットフォームの API Gatewayと連携して使用するように設計されています。
  • チャットボットと API Gatewayが連携されていないと、チャットボットと外部チャンネルが正常に連携されません。
  • API Gatewayとの連携方法には、自動連携と手動連携があります。使用方法が簡単な自動連携を利用することをお勧めします。

API Gatewayご利用の申し込み

ドメインの InvokeURLを API Gatewayと連携させるには、まず API Gatewayサービスご利用の申し込みが完了している必要があります。API Gatewayのご利用方法に関する詳細は、API Gateway ご利用ガイドをご参照ください。
API Gatewayご利用の申し込みを行う方法は、次の通りです。

  1. NAVERクラウドプラットフォームのコンソールで、i_menu > Services > Application Services > API Gatewayメニューを順にクリックします。
  2. [サービスご利用の申し込み] ボタンをクリックします。

自動連携設定

API Gatewayご利用の申し込みが完了すると、自動的に API Gateway Invoke URLが作成されます。
自動連携設定を確認して Invoke URLをコピーする方法は、次の通りです。

  1. API Gatewayご利用の申し込みを参照して、API Gatewayご利用の申し込みを完了してください。
  2. NAVERクラウドプラットフォームコンソールで、i_menu > Services > AI Services > CLOVA Chatbot > Domainメニューを順にクリックします。
  3. 希望するドメインの [ビルダを実行する] ボタンをクリックしてチャットボットビルダを実行します。
  4. チャットボットビルダのチャットボット設定 > メッセンジャー連携タブで連携するメッセンジャーの [連携] ボタンをクリックします。
  5. 連携画面で APIGW連携設定項目の APIGW Invoke URLを確認します。
    chatbot-chatbot-5-1_auto_ko
    • APIGW InvokeURLを変更するには、 [変更] ボタンをクリック
    • ウェブページやモバイルアプリで自動作成された API Gatewayの InvokeURLで呼び出すことになり、ドメインごとに固有の呼び出し URLを作成
      例) https://mmrm1gp7p7.apigw.ntruss.com/send
    • API Gatewayの InvokeURLで呼び出す際に Secret Keyを作成
  6. APIGW Invoke URLと Secret Keyをコピーして別途保管します。

手動連携設定

手動連携を設定する場合、API Gatewayご利用の申し込みが完了したら、以下の手順に従って APIを作成します。

  1. API作成
  2. Stages API作成
  3. APIリリース
  4. チャットボット Invoke URLのコピー

API作成

API Gatewayで APIを作成する方法は、次の通りです。

  1. NAVERクラウドプラットフォームのコンソールで、i_menu > Services > Application Services > API Gateway > My Productsメニューを順にクリックします。
  2. [Product作成] ボタンをクリックします。
  3. Product作成画面で情報を入力し、 [Product作成] ボタンをクリックします。
  4. 作成された Projectの APIsをクリックします。
    chatbot-chatbot-5-1_api01_ko
  5. API作成ページで [API作成] ボタンをクリックします。
  6. API作成画面で Swaggerからインポートを選択し、API名を入力します。
  7. Swaggerからインポートの [Swagger JSON] タブに「chatbot_messenger_swagger.json」ファイルをアップロードします。
    chatbot-chatbot-5-1_api02_ko
    • このファイルはチャットボットビルダのメッセンジャー連携画面でダウンロードできる。メッセンジャー連携画面で APIGW手動連携を開き、APIGW Configurationの [ダウンロード] ボタンをクリック
      chatbot-chatbot-5-1_api03_ko
  8. [API作成] ボタンをクリックします。
  9. Stages API作成を参照して Stages APIを作成します。

Stages API作成

Stages APIを作成する方法は次の通りです。

  1. [Stages] タブ > [Stage作成] ボタンをクリックします。
    chatbot-chatbot-5-1_stagesapi01_ko
  2. Stage名を入力し、Endpointドメインでカスタムを選択します。
  3. チャットボットで Invoke URLをコピーし、Endpointドメインフィールドに貼り付けます。
    chatbot-chatbot-5-1_stagesapi03_ko
    • Invoke URLをコピーする方法は、自動連携設定を参照
    • メッセンジャーと連携させるには、作成した Stageの Invoke URLをコピーして別途保存
  4. [作成] ボタンをクリックします。
  5. APIリリースを参照して、APIをリリースします。

APIリリース

APIをリリースする方法は、次の通りです。

  1. [Resources] タブをクリックして上部の [APIリリース] ボタンをクリックします。
    chatbot-chatbot-5-1_apirelease01_ko
  2. APIリリース画面が表示されたら、リリースするステージを指定してステージ名と説明を入力します。
  3. 作成された APIをリリースするために [追加] ボタンをクリックします。
    • [Stage] タブで Invoke URLをコピーして様々なチャンネルと連携可能

チャットボット Invoke URLのコピー

チャットボットの APIGW Invoke URLをコピーする方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > AI Services > CLOVA Chatbot > Domainメニューを順にクリックします。
  2. 希望するドメインの [ビルダを実行する] ボタンをクリックしてチャットボットビルダを実行します。
  3. チャットボットビルダでチャットボットビルダ > [メッセンジャー連携] タブをクリックします。
  4. 連携するメッセンジャーの [連携] ボタンをクリックします。
  5. APIGW Invoke URLの [アドレスコピー] ボタンをクリックします。

chatbot_messenger_swagger.jsonファイル

chatbot_messenger_swagger.jsonファイルの内容は、次の通りです。

{
  "swagger": "2.0",
  "info": {
    "description": ""
  },
  "host": "",
  "basePath": "/",
  "schemes": [ "https" ],
  "security": [ {
    "x-ncp-apigw-api-key": [ ]
  } ],
  "paths": {
    "/": {
      "get": {
        "tags": [ "messenger" ],
        "description": "",
        "consumes": [ "application/json" ],
        "produces": [ "application/json" ],
        "parameters": [ ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "x-ncp-apigw-use-body-when-formdata": false,
        "x-ncp-apigateway-filters": {
          "valid": {
            "type": "NONE"
          },
          "apiKey": {
            "required": false
          },
          "auth": {
            "platform": "NONE"
          }
        },
        "x-ncp-apigateway-endpoint": {
          "HTTP": {
            "method": "GET",
            "url": "/facebook/verify",
            "stream": false
          }
        }
      },
      "post": {
        "tags": [ "messenger" ],
        "description": "",
        "consumes": [ "application/json" ],
        "produces": [ "application/json" ],
        "parameters": [ {
          "in": "body",
          "name": "msg",
          "description": "",
          "required": true,
          "schema": {
            "$ref": "#/definitions/Empty"
          }
        } ],
        "responses": {
          "200": {
            "description": ""
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          },
          "500": {
            "description": ""
          }
        },
        "x-ncp-apigw-use-body-when-formdata": false,
        "x-ncp-apigateway-filters": {
          "valid": {
            "type": "NONE"
          },
          "apiKey": {
            "required": false
          },
          "auth": {
            "platform": "NONE"
          }
        },
        "x-ncp-apigateway-endpoint": {
          "HTTP": {
            "method": "POST",
            "url": "/message",
            "stream": false
          }
        }
      }
    },
    "/keyboard": {
      "get": {
        "tags": [ "messenger" ],
        "description": "",
        "produces": [ "application/json" ],
        "parameters": [ ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "x-ncp-apigw-use-body-when-formdata": false,
        "x-ncp-apigateway-filters": {
          "valid": {
            "type": "NONE"
          },
          "apiKey": {
            "required": false
          },
          "auth": {
            "platform": "NONE"
          }
        },
        "x-ncp-apigateway-endpoint": {
          "HTTP": {
            "method": "GET",
            "url": "/keyboard",
            "stream": false
          }
        }
      },
      "post": {
        "tags": [ "messenger" ],
        "description": "",
        "produces": [ "application/json" ],
        "parameters": [ ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "x-ncp-apigw-use-body-when-formdata": false,
        "x-ncp-apigateway-filters": {
          "valid": {
            "type": "NONE"
          },
          "apiKey": {
            "required": false
          },
          "auth": {
            "platform": "NONE"
          }
        },
        "x-ncp-apigateway-endpoint": {
          "HTTP": {
            "method": "POST",
            "url": "/keyboard",
            "stream": false
          }
        }
      }
    },
    "/message": {
      "post": {
        "tags": [ "messenger" ],
        "description": "",
        "consumes": [ "application/json" ],
        "produces": [ "application/json" ],
        "parameters": [ {
          "in": "body",
          "name": "msg",
          "description": "",
          "required": true,
          "schema": {
            "$ref": "#/definitions/Empty"
          }
        } ],
        "responses": {
          "200": {
            "description": ""
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          },
          "500": {
            "description": ""
          }
        },
        "x-ncp-apigw-use-body-when-formdata": false,
        "x-ncp-apigateway-filters": {
          "valid": {
            "type": "NONE"
          },
          "apiKey": {
            "required": false
          },
          "auth": {
            "platform": "NONE"
          }
        },
        "x-ncp-apigateway-endpoint": {
          "HTTP": {
            "method": "POST",
            "url": "/message",
            "stream": false
          }
        }
      }
    }
  },
  "securityDefinitions": {
    "x-ncp-apigw-api-key": {
      "type": "apiKey",
      "name": "x-ncp-apigw-api-key",
      "in": "header"
    }
  },
  "definitions": {
    "Empty": {
      "type": "object",
      "x-ncp-model-descption": "Default empty model"
    }
  }
}