목차

챗봇과 API G/W 연동

네이버 클라우드 플랫포의 CLOVA Chatbot 과 API Gateway(API G/W) 상품의 연동은 챗봇을 외부 채널과 연결하는 제일 첫 단계입니다.

챗봇 도메인과 API G/W를 연동하고, 이 연동 정보를 외부 채널 (Custom API, LINE, 톡톡, 페이스북)과 webhook으로 연결하는 것을 기본으로 합니다. 챗봇 도메인과 API G/W가 연결되지 않았다면 외부 채널과 정상 동작을 하지 않기 때문에 이 단계를 꼭 설정하고 넘어가야 합니다. API G/W에 대한 개념을 모르더라도 간단하게 클릭 몇 번으로 연동이 가능하도록 기능이 제공되므로 아래 가이드를 읽고, 연동 URL과 Secret Key를 잘 보관하면 됩니다.

챗봇 서비스에서는 도메인별로 1개의 고유한 InvokeURL이 있습니다. 이 InvokeURL은 안전한 서비스를 위해 외부 서비스에 바로 공개되지 않습니다. 그리고 보안 및 서비스 처리 수준을 높이기 위해서 네이버 비즈니스 플랫폼의 API Gateway 상품에 연동을 하여 사용하도록 설계되어 있습니다.

챗봇과 API G/W는 다음과 같은 순서로 연동이 이루어집니다.

챗봇 도메인의 InvokeURL -> API Gateway의 Endpoint로 연결 -> 메신저 연동/고유 채널 연동

챗봇 도메인의 InvokeURL을 API Gateway로 연동을 진행하기 위해서는 먼저 콘솔에 접속하여 API Gateway 상품 이용을 신청해야 합니다. API Gateway 상품 이용에 대한 자세한 내용은 API Gateway 설명서를 참고하시기 바랍니다. 챗봇에서는 API Gateway 자동 설정해주는 기능이 있으므로, API Gateway 에 대한 사전 지식이 없더라고 진행이 가능합니다.

API Gateway 연동 설정

API Gateway 연동 방법은 자동 연동과 수동 연동이 있으며, 사용이 간편한 자동 연동을 이용하시는 것을 추천드립니다.

챗봇 설정 > 메신저 연동 메뉴에서는

LINE, TalkTalk, Facebook, LINEWORKS, Custom Clova Extension 등 다양한 메신저 채널과 연동을 설정할 수 있습니다.

chatbot-02-05-00.png

웹페이지 및 모바일 앱에 챗봇 연동을 위해서는 Custom 카드를 선택해야 합니다.

chatbot-02-05-01.png

1. 자동 연동 설정하기

APIGW '자동 연동' 버튼을 클릭합니다.

자동 연동을 위해서는 API Gateway 이용 신청이 되어 있어야 합니다. 확인 신청이 완료되면, 자동으로

API Gateway Invoke URL이 생성됩니다.

chatbot-02-05-13.png

웹페이지 및 모바일 App에서 자동으로 생성된 API Gateway의 InvokeURL로 호출을 하게 되며, 각 도메인마다 고유의 호출 URL이 생성됩니다. 예시) https://mmrm1gp7p7.apigw.ntruss.com/send/beta

API Gateway의 InvokeURL로 호출시 Secret Key를 생성합니다.

chatbot-02-05-14.png

Custom Chatbot으로 연동을 위 생성한 Stage의 Invoke URL과 Secret Key를 복사하여 보관합니다.

Custom API를 이용한 자세한 호출방법은 Chatbot API 참조서를 참고해주세요. API 참조서 바로가기

만약, 자동 연동 설정을 사용하지 않고 수동으로 연결을 원하는 경우 수동연동을 설정하면 됩니다.

chatbot-02-05-01.png

자동연동과 수동 연동은 각각 API Gateway와 도메인 간에 연동 흐름이 생성이 되므로 두 가지 연동 정보중에서 고객님의 Custom 챗봇 서비스에서 연동하고자 하는 API Gateway의 InvokeURL 및 Secret Key를 확인하 연동을 진행하면 됩니다.

2. 수동 연동 설정하기

수동 연동을 설정하는 경우 API Gateway의 상품 이용 신청 후 다음의 단계를 따라서 API를 생성합니다.

Step 1. API Gateway Product 생성

My Products에서 Product 생성을 클릭하여 Product를 생성합니다.

chatbot-02-051.png

chatbot-02-052.png

Step 2. API 생성

① 생성된 Project의 APIs를 클릭하여 API 생성 페이지로 이동합니다.

chatbot-02-053.png

API 생성을 클릭합니다.

chatbot-02-054.png

Swagger에서 가져오기를 선택하고 API 이름을 입력합나다.

chatbot-02-055.png

Swagger에서 가져오기에 chatbot_messenger_swagger.json 파일을 업로드합니다. 이 파일은 챗봇 빌더에서 다운로드할 수 있습니다.

chatbot-02-056.png

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"
    }
  }
}

chatbot-02-057.png

Step 3. Stages API 생성

Stages 탭을 클릭하여 Stage 생성을 클릭합니다.

chatbot-02-058.png

Stages 탭에서 Stage 이름을 입력합니다.

chatbot-02-059.png

Step 4. 챗봇 Invoke URL 복사

① 챗봇 설정 화면에서 메신저 연동 탭을 선택합니다.

Invoke URL 항목의 주소 복사를 클릭하여 Invoke URL을 복사합니다.

chatbot-02-056a.png

Step 5. 챗봇 Invoke URL 등록

복사한 챗봇의 Invoke URL을 API Gateway의 Stage Endpoint 도메인에 붙여넣고 생성을 클릭합니다.

chatbot-02-059a.png

chatbot-02-060.png

메신저를 연동하려면 생성한 Stage의 Invoke URL을 복사하여 보관합니다.

Step 6. API 배포

Resources 탭에서 API 배포를 클릭하여 생성된 API를 배포합니다.

chatbot-02-061.png

chatbot-02-062.png

chatbot-02-063.png

Stage 탭에서 Invoke URL을 복사해서 다양한 채널과 연동해 보세요.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...