SDK

通用知识

和接口一样,SDK也是极简模式,只有一个函数。此SDK是兼容版,同时支持 sct.ftqq.com 和 sc3.ft07.com, 也就是说,用它你就无需关系用户用的是哪个版本,它会从key中自动适配。 所有语言的参数均为:

  1. sendkey
  2. title
  3. desp - 消息内容,支持markdown,可以外链图片(请使用https)。
  4. options - 其他更多选项

更多选项包括以下:

{
    tags?: string; // SC3专用:标签列表,多个标签使用竖线分隔 
    short?: string; // SC3和SCT:消息卡片的内容,特别适用desp为markdown时,
    noip?: 1; // SCT专用:是否隐藏调用IP,1为隐藏
    channel?: string; // SCT专用:推送使用的消息通道,多个通道值用竖线隔开
    openid?: string; // SCT专用:消息抄送的 openid,仅用于企业微信应用消息和测试号通道,多个 openid 用逗号或竖线分隔
}

返回格式定义:

{
    code: number; // 返回的状态码, 0 为正确 
    message: string;  // 返回的信息,和状态码对应
    data?: any;  // 可选的返回数据,SCT和SC3这部分格式不同
}

以下是各个语言的SDK及其用法,点击查看详细

JavaScript SDK ( Both web & nodejs )

JS SDK

SDK 地址

安装

npm install serverchan-sdk

调用实例

import {scSend} from 'serverchan-sdk'; 
 
const sendkey = '...'; // 替换成真实的 Server 酱 sendkey
const title = 'Test Notification';
const desp = 'This is a test message';
 
const response = await scSend(sendkey, title, desp, { tags: '服务器报警|报告' });
console.log('Response:', response);
PHP SDK

PHP SDK

SDK 地址

安装

composer require easychen/serverchan-sdk

调用实例

$ret = scSend('sendkey', 'title', 'desp', ['tags'=>'服务器报警|图片']);
print_r($ret);
Python SDK

Python SDK

SDK 地址

安装

pip install serverchan-sdk

调用实例

from serverchan_sdk import sc_send
 
# 发送消息
sendkey = "..."
title = "测试标题"
desp = "这是消息内容"
options = {"tags": "服务器报警|图片"}  # 可选参数
 
response = sc_send(sendkey, title, desp, options)
Golang SDK

GoLang SDK

SDK 地址

安装

go get github.com/easychen/serverchan-sdk-golang

调用实例

package main
 
import (
    "fmt"
    "github.com/easychen/serverchan-sdk-golang"
)
 
func main() {
    sendkey := "your-sendkey"
    title := "Test Message"
    desp := "This is a test message"
    
    resp, err := serverchan_sdk.ScSend(sendkey, title, desp, nil)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Response:", resp)
    }
}
Dart/Flutter SDK

Dart SDK

SDK 地址

Pub Package - https://pub.dev/packages/serverchan_sdk

此 package 依赖 http 包

安装

pubspec.yaml 添加依赖

dependencies:
    serverchan_sdk:

然后运行

dart pub get 
# 或者
flutter pub get

调用实例

import 'package:serverchan_sdk/serverchan_sdk.dart';
 
void main() async {
  const sendkey = 'your-sendkey';
  const title = '测试标题';
  const desp = '这是消息的详细内容';
 
  try {
    ScSendResponse response = await scSend(sendkey, title, desp: desp);
    print('Response Code: ${response.code}');
    print('Response Message: ${response.message}');
  } catch (e) {
    print('Error: $e');
  }
}

没有覆盖的语言

如果您使用的语言没有SDK,您可以把以下提示词粘贴到 ChatGPT/Claude/DeepSeek/Kimi,让AI立马帮你写一个。

请参考以下TypeScript代码,编写<xxx语言>对应的实现:


```typescript
import fetch from 'cross-fetch';

// ScSendOptions 定义了推送函数的可选参数
export interface ScSendOptions {
    /** sctp 专用:标签列表,多个标签使用竖线分隔 */
    tags?: string;
    /** sctp 和非 sctp:消息卡片的简短描述 */
    short?: string;
    /** 非 sctp:是否隐藏调用IP,1为隐藏 */
    noip?: 1;
    /** 非 sctp:推送使用的消息通道,多个通道值用竖线隔开 */
    channel?: string;
    /** 非 sctp:消息抄送的 openid,多个 openid 用逗号或竖线分隔 */
    openid?: string;
}

// ScSendResponse 定义了推送函数返回的响应结果
export interface ScSendResponse {
    /** 返回的状态码 */
    code: number;
    /** 返回的消息 */
    message: string;
    /** 可选的返回数据 */
    data?: any;
}

// 调用 Server 酱的推送函数
export async function scSend(
    sendkey: string,
    title: string,
    desp: string = '',
    options: ScSendOptions = {}
): Promise<ScSendResponse> {
    
    const url = sendkey.startsWith('sctp') 
        ? `https://${sendkey}.push.ft07.com/send`
        : `https://sctapi.ftqq.com/${sendkey}.send`;
    
    const params = {
        title,
        desp,
        ...options,
    };

    const response = await fetch(url, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json;charset=utf-8',
        },
        body: JSON.stringify(params),
    });

    const result = await response.json() as ScSendResponse;
    return result;
}
```

代码仓库:GitHub · 国内网络镜像:Gitee