tennnzoAgent 與 API

Agent 使用方法

代為登記

Agency 或客戶常在群組裡直接說審稿或裁決的結果。這頁說明 Agent 什麼時候可以代為登記、登記前要確認的事、三個代登記工具的動作與權限規則、重送不重記,以及常見的拒絕原因與範例。

Agency 或客戶常在群組裡直接跟 Agent 說結果:「客戶 10/2 審稿通過了」「這篇先取消排程」「頭像那張可以了」。Agent 可以替那個人把決定登記進 tennnzo,系統記下誰說的、在哪說的、什麼時候發生、哪個 Agent 登記的。畫面上會顯示「代為登記」。

規則和那個人自己按按鈕時完全一樣,再加上幾條代登記專用的檢查。

什麼時候可以登記#

只登記有人明確說了的決定。「看起來可以」「應該沒問題」「我再看看」都不算;不確定就先在原頻道問清楚,不要猜。

每次登記前確認:

  1. 確定是哪一篇、哪一件:編號加內文開頭、連結,或短編號(例如 e6baef30)。對不上就問。
  2. 誰說的:on_behalf_of.name 照聊天裡的名字,role 是 client(客戶)、agency(Agency 同事)或 admin(平台管理員)。
  3. 在哪說的:origin.platform(必填)、channel(知道就帶)、message_ref(那則訊息的 id 或連結)。
  4. 何時發生:effective_at 填實際發生的時間。說「10/2 通過」就填 10/2,不是現在。不可以是未來,也不可以超過 60 天前;不給就是現在。超過 60 天的請人在 dashboard 處理。
  5. 退回、要求修改、要求重寫、取消時,comment 引用對方原話的重點。

登記完在原頻道回一句,例如「已登記:TW-T014 客戶通過(10/2)」。被拒(422)就照 message 在原頻道回覆,不要換方法硬做。

三個工具#

工具REST登記什麼
relay_post_statusPOST /posts/{id}/transition貼文的審稿、排程決定
relay_issuePOST /issues/{id}/relay待裁決的決定
relay_taskPOST /tasks/{id}/relay看板卡的確認或退回

三個都只能動你自己人設的東西,都必帶 on_behalf_of 與 origin。

貼文:relay_post_status#

action意思需要
submit送審
approve通過;內部或客戶階段看貼文目前在哪。待內部審、專案開客戶審稿時,通過後進待客戶審
reject退回comment
request_changes要求修改comment
request_rewrite要求重寫comment
schedule、reschedule排程、改時間scheduled_for(未來時間)
unschedule取消排程
mark_published已通過或已排程的貼文標成已發出,發出時間是 effective_at貼文要已經有貼文連結
mark_cancelled已通過、已排程或失敗的貼文標成取消comment
  • 客戶只能 approve、reject、request_changes、request_rewrite,而且只能在「待客戶審稿」時、專案有開客戶審稿。
  • 客戶審稿開著時,Agency 不能替客戶按通過。
  • mark_published 的貼文還沒有連結會回 422。這時改用 report_posts,帶 post_id、status: published 與 permalink,見 回報排程、發布與成效。

待裁決:relay_issue#

action意思需要
resolve已處理
dismiss不處理note
choose回答選項題chosen:選中的選項 key;空陣列表示「其他」,答案寫在 note
  • 有選項的事項要用 choose。
  • 只收 Agency 與平台管理員的決定,客戶不能裁決。
  • 換頭像等後續被標成已處理時,對應的看板卡照規則進待確認。

看板卡:relay_task#

action意思需要
confirm確認完成
reopen退回重做note
  • 只限你的、待確認的卡。只收 Agency 與平台管理員。
  • 退回重寫卡時,會再要求那篇貼文重寫。

同一則訊息不會記兩次#

同一個 message_ref 重送同一件事會回 unchanged: true,不會記兩次。也可以帶 request_id(REST 用 Idempotency-Key)。

範例#

客戶王小姐在飛書 #審稿群 說「10/2 那篇我們通過了」:

json
{ "id": "<貼文 id>", "action": "approve",
  "on_behalf_of": { "name": "王小姐", "role": "client" },
  "origin": { "platform": "feishu", "channel": "#審稿群", "message_ref": "om_8812" },
  "effective_at": "2026-10-02T15:20:00+08:00", "request_id": "feishu-om_8812" }
json
{ "post_id": "…", "action": "approve", "status": "approved", "effective_at": "2026-10-02T07:20:00+00:00" }

Agency 的 Mika 在釘釘營運群說「TW-T014 明天那篇先不要發」:

json
{ "id": "<貼文 id>", "action": "unschedule", "comment": "先不要發,等新品到貨",
  "on_behalf_of": { "name": "Mika", "role": "agency" },
  "origin": { "platform": "dingtalk", "channel": "營運群" } }

Mika 在營運群說「頭像那張退回,顏色不對」:

json
{ "id": "<卡片 id>", "action": "reopen", "note": "顏色不對",
  "on_behalf_of": { "name": "Mika", "role": "agency" },
  "origin": { "platform": "dingtalk", "channel": "營運群", "message_ref": "msg_7731" } }

origin.platform 可以寫 feishu、dingtalk、telegram、discord、cli、other,寫「飛書」「釘釘」也可以。

畫面上怎麼顯示#

  • 審稿紀錄顯示「代為登記」徽章,例如「客戶 王小姐 於 10/2 通過(小橘代為登記,來自 飛書 #審稿群)」。
  • 客戶看得到同事被代登記的決定,但只看到名字與日期,看不到是哪個 Agent、哪個頻道。

常見的拒絕#

  • 客戶的決定,但貼文不在待客戶審稿。
  • 專案沒有開客戶審稿。
  • Agency 想替客戶按通過。
  • 排程時間在過去。
  • effective_at 在未來或超過 60 天前。