CLOVA Chatbot与API Gateway的基本关联
  • PDF

CLOVA Chatbot与API Gateway的基本关联

  • PDF

为了将Chatbot关联到外部渠道,首先需要关联至NAVER Cloud Platform的API Gateway。关联Chatbot域和API Gateway获取关联信息后,使用相应的关联信息连接外部渠道和Webhook的方法。根据域使用量,将收取API Gateway费用。(API Gateway免费提供1,000,000次的API调用次数。)即使不熟悉API Gateway,也只需点击几次即可轻松关联,因此请参考本指南并保管好关联URL和Secret Key。

Chatbot和API Gateway的关联顺序

  1. 将Chatbot域的Invoke URL连接到API Gateway的Endpoint
  2. 关联即时通讯工具/关联唯一渠道
参考
  • 每个域拥有1个唯一的Invoke URL。为了提供安全的服务,Invoke URL不直接公开给外部服务,与NAVER Cloud Platform的API Gateway关联使用。
  • 如果Chatbot和API Gateway未连接,则无法正常关联Chatbot和外部渠道。
  • 与API Gateway关联的方法有自动关联和手动关联的方法。建议采用使用方法较为简单的自动关联。

申请使用API Gateway

如需将域的Invoke URL关联到API Gateway,则须先完成API Gateway服务使用申请。关于API Gateway使用的详细说明,请参考API Gateway使用指南
申请使用API Gateway的方法如下。

  1. 在NAVER Cloud Platform控制台依次点击 Services > API Gateway 菜单。
  2. 点击 [申请使用产品] 按钮。

自动关联设置

完成API Gateway使用申请时,将自动创建API Gateway Invoke URL。
查看自动关联设置后复制Invoke URL的方法如下。

  1. 请参考申请使用API Gateway以完成API Gateway使用申请。
  2. 在NAVER Cloud Platform控制台依次点击 Services > CLOVA Chatbot > Domain 菜单。
  3. 点击所需域的 [运行Builder] 按钮以运行Chatbot Builder。
  4. 点击Chatbot Builder的Chatbot设置 > [即时通讯工具关联] 标签中拟关联即时通讯工具的 [关联] 按钮。
  5. 在关联窗口中查看API Gateway关联设置项目的API Gateway Invoke URL
    chatbot-chatbot-5-1_auto_zh.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. 复制Chatbot Invoke URL

创建API

在API Gateway创建API的方法如下。

  1. 在NAVER Cloud Platform控制台依次点击 Services > API Gateway > My Products 菜单。
  2. 点击 [创建Product] 按钮。
  3. 弹出产品创建窗口后,点击 [创建Product] 按钮。
  4. 在创建的项目中点击APIs。
    chatbot-chatbot-5-1_api01_zh
  5. 在API创建页面中点击 [创建API] 按钮。
  6. 在API创建界面中选择 从Swagger中获取 后输入API名称。
  7. 在“从Swagger中获取”的 [Swagger JSON] 标签中上传“chatbot_messenger_swagger.json”文件。
    chatbot-chatbot-5-1_api02_zh
    • 通过Chatbot Builder的即时通讯工具关联窗口中可下载该文件。即时通讯工具关联窗口中手动关联API Gateway后,点击API Gateway Configuration的 [下载] 按钮
      chatbot-chatbot-5-1_api03_zh
  8. 请点击 [创建API] 按钮。
  9. 请参考创建Stages API以创建Stages API。

创建Stages API

创建Stages API的方法如下。

  1. 点击 [Stages] 标签 > [创建Stage] 按钮。
    chatbot-chatbot-5-1_stagesapi01_zh
  2. 输入Stage名称后自定义选择Endpoint域。
  3. 在Chatbot中复制Invoke URL后粘贴到Endpoint域字段。
    chatbot-chatbot-5-1_stagesapi03_zh
    • 关于Invoke URL的复制方法,请参考自动关联设置
    • 如需关联即时通讯工具,应复制已创建Stage的Invoke URL单独保存
  4. 请点击 [创建] 按钮。
  5. 请参考部署API后部署API。

部署API

部署API的方法如下。

  1. 点击 [Resources] 标签后点击上方的 [部署API] 按钮。
    chatbot-chatbot-5-1_apirelease01_zh
  2. 显示部署API窗口时,指定拟部署的Stage后,输入Stage名称和描述。
  3. 点击 [添加] 按钮部署已创建的API。
    • [Stages] 标签中复制Invoke URL后可关联多个渠道

复制Chatbot Invoke URL

Chatbot的API Gateway Invoke URL的复制方法如下。

  1. 在NAVER Cloud Platform控制台依次点击 Services > CLOVA Chatbot > Domain 菜单。
  2. 点击所需域的 [运行Builder] 按钮以运行Chatbot Builder。
  3. 在Chatbot Builder中依次点击Chatbot Builder > [即时通讯工具关联] 标签。
  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