主要特性 • 示例 • 入门 • 附加信息
在线尝试 CSML
CSML(会话标准元语言)既是一种特定领域的编程语言,也是聊天机器人引擎,旨在使开发复杂的聊天机器人变得容易。
CSML 流具有非常富有表现力的纯文本语法,易于理解,从而可以轻松部署和维护会话代理。凭借其强大的运行时 API,CSML 可以处理短期和长期内存插槽、元数据注入以及连接到任何第三方 API 或以任何编程语言注入任意代码。
start:
say " Hi, nice to meet you, I'm a demo bot "
if (name) {
say " I already know you "
goto known
}
else
goto name
name:
say Question (
" I'd like to know you better, what's your name? " ,
buttons=[
Button ( " I'm anonymous ? " , accepts=[ " No " , " Nope " ]) as anonBtn
],
)
hold
if (event.match(anonBtn)) {
remember name = " anon "
} else {
remember name = event
}
goto known
known:
if (name == " anon " )
say "...but I know you don't want to say too much about yourself!"
else
say "You are {{name}}! "
goto end
完整文档可在 https://docs.csml.dev/language 上找到。
开始使用 CSML 的最简单方法是使用 CSML Studio,这是一个免费的在线开发环境,所有内容均已设置好,可以直接在浏览器中立即开始创建机器人。
开始使用 CSML Studio:https://studio.csml.dev
CSML Studio 为您提供了一个免费的平台来试验该语言,以及一键大规模部署聊天机器人的选项。
CSML 可作为自托管 Web 服务器,您可以使用以下选项之一轻松安装。
请注意,您将需要一个数据库。默认选择是MongoDB ,但也可以通过选择环境变量集略有不同的mongodb
、 dynamodb
、 postgresql
或sqlite
引擎数据库类型来使用Amazon DynamoDB 、 PostgreSQL和SQLite 。
在开始之前,请确保您已使用以下选项设置环境:
ENGINE_DB_TYPE=mongodb # must be one of mongodb|dynamodb|postgresql|sqlite
# for mongodb
MONGODB_URI=mongodb://username:password@localhost:27017
MONGODB_DATABASE=csml
# for postgresql
POSTGRESQL_URL=postgres://user:password@hostname:port/database
# for sqlite
SQLITE_URL=csml.db
# for dynamodb (requires S3 for storage of large items)
AWS_ACCESS_KEY_ID= # or use a local IAM role
AWS_SECRET_ACCESS_KEY= # or use a local IAM role
AWS_REGION=
AWS_DYNAMODB_ENDPOINT= # optional, defaults to the dynamodb endpoint for the given region.
AWS_DYNAMODB_TABLE=
AWS_S3_ENDPOINT= # optional, defaults to the S3 endpoint for the given region
AWS_S3_BUCKET=
# CSML Server configuration
ENGINE_SERVER_PORT=5000
ENGINE_SERVER_API_KEYS=someAuthKey4CsmlServer,someOtherAuthKey
# Other optional engine configuration
ENGINE_ENCRYPTION_SECRET=some-secret-string # if not set, data will not be stored encrypted
TTL_DURATION=30 # auto-remove chatbot user data after X days
LOW_DATA_MODE=true # do not store contents of sent/received messages
DISABLE_SSL_VERIFY=false # reach trusted endpoints with known invalid certificates
DEBUG=true # print debug output in console
CSML_LOG_LEVEL=error # print log output in stderr. Possible values are error, warn, info, debug, trace.
MODULES_URL= # default module repository base url
MODULES_AUTH= # default module auth token
在您自己的计算机上启动 CSML 引擎的最简单方法是使用我们预先构建的优化二进制文件之一(适用于 MongoDB 和 Amazon DynamoDB)。自 v1.3.0 以来,这些二进制文件在每个 CSML 版本上都可以作为可执行文件使用。
按照此博客文章中的安装指南(适用于 ubuntu,但该过程在其他操作系统上类似)进行操作:https://blog.csml.dev/how-to-install-a-self-hosted-csml-engine -在-ubuntu-18-04/
要下载最新的 CSML Server 二进制文件,请转到最新版本并确保下载适合您的架构的版本。
Mac 用户:首次执行此二进制文件时,Mac 可能会打开一条有关应用程序未签名的警告(来自 Apple 的更多信息)。由于这并不打算作为广泛分发的应用程序,因此我们决定暂时不进行公证过程,但您可以安全地忽略该警告!但是,如果您愿意,您始终可以从源代码构建此包。
我们提供了一个 docker 镜像,方便自托管使用。
docker pull clevy/csml-engine
要开始在 Docker 上使用 CSML 引擎:https://github.com/CSML-by-Clevy/csml-engine-docker
CSML 是用 Rust 构建的。不过,您不需要了解任何 Rust 即可运行它!确保您运行的是 Rust v1.46+ 并且您的计算机上安装了 openssl(或 Linux 发行版的等效版本,例如 libssl),然后运行:
cd csml_server
# for use with MongoDB
cargo build --release --features csml_engine/mongo
# for use with Amazon DynamoDB
cargo build --release --features csml_engine/dynamo
之后,执行您的构建(默认在 ./targets/release/csml_server 下)并访问 http://localhost:5000 以获取一些请求示例。
该存储库提供了此 rust 库的 Node.js 绑定。要在 Node.js 项目中使用此库,您需要从源代码构建它。有几个要求:
要将 CSML Engine 编译为本机节点模块,请运行:
git clone https://github.com/CSML-by-Clevy/csml-engine csml
cd csml/bindings/node/native
npm run build -- --release
注意:您可以使用 package.json 中的专用脚本之一(即
npm run build:mongodb
)专门针对 MongoDB、DynamoDB、SQLite 或 PostgreSQL 进行构建。
此方法将输出此本机文件: csml/bindings/node/native/index.node
,您可以在项目中简单地require()
(或import
)。有关如何在自己的项目中使用此模块的更多详细信息,您可以查看我们的 Docker 版本实现。
请注意,如果您计划在不同的架构上部署项目,则需要在该架构上重新编译项目。如果您需要将 CSML Engine 集成到您自己的 Node.js 项目中,我们建议您使用 git 子模块。
CSML Server 的 HTTP REST API 文档以 OpenAPIv3 格式提供:swagger.yaml。要轻松阅读此文件,您可以在 Swagger Editor 中打开它。