LogoMkSaaS文档

通知

学习如何在 MkSaaS 中设置和使用通知

MkSaaS 支持在用户成功完成支付时发送通知。这允许您的团队在工具中接收实时订单提醒。目前,我们支持 Discord 和飞书。未来将支持更多通知渠道(如 Telegram),模块化设计使得根据需要集成其他服务变得容易。

设置

要启用通知,您需要在 .env 文件中配置以下环境变量:

.env
DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."
FEISHU_WEBHOOK_URL="https://open.feishu.cn/open-apis/bot/v2/hook/..."

如何获取 Webhook URL

Discord

  1. 进入到 Discord 服务器并打开想要接收通知的频道。
  2. 点击齿轮图标打开 Channel Settings
  3. 选择 Integrations > Webhooks > New Webhook
  4. 为 webhook 设置名称和头像(可选)。
  5. 复制 Webhook URL 并将其粘贴到 .env 文件中作为 DISCORD_WEBHOOK_URL

更多详情,请参阅 Discord Webhooks 文档

飞书

  1. 进入到飞书群聊。
  2. 点击群名称 > Group Settings > Bot Management
  3. 添加新的 Custom Bot 并启用 Webhooks
  4. 复制生成的 Webhook URL 并将其粘贴到 .env 文件中作为 FEISHU_WEBHOOK_URL

更多详情,请参阅飞书 Webhook 文档

如果您正在设置环境,现在可以回到环境配置文档并继续。本文档的其余部分可以稍后阅读。

环境配置

设置环境变量


通知系统架构

MkSaaS 中的通知系统是模块化的,易于扩展:

discord.ts
feishu.ts
notification.ts
  • discord.ts:使用配置的 webhook 向 Discord 发送购买通知。
  • feishu.ts:使用配置的 webhook 向飞书发送购买通知。
  • notification.ts:向所有启用的渠道发送通知的中央入口点。

核心功能

  • 成功支付的实时通知
  • 开箱即用,支持 Discord 和飞书
  • 未来易于添加更多通知渠道

使用方法

要在成功支付后发送通知,请使用以下实用程序:

import { sendNotification } from '@/notification';

// 支付成功后的示例用法
await sendNotification(sessionId, customerId, userName, amount);

如果配置了相应的 webhook URL,这将自动向 Discord 和飞书发送消息。

消息格式

通知消息包含以下信息:

  • 用户名:客户的用户名
  • 金额:购买金额(美元)
  • 客户 ID:Stripe 客户 ID 用于参考
  • 会话 ID:Stripe 结账会话 ID 用于跟踪
  • 时间戳:购买发生的时间

Discord 消息

Discord 通知作为带有绿色和结构化字段的丰富嵌入发送,便于阅读。

Discord Message

飞书消息

飞书通知作为纯文本消息发送,所有购买详情格式清晰。

Feishu Message

自定义和扩展性

通知系统设计为可扩展的。要添加新的通知渠道:

  1. src/notification 目录中创建新文件(例如 slack.ts)。
  2. 实现向新渠道发送消息的函数:
src/notification/slack.ts
export async function sendMessageToSlack(
  sessionId: string,
  customerId: string,
  userName: string,
  amount: number
): Promise<void> {
  try {
    const webhookUrl = process.env.SLACK_WEBHOOK_URL;

    if (!webhookUrl) {
      console.warn('SLACK_WEBHOOK_URL 未设置,跳过 Slack 通知');
      return;
    }

    // 您的 Slack 消息实现
    // ...
  } catch (error) {
    console.error('<< 发送 Slack 通知失败:', error);
  }
}
  1. notification.ts 中导入并调用此函数:
src/notification/notification.ts
import { sendMessageToSlack } from './slack';

export async function sendNotification(
  sessionId: string,
  customerId: string,
  userName: string,
  amount: number
): Promise<void> {
  // 现有的 Discord 和飞书调用
  await sendMessageToDiscord(sessionId, customerId, userName, amount);
  await sendMessageToFeishu(sessionId, customerId, userName, amount);

  // 添加新的 Slack 通知
  await sendMessageToSlack(sessionId, customerId, userName, amount);
}

最佳实践

  1. 保持 Webhook URL 机密:永远不要公开暴露 Webhook URL 或将其提交到代码库。
  2. 监控执行:检查您的通知渠道以确保消息按预期执行。
  3. 错误处理:系统记录错误但不会在通知失败时中断支付流程。
  4. 速率限制:注意每个服务的 Webhook 速率限制,以避免被阻止。
  5. 测试通知:在部署到生产环境之前,在开发环境中测试您的 Webhook。
  6. 扩展性:添加新通知渠道时遵循现有模式。

视频教程

下一步

现在您了解了如何在 MkSaaS 中使用通知,您可能想要探索这些相关功能: