Clova-CEK-SDK-Swift

关于此仓库

这是一个帮助开发者使用 Clova Extension Kit (CEK) 开发扩展的库。CEK 文档可以在这里找到。

这个库还包含一个示例项目,它可以返回用户向 Clova 询问的世界某个城市的当地时间。

架构

这个库和示例项目可以使用 Swift Package Manager (SPM) 构建。 它依赖于 Kitura。

运行时需要设置以下环境变量

对于示例项目

名称 说明 是否必须
PORT 整数 监听的端口号 是(Heroku 会自动设置)
APPLICATION_ID 字符串 您在 Clova 平台上设置的应用程序 ID 此项或 PATH_FOR_DEBUG 必须设置一项
PATH_FOR_DEBUG 任意 如果设置,服务器将在 <PATH_FOR_DEBUG> 中响应,无需验证 此项或 APPLICATION_ID 必须设置一项
LOG_TYPES 字符串 要输出的日志类型。 使用 , 组合以下字符串:ENTRY, EXIT, DEBUG, VERBOSE, INFO, WARNING, ERROR
GOOGLE_API_KEY 字符串 Google Geocoding API 的用户密钥

开发准备

要使用 XCode 进行开发,请执行以下操作

$ swift package generate-xcodeproj
$ open *.xcodeproj

请注意,某些安全框架方法需要 macOS 版本 >= 10.12

它有一个 Dockerfile,可以被 Docker 使用。 如果你想使用 Docker 进行构建、执行或部署,请安装 Docker。 https://docs.dockerd.com.cn/docker-for-mac/

在 Clova 平台上为示例应用做准备

这个示例应用处理一个名为 CityTimeIntent 的意图,以及一个名为 city_name 的槽位。 登录平台,并在您的技能中注册它们,并提供足够的语料库。

构建示例应用

SPM

$ swift build

Docker

$ docker-compose build web

运行示例应用

SPM(按 Control+C 退出)

$ swift run

Docker(按 Control+C 退出)

$ docker-compose up web

使用 Docker 部署到 Heroku

扩展的 Webhook 服务器需要 SSL 连接,我们将 Heroku 作为解决方案之一介绍。

准备

确保 Docker 正在运行

$ docker ps

安装 Heroku-CLI。 可以使用 Brew

$ brew install heroku/brew/heroku

创建您的 Heroku 帐户。 https://www.heroku.com

登录 Heroku 并创建您的应用程序。 在此之后的 heroku 命令中,您可以通过添加 --apps 来指定现有的应用程序名称。

heroku login
heroku create

环境变量

设置必要的环境变量,除了 $PORT,它由 Heroku 自动设置。

$ heroku config:add LOG_TYPES="WARNING,ERROR"

设置 PATH_FOR_DEBUG 以在没有验证的情况下回答任何请求

$ heroku config:add PATH_FOR_DEBUG="/debug"

部署

$ heroku container:login
$ heroku container:push web
$ heroku container:release web

参考

如何在 Heroku 中使用 Docker 运行 Vapor https://gist.github.com/alexaubry/bea6f9b626e71b48ae6065664748bc97

容器注册表和运行时(Docker 部署) https://devcenter.heroku.com/articles/container-registry-and-runtime