Skip to main content

简介

要在 Square Cloud 上开发和托管 Slack 机器人,遵循一套结构化的配置和前置条件流程至关重要。本技术指南将涵盖整个过程,从初始设置到生产环境部署。

前置条件

  • Square Cloud 账户:通过注册页面使用你的邮箱进行注册。
  • 有效套餐:为你的应用提供专属资源和优化的性能。查看我们可用的套餐,选择最适合你需求的方案。

创建项目

要创建 Slack 机器人,你需要一个账户以及在 Slack 上创建应用的权限。在按照后续步骤操作之前,请在 Slack 上创建或登录你的账户。

在 Slack 上创建机器人应用

  1. 前往 Slack API - Your Apps 并点击 “Create New App”。
  2. 选择 “From scratch”,为应用命名,并选择你将要安装它的 workspace。
  3. 在 “Socket Mode” 部分启用 Socket Mode,并生成一个带有 connections:write scope 的 app-level token。复制它(以 xapp- 开头):这就是你的 SLACK_APP_TOKEN。
  4. 在 “OAuth & Permissions” 部分添加机器人所需的 scope(例如 chat:write、app_mentions:read、commands),将应用安装到你的 workspace,并复制 Bot User OAuth Token(以 xoxb- 开头):这就是你的 SLACK_BOT_TOKEN。
  5. 在 “Event Subscriptions” 中启用事件并订阅 app_mention 机器人事件。在 “Slash Commands” 中创建 /hello 命令。启用 Socket Mode 后,这两处都不需要填写 Request URL。
安全提示: 切勿公开暴露 app-level token 或 Bot Token。请将它们视为敏感凭据:下面的示例会从环境变量中读取它们,而绝不是从代码中读取。
使用 Socket Mode 时,由机器人主动与 Slack 建立连接,因此它的运行方式与其他任何机器人相同:不需要公共 URL 或端口。如果你希望 Slack 通过 HTTP 发送事件,请参见本页末尾的 “使用 HTTP 模式代替 Socket Mode”。

开发项目

请根据你选择的语言使用下面对应的部分。两个示例都演示了一个响应提及或简单命令的机器人。
Node.js 环境搭建
  1. 确认已安装 Node.js。
  2. 初始化项目并安装依赖:
Terminal
  1. 创建一个 index.js 文件,内容如下:
index.js

配置 Square Cloud

在项目根目录、主文件旁边创建 squarecloud.app 文件。它告诉 Square Cloud 如何运行你的机器人:
  • MAIN 是 Square Cloud 运行的文件,MEMORY 是机器人的内存(单位 MB)。机器人至少需要 256 MB;512 MB 则留有增长空间。
  • AUTORESTART=true 会在机器人崩溃时重新启动它。请参阅自动重启的工作方式。
  • 没有 SUBDOMAIN:在 Socket Mode 下,机器人不需要公开 URL。
所有字段请参阅配置文件参考。

设置令牌

你的代码从 SLACK_BOT_TOKEN 和 SLACK_APP_TOKEN 环境变量读取这两个令牌,因此它们永远不会出现在你的文件中。可以通过以下任一方式设置:
  • 控制面板:在上传页面打开 Advanced configuration 并添加这两个变量。对于已部署的机器人,请在应用的 Environment Variables 页面添加它们,然后重启机器人。
  • CLI:上传机器人后(参见部署),立即使用 squarecloud app env set 设置它们并重启机器人:
机器人在启动时读取环境变量,因此每次修改后都要重启它。管理环境变量的其他方式请参阅环境变量。

部署

准备好项目文件后,你现在可以将它们上传到 Square Cloud 并托管你的项目。 为此,请创建一个包含所有项目文件的 ZIP 文件。

通过控制面板

1

访问上传页面

访问上传页面并上传你的项目 zip 文件。
2

配置你的环境

上传 zip 后,你需要为项目配置名称、主文件或运行时环境以及其他设置。
如果你上传的是 Web 项目,请务必选择 “Web Publication” 并为项目设置子域名。
3

部署你的项目

最后,点击 “Deploy” 按钮,即可将项目托管到 Square Cloud。
部署完成后,你可以在控制面板中监控项目的状态和日志。
正在上传应用到 Square Cloud
4

确认你的应用已上线

首次部署通常在一分钟内完成。在控制面板中,等待你的应用状态显示为运行中,并检查日志中是否有启动错误。
如果你部署的是网站或 API,请在浏览器中打开 https://<your-subdomain>.squareweb.app,你应该能看到应用正常响应。如果你部署的是机器人,发送一条命令确认它已上线。
应用无法启动?请参见故障排除指南,了解最常见的原因和解决方法。

通过 CLI

要使用此方法,你的项目根目录中需要有一个名为 squarecloud.app 的配置文件。它告诉 Square Cloud 如何运行你的应用。

配置文件指南

了解如何创建定义你应用环境的 squarecloud.app 配置文件。
1

安装 CLI

安装 Square Cloud CLI。如果你已经安装,运行同一条命令即可更新:
2

登录

运行下面的命令。它会打开你的浏览器:在浏览器中批准登录后,CLI 即可使用。无需复制任何 API 密钥。如需在脚本和 CI 中使用,请参阅 CLI 身份验证。
3

上传你的项目

在项目文件夹中运行下面的命令。CLI 会将当前文件夹打包为 zip(排除 squarecloud.ignore 中列出的内容)并上传:
要上传你自己创建的 zip,请通过 --file 传入:
4

确认你的应用已上线

首次部署通常在一分钟内完成。直接在终端中检查你的应用状态和日志:
如果你部署的是网站或 API,请在浏览器中打开 https://<your-subdomain>.squareweb.app,你应该能看到应用正常响应。如果你部署的是机器人,发送一条命令确认它已上线。
应用无法启动?请参见故障排除指南,了解最常见的原因和解决方法。

测试机器人

  1. 在 Slack 应用面板的 “OAuth & Permissions” 下,将应用安装到 workspace(如果你还没有安装)。
  2. 在 Square Cloud 控制面板中检查应用日志,确认没有启动错误。使用 Socket Mode 时无需配置 Request URL:机器人一启动就会连接到 Slack。
  3. 将机器人邀请到一个频道,然后提及它或运行 /hello 命令,以验证响应是否正常。
安装链接示例(请替换 client_id):

使用 HTTP 模式代替 Socket Mode

使用 Socket Mode 的应用无法在公开的 Slack Marketplace 中上架。如果你需要 Slack 改为通过 HTTP 发送事件,请将机器人作为 Web 应用运行:
  1. 在 Slack 应用设置中禁用 Socket Mode,并将 Signing Secret(位于 “Basic Information” 下)复制到 SLACK_SIGNING_SECRET 环境变量中,设置方式与令牌相同。
  2. 使用 signing secret 而不是 app-level token 创建应用,并监听 PORT 环境变量中的端口:
两个服务器都监听所有网络接口(0.0.0.0),这是 Square Cloud 的要求。
  1. 在配置文件中添加 SUBDOMAIN(或者从控制面板上传时选择 “Web Publication” 并设置子域名),让机器人获得一个公共 URL。Web 应用至少需要 MEMORY=512:
squarecloud.app
没有子域名就上传的应用之后无法再添加子域名。如果你的机器人已经在 Socket Mode 下运行,请将 HTTP 版本作为新应用上传。
  1. 在 “Event Subscriptions” 和 /hello 斜杠命令中,将 Request URL 设置为 https://<subdomain>.squareweb.app/slack/events。

更多资源

如需进一步阅读,请查阅 Slack 官方文档:

后续步骤

应用无法启动

修复缺少模块、内存错误和其他启动失败问题。

环境变量

管理机器人的令牌和其他密钥。

Discord 机器人

在 Slack 机器人旁边再托管一个 Discord 机器人。

联系我们

如果你仍然遇到技术问题,我们的专业支持团队可以为你提供帮助。联系我们,我们很乐意协助你解决任何问题,支持质量正是开发者给予 Square Cloud 4.9/5 评分(共 402 条评价)(Google 与 Trustpilot)的重要原因之一。