准备工作

  • 一个Cloudflare账号(最好已绑定可用域名,免费的eu.org也可)
  • 一个能登录Github的账号(用于一键部署到Cloudflare)且关联了上面所说的Cloudflare账号
  • 一个企业微信,且你是该企业的管理员(无需认证)
  • 一个支持/v1/chat/completionsOpenAI兼容接口(官方或第三方,new-api也可)
  • 一个Deno账号(用于承载加解密服务,非必需)

流程总览

  1. Deno Deploy部署加解密脚本,拿到 CRYPTO_SERVICE_URL
  2. Cloudflare Workers通过仓库一键部署,并配置环境变量与KV
  3. 在企业微信APP获取CORP_ID,企业微信客服后台生成TokenEncodingAESKey,回填到Workers并部署绑定自定义域名。
  4. 在企业微信客服后台完成回调URL验证,获取Secret,回填到Workers
  5. 完成终端对话验证

开始部署

Deno 端部署

  1. 打开项目解密脚本页面,复制ts脚本的内容。
  2. 打开deno控制台
  3. 点击new playground,把ts脚本的内容替换粘贴进去部署即可deno端
  4. 记录下右上角的denoURL,后文用作示例:https://example.deno.dev

Cloudflare端部署

  1. 打开项目Github页面,登录我上面提到的Cloudflare账号,点击Deploy to CloudflareGithub页面
  2. 在部署参数页完成变量与KV绑定(可参考如图,也可见后续参数详解)
    1. 部署完成后记录两个域名:
      • Workers 自带的 xxx.workers.dev(不建议国内使用)
      • 你自己的自定义域名(强烈建议绑定为主入口,例如 a.example.com
  3. Cloudflare 环境变量与 KV / 参数详解

    请在WorkersSettings > VariablesKV Namespace Bindings中配置:

    • 变量(Variables)
      • CRYPTO_SERVICE_URL:你在 Deno 部署得到的 URL,例如https://example.deno.dev
      • OPENAI_BASE_URL:只填到 /v1/chat/completions 之前,例如
        • API请求地址 https://api.example.com/v1/chat/completions
        • 这里就填 https://api.example.com
      • OPENAI_API_KEY:你的OpenAI兼容接口密钥
      • OPENAI_MODEL: 你使用的模型
      • WECHAT_CORP_ID:企业微信企业ID(先留空也可)
      • WECHAT_KF_TOKEN:企业微信客服Token先留空也可)
      • WECHAT_KF_ENCODING_AES_KEY:企业微信客服EncodingAESKey(先留空也可)
      • WECHAT_KF_SECRET:企业微信客服Secret(回调验证通过后再填写)
    • KV 命名空间(KV Namespace Bindings)
      • CONVERSATIONS:用于会话存储(名称可自定义,但两个 KV 必须不同)
      • MESSAGE_TRACKER:用于消息去重/追踪(名称不可与上一个相同)

    注意:

    • 两个 KV 绑定的名称不能相同
    • 企业微信相关变量可先占位,等完成企业微信配置后再回填并重新部署

企业微信配置

  1. 获取企业ID
    • 手机企业微信:工作台 > 管理企业 > 企业信息
  2. 打开客服管理后台
    • 左侧进入 “开发配置 > API 配置”
  3. 生成TokenEncodingAESKey

     

    • 复制这两个值,并回到Cloudflare Workers填入:
      • WECHAT_KF_TOKEN
      • WECHAT_KF_ENCODING_AES_KEY
      • WECHAT_CORP_ID(企业微信端第一步获取的)
    • 重新部署Workers
  4. 设置回调 URL(企业微信后台)
    • 回调地址填你的自定义域名 + /callback
    • 例如:https://a.example.com/callback(可尝试你的workers.dev域名,但我尝试没成功所以不建议)
    • 点击保存/验证,成功后会跳转到开发信息页,如下图
    • 再将此处的Secret粘贴至Workers中的WECHAT_KF_SECRET变量对应值,然后再次部署Workers,理论来说这时就完成部署了。

开始聊天与验证

完成所有部署后,便可开始聊天了。
方式一:微信扫码体验

  • 客服后台:开始接入 > 在微信内其他场景接入 > 微信扫码体验
  • 保存二维码,扫码即可与 BOT 对话;

    方式二:外部链接接入

  • 客服后台:在微信外 App/网页中接入
  • 复制客服链接,在微信中访问该链接发起会话

常见问题与排错

  1. 企业微信回调验证失败
  • 首先看Workers日志是否有请求
    • 无日志:大概率域名不可达或被墙。不要用 workers.dev,改自定义域名
    • 有日志但报错:检查 WECHAT_KF_TOKENEncodingAESKey 是否与企业微信后台一致
  • 确认 https://a.example.com/callback 可公网访问,TLS配置正常
  1. 能收到消息,但没有大模型回复
  • 检查 OPENAI_BASE_URL 是否只填到根路径(不要带 /v1/chat/completions
  • 检查 OPENAI_API_KEY 是否正确,OPENAI_MODEL名称是否正确
  1. Cloudflare 日志无任何输出
  • 在 Workers 控制台开启 “Logs” 并触发请求重试

完整变量

  • Deno
    • CRYPTO_SERVICE_URL:例如 https://example.deno.dev
  • Cloudflare Workers 变量
    • OPENAI_BASE_URL:例如 https://api.example.com
    • OPENAI_API_KEY:你的接口Key
    • OPENAI_MODEL: 你使用的模型
    • WECHAT_CORP_ID:企业ID
    • WECHAT_KF_TOKEN:客服Token
    • WECHAT_KF_ENCODING_AES_KEY:客服EncodingAESKey
    • WECHAT_KF_SECRET:客服 Secret(回调验证通过后获取)
    • SYSTEM_PROMPT: 客服聊天的prompt
  • Cloudflare KV
    • CONVERSATIONS:会话存储
    • MESSAGE_TRACKER:消息追踪/去重
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。