跳转到内容

gtc setup

gtc setup 命令用于配置你的 Greentic bundle 中的 providers。它会为每个启用的 provider 运行 setup flows,收集凭据并配置 webhooks。

Terminal window
gtc setup [OPTIONS] <BUNDLE_PATH>
选项说明
--answers <FILE>answers 文件路径(非交互模式)
--dry-run预览 setup 而不做任何更改
--emit-answers <FILE>生成 answers 模板
--advanced在 answers 模板中包含可选字段
--provider <NAME>仅设置指定 provider
--skip <NAME>跳过指定 provider
-v, --verbose启用详细输出

以交互方式运行 setup,CLI 会依次提示你配置每个 provider:

Terminal window
gtc setup ./my-bundle

CLI 会提示输入:

  • Provider 凭据(API keys、tokens)
  • 用于 webhooks 的公开 URL
  • 可选配置项

首先,生成一个包含所有必需字段的模板:

Terminal window
# Basic template (required fields only)
gtc setup --dry-run --emit-answers answers.json ./my-bundle
# Full template (including optional fields)
gtc setup --dry-run --emit-answers answers.json --advanced ./my-bundle
answers.json
{
"messaging-telegram": {
"enabled": true,
"public_base_url": "https://xxx.ngrok-free.app",
"bot_token": "123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
},
"messaging-slack": {
"enabled": true,
"public_base_url": "https://xxx.ngrok-free.app",
"api_base_url": "https://slack.com/api",
"bot_token": "xoxb-xxx-xxx-xxx",
"slack_app_id": "A07XXXXXX",
"slack_configuration_token": "xoxe.xoxp-xxx"
},
"messaging-teams": {
"enabled": false
}
}
Terminal window
gtc setup --answers answers.json ./my-bundle
{
"messaging-telegram": {
"enabled": true,
"public_base_url": "https://your-domain.com",
"bot_token": "123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
}
}

如何获取凭据:

  1. 在 Telegram 上向 @BotFather 发送消息
  2. 发送 /newbot 并按提示操作
  3. 复制 bot token
{
"messaging-slack": {
"enabled": true,
"public_base_url": "https://your-domain.com",
"bot_token": "xoxb-xxx-xxx-xxx",
"slack_app_id": "A07XXXXXX",
"slack_configuration_token": "xoxe.xoxp-xxx"
}
}

如何获取凭据:

  1. 前往 api.slack.com/apps
  2. 创建一个新应用或选择现有应用
  3. 在 OAuth & Permissions 中获取 Bot Token
  4. 在 Basic Information 中获取 App ID
  5. 在 App Manifest 中获取 Configuration Token
{
"messaging-teams": {
"enabled": true,
"public_base_url": "https://your-domain.com",
"app_id": "your-app-id",
"app_password": "your-app-password",
"tenant_id": "your-tenant-id"
}
}
{
"messaging-whatsapp": {
"enabled": true,
"public_base_url": "https://your-domain.com",
"phone_number_id": "123456789",
"access_token": "EAAxxxxx",
"verify_token": "your-verify-token"
}
}
Terminal window
# Start ngrok in separate terminal
ngrok http 8080
# Copy the HTTPS URL (e.g., https://abc123.ngrok-free.app)
# Use this as public_base_url in answers
Terminal window
# Cloudflared generates URL automatically with gtc start
gtc start ./my-bundle --cloudflared on

当你运行 gtc setup 时,它会:

  1. 加载 bundle 配置

    读取 greentic.demo.yaml 以查找 providers。

  2. 验证 answers

    检查所有必需字段是否存在。

  3. 运行 setup flows

    执行每个 provider 的 setup_flow(例如 webhook 注册)。

  4. 存储凭据

    将凭据保存到已配置的 secrets store。

  5. 运行验证

    执行 verify_flow 以确认设置成功。

Terminal window
gtc setup --provider messaging-telegram ./my-bundle
Terminal window
gtc setup --skip messaging-teams ./my-bundle
Terminal window
# Force re-setup (useful after URL changes)
gtc start ./my-bundle --force-setup
Error: Failed to register webhook: 401 Unauthorized

检查你的 bot token 是否正确且未过期。

Error: Missing required field 'bot_token' for messaging-telegram

确保 answers 文件中包含所有必填字段。

Error: Webhook verification failed: Connection refused

确保你的公开 URL 可从互联网访问。检查 ngrok/cloudflared 是否正在运行。

Error: Secret 'slack_bot_token' not found

运行 gtc setup 来配置 provider,或检查你的 answers 文件。

  1. 在 CI/CD 中使用 answers 文件 - 避免在自动化流水线中使用交互式提示
  2. 妥善保护凭据 - 不要将包含真实 token 的 answers 文件提交到 git
  3. 使用环境变量 - 在 answers 中通过 $ENV_VAR 引用 secrets
  4. 使用 dry-run 测试 - 在实际更改前先预览 setup
  5. URL 变更后重新生成 - 当公开 URL 变化时重新运行 setup