CLOVA Chatbot とAPI Gateway の基本連携
  • PDF

CLOVA Chatbot とAPI Gateway の基本連携

  • PDF

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

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

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

API Gatewayの利用申込

ドメインのInvoke URLをAPI Gatewayと連携させるには、先にAPI Gatewayサービスの利用申込が完了している必要があります。API Gatewayの利用についての詳しい説明は、API Gatewayご利用ガイドを参照してください。
API Gatewayの利用申込方法は以下のとおりです。

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

自動連携設定

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

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

手動連携設定

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

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

APIの作成

API GatewayでAPIを作成する方法は以下のとおりです。

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

Stages APIの作成

Stages APIを作成する方法は以下のとおりです。

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

APIの配布

APIを配布する方法は以下のとおりです。

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

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

チャットボットのAPI Gateway Invoke URLをコピーする方法は以下のとおりです。

  1. NAVERクラウドプラットフォームのコンソールでServices > CLOVA Chatbot > Domainメニューを順にクリックします。
  2. 希望するドメインの [ビルダーを実行する] ボタンをクリックしてチャットボットビルダーを実行します。
  3. チャットボットビルダーで チャットボットビルダー > [メッセンジャー連携] タブをクリックします。
  4. 連携するメッセンジャーの [連携] ボタンをクリックします。
  5. API Gateway 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"
    }
  }
}

この記事は役に立ちましたか

What's Next