企業微信待辦事項管理技能,支援查詢待辦列表、取得待辦詳情、建立待辦、更新待辦、刪除待辦及變更使用者處理進度狀態。在使用者說「看看我的待辦列表」、「我有哪些待辦」、「幫我建立一個待辦」、「把這個任務分派給張三」、「標記待辦完成」、「刪掉那個待辦」、「幫我建個提醒」、「更新一下待辦內容」、「把提醒時間改到下週」、「接受這個待辦」、「拒絕這個待辦」、「這個待辦的詳情」、「待辦分派給誰了」等需要對待辦進行讀寫操作的場景時使用。
企業微信待辦事項管理技能
wecom-cli是企業微信提供的命令列程式,所有操作透過執行wecom-cli命令完成。
概述
wecomcli-todo 提供企業微信待辦事項的完整管理能力,包含以下功能:
- 查詢待辦列表 - 按建立時間和提醒時間過濾,支援分頁,回傳待辦概要資訊
- 取得待辦詳情 - 根據待辦 ID 列表批次取得完整資訊(含內容和分派人)
- 建立待辦 - 建立新的待辦事項,可指定內容、分派人和提醒時間
- 更新待辦 - 修改已有待辦的內容、分派人、狀態或提醒時間
- 刪除待辦 - 刪除指定的待辦事項
- 變更使用者待辦狀態 - 更改目前使用者在某個待辦中的狀態(拒絕/接受/已完成)
命令呼叫方式
執行指定命令:
wecom-cli todo <tool_name> '<json_params>'
行為策略
查完列表必須查詳情: get_todo_list 只回傳待辦 ID 和狀態等概要資訊,不包含待辦的實際內容和分派人。對使用者來說,沒有內容的待辦列表毫無用處——他們想知道的是「要做什麼」,而不是一串 ID。因此,每次呼叫 get_todo_list 拿到結果後,都要緊接著用回傳的 todo_id 列表呼叫 get_todo_detail 取得完整詳情(內容、分派人等),然後再向使用者展示。這不是可選步驟,而是完成使用者請求的必要環節。
人員 ID 轉姓名(關鍵步驟): get_todo_detail 回傳結果中的 follower_id 和 creator_id 都是系統內部 ID,直接展示給使用者毫無意義——使用者不認識這些 ID,只認識姓名。因此在向使用者展示待辦詳情之前,必須先呼叫 wecomcli-contact 技能取得通訊錄,將所有 follower_id 和 creator_id 匹配為真實姓名。具體做法:
wecom-cli contact get_userlist '{}'
如果通訊錄中找不到某個 ID,展示時標註「未知使用者(ID:xxx)」即可。
分頁未拉完時必須提醒使用者: get_todo_list 介面是分頁的,不要求一次性拉完所有資料。但如果回應中 has_more 為 true,說明後面還有待辦沒有回傳——這時你在展示當前結果的同時,必須明確告訴使用者「還有更多待辦未顯示,是否需要繼續查看?」。使用者可能不知道後面還有資料,如果你不說,他們會以為看到的就是全部,這會導致遺漏重要待辦。
重試策略: 遭遇「回傳 HTTP 錯誤」或「HTTP 請求失敗」時,主動重試,最多重試三次。
命令詳細說明
1. 查詢待辦列表 (get_todo_list)
查詢目前使用者的待辦列表,支援按時間過濾和分頁。回傳的是待辦概要資訊(不含內容和分派人)。
執行命令
wecom-cli todo get_todo_list '<json格式的入參>'
入參說明
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
create_begin_time |
string | ❌ | 建立開始時間,格式:YYYY-MM-DD HH:mm:ss |
create_end_time |
string | ❌ | 建立結束時間,格式:YYYY-MM-DD HH:mm:ss |
remind_begin_time |
string | ❌ | 提醒開始時間,格式:YYYY-MM-DD HH:mm:ss |
remind_end_time |
string | ❌ | 提醒結束時間,格式:YYYY-MM-DD HH:mm:ss |
limit |
number | ❌ | 最大回傳數量,預設 10,最大 20 |
cursor |
string | ❌ | 分頁游標,首次請求不傳,後續傳入上次回應的 next_cursor |
回傳格式
{
"errcode": 0,
"errmsg": "ok",
"index_list": [
{
"todo_id": "TODO_ID",
"todo_status": 1,
"user_status": 1,
"creator_id": "CREATOR_ID",
"remind_time": "2025-06-01 09:00:00",
"create_time": "2025-01-15 10:30:00",
"update_time": "2025-01-16 14:20:00"
}
],
"next_cursor": "NEXT_CURSOR",
"has_more": false
}
回傳欄位說明
| 欄位 | 類型 | 說明 |
|---|---|---|
index_list |
array | 待辦列表 |
index_list[].todo_id |
string | 待辦唯一 ID |
index_list[].todo_status |
number | 待辦狀態:0-已完成,1-進行中,2-已刪除 |
index_list[].user_status |
number | 使用者狀態:0-拒絕,1-接受,2-已完成 |
index_list[].creator_id |
string | 建立人 ID |
index_list[].remind_time |
string | 提醒時間 |
index_list[].create_time |
string | 建立時間 |
index_list[].update_time |
string | 更新時間 |
next_cursor |
string | 下一頁游標 |
has_more |
boolean | 是否還有更多記錄 |
列表回傳的是待辦概要資訊(不含內容和分派人)。拿到列表後,必須呼叫
get_todo_detail取得完整詳情再展示給使用者。
2. 取得待辦詳情 (get_todo_detail)
根據待辦 ID 列表批次查詢完整詳情,包含待辦內容和分派人資訊。
執行命令
wecom-cli todo get_todo_detail '<json格式的入參>'
入參說明
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
todo_id_list |
array | ✅ | 待辦 ID 列表,最多 20 個 |
呼叫範例
wecom-cli todo get_todo_detail '{"todo_id_list": ["TODO_ID_1", "TODO_ID_2"]}'
回傳格式
{
"errcode": 0,
"errmsg": "ok",
"data_list": [
{
"todo_id": "TODO_ID",
"todo_status": 1,
"content": "完成Q2規劃文件",
"follower_list": {
"followers": [
{
"follower_id": "FOLLOWER_ID",
"follower_status": 1,
"update_time": "2025-01-16 14:20:00"
}
]
},
"creator_id": "CREATOR_ID",
"user_status": 1,
"remind_time": "2025-06-01 09:00:00",
"create_time": "2025-01-15 10:30:00",
"update_time": "2025-01-16 14:20:00"
}
]
}
回傳欄位說明
| 欄位 | 類型 | 說明 |
|---|---|---|
data_list |
array | 待辦詳情列表,最多 20 筆 |
data_list[].todo_id |
string | 待辦 ID |
data_list[].todo_status |
number | 待辦狀態:0-已完成,1-進行中,2-已刪除 |
data_list[].content |
string | 待辦內容 |
data_list[].follower_list.followers |
array | 分派人列表 |
data_list[].follower_list.followers[].follower_id |
string | 分派人 ID(即 userid)— 展示前需透過 wecomcli-contact 轉為姓名 |
data_list[].follower_list.followers[].follower_status |
number | 分派人狀態:0-拒絕,1-接受,2-已完成 |
data_list[].follower_list.followers[].update_time |
string | 分派人狀態更新時間 |
data_list[].creator_id |
string | 建立人 ID — 展示前需透過 wecomcli-contact 轉為姓名 |
data_list[].user_status |
number | 目前使用者狀態 |
data_list[].remind_time |
string | 提醒時間 |
data_list[].create_time |
string | 建立時間 |
data_list[].update_time |
string | 更新時間 |
3. 建立待辦 (create_todo)
建立一個新的待辦事項,可指定內容、分派人和提醒時間。
執行命令
wecom-cli todo create_todo '<json格式的入參>'
入參說明
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
content |
string | ✅ | 待辦內容 |
follower_list |
object | ❌ | 分派人列表,格式見注意事項第 6 條 |
remind_time |
string | ❌ | 提醒時間,格式:YYYY-MM-DD HH:mm:ss |
呼叫範例
wecom-cli todo create_todo '{"content": "<待辦的內容>", "remind_time": "2025-06-01 09:00:00"}'
回傳格式
{
"errcode": 0,
"errmsg": "ok",
"todo_id": "TODO_ID"
}
回傳欄位說明
| 欄位 | 類型 | 說明 |
|---|---|---|
todo_id |
string | 新建立的待辦唯一 ID |
4. 更新待辦 (update_todo)
修改已有待辦事項的內容、分派人、狀態或提醒時間。
執行命令
wecom-cli todo update_todo '<json格式的入參>'
入參說明
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
todo_id |
string | ✅ | 待辦 ID |
content |
string | ❌ | 新的待辦內容 |
follower_list |
object | ❌ | 新的分派人列表(全量替換,非追加),格式見注意事項第 6 條。若要新增分派人,需先查出現有分派人,合併後一起提交 |
todo_status |
number | ❌ | 新的待辦狀態:0-已完成,1-進行中,2-已刪除。刪除請使用 delete_todo |
remind_time |
string | ❌ | 新的提醒時間 |
呼叫範例
wecom-cli todo update_todo '{"todo_id": "TODO_ID", "content": "<待辦的內容>", "remind_time": "2025-07-01 09:00:00"}'
回傳格式
{
"errcode": 0,
"errmsg": "ok"
}
5. 刪除待辦 (delete_todo)
刪除指定的待辦事項。
執行命令
wecom-cli todo delete_todo '<json格式的入參>'
入參說明
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
todo_id |
string | ✅ | 待辦 ID |
呼叫範例
wecom-cli todo delete_todo '{"todo_id": "TODO_ID"}'
回傳格式
{
"errcode": 0,
"errmsg": "ok"
}
刪除操作不可撤銷,執行前應向使用者確認。
6. 變更使用者待辦狀態 (change_todo_user_status)
更改目前使用者在某個待辦中的狀態(拒絕/接受/已完成)。
執行命令
wecom-cli todo change_todo_user_status '<json格式的入參>'
入參說明
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
todo_id |
string | ✅ | 待辦 ID |
user_status |
number | ✅ | 使用者狀態:0-拒絕,1-接受,2-已完成 |
呼叫範例
wecom-cli todo change_todo_user_status '{"todo_id": "TODO_ID", "user_status": 2}'
回傳格式
{
"errcode": 0,
"errmsg": "ok"
}
回傳欄位說明
| 欄位 | 類型 | 說明 |
|---|---|---|
errcode |
number | 回傳碼,0 表示成功 |
errmsg |
string | 錯誤資訊,成功時為 "ok" |
典型工作流
完整的工作流步驟、命令範例和展示格式詳見 examples/workflows.md
| 工作流 | 適用場景 | 關鍵要點 |
|---|---|---|
| 工作流 1:查看待辦列表 | 「看看我最近的待辦」 | 標準三步:get_todo_list → get_todo_detail → contact 轉姓名;檢查 has_more 分頁 |
| 工作流 2:按時間範圍查詢 | 「這個月建立的待辦有哪些?」 | 傳入 create_begin_time / create_end_time 過濾,後續同工作流 1 |
| 工作流 3:建立待辦並分派 | 「幫我建立一個待辦,讓張三完成需求文件」 | 先透過 wecomcli-contact 查 userid,再 create_todo 帶 follower_list |
| 工作流 4:標記待辦完成 | 「把這個待辦標記為完成」 | 區分場景 A(改 todo_status=0)和場景 B(改 user_status=2) |
| 工作流 5:更新待辦 | 「把提醒時間改到下週五」 | 先查列表+詳情定位目標,再 update_todo |
| 工作流 6:刪除待辦 | 「刪掉那個待辦」 | 刪除前必須向使用者確認,不可撤銷 |
| 工作流 7:分頁取得 | 待辦數量超過單頁上限 | 透過 cursor 循環拉取,未拉完必須提醒使用者 |
注意事項
-
todo_id 來源規則
todo_id必須來自get_todo_list回傳的結果,禁止自行推測或建構- 使用者通常提供待辦內容描述而非 ID,應先透過
get_todo_list查列表再匹配 - 若匹配到多個相似待辦,展示候選列表讓使用者確認
-
follower_id 來源規則
follower_id即userid,必須透過wecomcli-contact技能的get_userlist介面取得- 禁止根據使用者姓名自行猜測 userid
- 若搜尋結果有多個同名人員,展示候選列表讓使用者選擇
-
人員 ID 必須轉姓名
- 回傳結果中的
follower_id和creator_id是系統內部標識,使用者無法識別 - 展示待辦詳情前,先透過
wecom-cli contact get_userlist '{}'取得通訊錄 - 用通訊錄的
userid匹配follower_id/creator_id,用name替換展示 - 如果通訊錄中找不到某個 ID,展示時標註「未知使用者(ID:xxx)」
- 回傳結果中的
-
時間格式
- 所有時間參數使用
YYYY-MM-DD HH:mm:ss格式 - 使用者說「明天」、「下週一」等相對時間時,根據目前日期推算具體日期
- 所有時間參數使用
-
狀態值含義
- 待辦狀態(
todo_status):0-已完成,1-進行中,2-已刪除 - 使用者狀態(
user_status):0-拒絕,1-接受,2-已完成 - 分派人狀態(
follower_status):0-拒絕,1-接受,2-已完成
- 待辦狀態(
-
follower_list 的格式(作為輸入參數的時候)
"follower_list": { "followers": [ { "follower_id": "FOLLOWER_ID", "follower_status": 1 } ] }follower_id即 userid,需要透過wecomcli-contact查詢取得,禁止自行猜測或建構。 -
破壞性操作確認
- 刪除待辦(
delete_todo)前必須向使用者確認 - 變更狀態為「拒絕」(
user_status=0)前建議向使用者確認
- 刪除待辦(
-
必須查詳情
get_todo_list回傳的是概要資訊(不含內容和分派人),拿到列表後必須緊接著呼叫get_todo_detail取得完整內容再展示給使用者,不要只展示列表概要
-
分頁未拉完必須提醒
- 如果回傳的
has_more為true,在向使用者展示結果時必須明確說明「還有更多待辦未顯示」並詢問使用者是否需要繼續查看
- 如果回傳的
-
單次詳情上限
todo_id_list最多傳 20 個 ID,超過需要分批請求
-
錯誤處理
- 若
errcode不為0,說明介面呼叫失敗,告知使用者errmsg中的錯誤資訊
- 若
-
通訊錄查詢
- 涉及分派人時,需先透過
wecomcli-contact技能的get_userlist介面取得全量通訊錄成員,再按姓名/別名本地篩選匹配出對應的userid。該介面無入參,回傳目前使用者可見範圍內的成員列表(含userid,name,alias)
- 涉及分派人時,需先透過






