Skip to content

任务清单动态订阅 V2 - 用户权限

接口名称

任务清单动态订阅 V2 -(IFeishuUserV2TaskActivitySubscriptions)

功能描述

任务清单动态订阅功能允许为任务清单创建订阅,当清单中发生特定事件时,系统会向订阅中的订阅者发送通知消息。

本接口提供以当前登录用户身份管理任务清单动态订阅的能力,与租户权限接口功能一致,但使用用户令牌进行认证。

参考文档

函数列表

函数名称功能描述认证方式HTTP 方法
CreateActivitySubscriptionsAsync创建动态订阅用户令牌POST
GetActivitySubscriptionsByIdAsync获取动态订阅详情用户令牌GET
GetActivitySubscriptionsListByIdAsync列取动态订阅列表用户令牌GET
UpdateActivitySubscriptionsByIdAsync更新动态订阅用户令牌PATCH
DeleteActivitySubscriptionsByIdAsync删除动态订阅用户令牌DELETE

函数详细内容

创建动态订阅

函数名称:创建动态订阅

函数签名

csharp
Task<FeishuApiResult<TasklistActivitySubscriptionResult>?> CreateActivitySubscriptionsAsync(
    [Path] string tasklist_guid,
    [Body] CreateActivitySubscriptionsRequest createActivitySubscriptionsRequest,
    [Query("user_id_type")] string user_id_type = "open_id",
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

参数名必填类型说明
tasklist_guidstring任务清单全局唯一GUID,示例:d300a75f-c56a-4be9-80d1-e47653028ceb
createActivitySubscriptionsRequestCreateActivitySubscriptionsRequest创建动态订阅请求体
└ namestring订阅名称,不能为空,最大50个字符
└ subscribersTaskListMember[]订阅者列表,目前只支持"chat"类型(普通群组)
└ include_keysint[]订阅的event key列表,详见下方说明
└ disabledbool该订阅是否为停用,默认false
user_id_typestring用户ID类型,默认open_id

include_keys 可选值

Event Key事件描述
100任务添加入清单
101任务从清单被移除
103任务被完成
104任务恢复为未完成
109任务添加了负责人
110任务更新了负责人
111任务移除了负责人
119任务添加了附件
121任务中添加了新评论
122任务中对评论进行回复
129任务设置了新的开始时间
130任务设置了新的截止时间
131任务同时设置了新的开始/截止时间
132任务同时移除了开始/截止时间

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "activity_subscription": {
      "guid": "33991879-704f-444f-81d7-55a6aa7be80c",
      "name": "我的个人订阅",
      "subscribers": [
        {
          "id": "oc_xxx",
          "type": "chat"
        }
      ],
      "include_keys": [103, 121],
      "disabled": false,
      "created_at": "1675742789470",
      "updated_at": "1675742789470"
    }
  }
}

说明

  • 每个订阅可以包含1个或多个订阅者(目前只支持普通群组)
  • 订阅创建后,如清单发生相应的事件,则会向订阅里的订阅者发送通知消息
  • 一个清单最多可以创建50个订阅
  • 每个订阅最大支持50个订阅者

代码示例

csharp
// 使用用户权限创建动态订阅
public class UserSubscriptionService
{
    private readonly IFeishuUserV2TaskActivitySubscriptions _subscriptionClient;

    public UserSubscriptionService(IFeishuUserV2TaskActivitySubscriptions subscriptionClient)
    {
        _subscriptionClient = subscriptionClient;
    }

    public async Task CreatePersonalSubscriptionAsync(string tasklistGuid)
    {
        var request = new CreateActivitySubscriptionsRequest
        {
            Name = "我的个人订阅",
            Subscribers = new[]
            {
                new TaskListMember
                {
                    Id = "oc_xxx",
                    Type = "chat"
                }
            },
            IncludeKeys = new[] { 103, 121 }, // 任务完成、新评论
            Disabled = false
        };

        var result = await _subscriptionClient.CreateActivitySubscriptionsAsync(
            tasklistGuid, 
            request
        );

        if (result?.Data?.ActivitySubscription != null)
        {
            Console.WriteLine($"订阅创建成功,GUID: {result.Data.ActivitySubscription.Guid}");
        }
    }
}

获取动态订阅详情

函数名称:获取动态订阅详情

函数签名

csharp
Task<FeishuApiResult<TasklistActivitySubscriptionResult>?> GetActivitySubscriptionsByIdAsync(
    [Path] string tasklist_guid,
    [Path] string activity_subscription_guid,
    [Query("user_id_type")] string user_id_type = "open_id",
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

参数名必填类型说明
tasklist_guidstring任务清单全局唯一GUID
activity_subscription_guidstring订阅GUID
user_id_typestring用户ID类型,默认open_id

说明:提供一个清单的GUID和一个订阅的GUID,获取该订阅的详细信息。


列取动态订阅列表

函数名称:列取动态订阅列表

函数签名

csharp
Task<FeishuApiListResult<TasklistActivitySubscriptionInfo>?> GetActivitySubscriptionsListByIdAsync(
    [Path] string tasklist_guid,
    [Query("limit")] int limit = 50,
    [Query("user_id_type")] string user_id_type = "open_id",
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

参数名必填类型说明
tasklist_guidstring任务清单全局唯一GUID
limitint返回结果的最大数量,默认50
user_id_typestring用户ID类型,默认open_id

说明:给定一个清单的GUID,获取其所有的订阅信息。结果按照订阅的创建时间排序。


更新动态订阅

函数名称:更新动态订阅

函数签名

csharp
Task<FeishuApiResult<TasklistActivitySubscriptionResult>?> UpdateActivitySubscriptionsByIdAsync(
    [Path] string tasklist_guid,
    [Path] string activity_subscription_guid,
    [Body] UpdateActivitySubscriptionsRequest updateActivitySubscriptionsRequest,
    [Query("user_id_type")] string user_id_type = "open_id",
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

参数名必填类型说明
tasklist_guidstring任务清单全局唯一GUID
activity_subscription_guidstring订阅GUID
updateActivitySubscriptionsRequestUpdateActivitySubscriptionsRequest更新动态订阅请求体
└ namestring订阅名称
└ subscribersTaskListMember[]订阅者列表
└ include_keysint[]订阅的event key列表
└ disabledbool是否停用
└ update_fieldsstring[]需要更新的字段名列表
user_id_typestring用户ID类型,默认open_id

说明

  • 提供一个清单的GUID和一个动态订阅的GUID,对其进行更新
  • 更新时,将update_fields字段中填写所有要修改的字段名

删除动态订阅

函数名称:删除动态订阅

函数签名

csharp
Task<FeishuNullDataApiResult?> DeleteActivitySubscriptionsByIdAsync(
    [Path] string tasklist_guid,
    [Path] string activity_subscription_guid,
    [Query("user_id_type")] string user_id_type = "open_id",
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

参数名必填类型说明
tasklist_guidstring任务清单全局唯一GUID
activity_subscription_guidstring订阅GUID
user_id_typestring用户ID类型,默认open_id

说明:给定一个清单的GUID和一个订阅的GUID,将其删除。删除后的数据不可恢复。

代码示例

csharp
// 完整的订阅管理示例
public async Task ManageSubscriptionsAsync(string tasklistGuid)
{
    // 1. 创建订阅
    var createRequest = new CreateActivitySubscriptionsRequest
    {
        Name = "项目动态提醒",
        Subscribers = new[]
        {
            new TaskListMember { Id = "oc_xxx", Type = "chat" }
        },
        IncludeKeys = new[] { 100, 103, 121, 122 }
    };

    var createResult = await _subscriptionClient.CreateActivitySubscriptionsAsync(
        tasklistGuid, 
        createRequest
    );

    if (createResult?.Data?.ActivitySubscription == null)
    {
        Console.WriteLine("订阅创建失败");
        return;
    }

    var subscriptionGuid = createResult.Data.ActivitySubscription.Guid;
    Console.WriteLine($"订阅创建成功: {subscriptionGuid}");

    // 2. 获取订阅详情
    var detailResult = await _subscriptionClient.GetActivitySubscriptionsByIdAsync(
        tasklistGuid, 
        subscriptionGuid
    );

    // 3. 列取所有订阅
    var listResult = await _subscriptionClient.GetActivitySubscriptionsListByIdAsync(
        tasklistGuid
    );

    // 4. 更新订阅
    var updateRequest = new UpdateActivitySubscriptionsRequest
    {
        Name = "更新后的项目提醒",
        IncludeKeys = new[] { 100, 103, 104, 121, 122 },
        UpdateFields = new[] { "name", "include_keys" }
    };

    await _subscriptionClient.UpdateActivitySubscriptionsByIdAsync(
        tasklistGuid, 
        subscriptionGuid, 
        updateRequest
    );

    // 5. 删除订阅
    await _subscriptionClient.DeleteActivitySubscriptionsByIdAsync(
        tasklistGuid, 
        subscriptionGuid
    );
}