Skip to content
Original tutorialPublic source reviewed

Feishu Bot Triage: Message Cards and Draft Replies

Understand the event to card integration while keeping human approval before sending.

Use caseTurn Feishu messages into type, urgency, an interactive card, and a review draft

Source · JevLog originalIntermediate12 min

Collect Feishu group messages, classify type/urgency with Jev, post an interactive card, and keep drafts pending review. For internal on-call — send stays manual. Original guide; not an official Feishu live test.

Source · JevLog original · Original guide

2026-09-22 new Feishu tool-scene guide; judgment ≠ auto-reply.

Internal support groups mix access requests, incidents, and “can you look”. On-call needs card summaries and drafts — not a bot @-everyone.

Order: event → Jev type → Feishu card → draft review. Replies default manual.

  • Feishu open-platform test tenant + bot per official docs.
  • Minimal event scopes; verify in a test group first.

Group messages flow into triage and a human-reviewed draft. AI concept art, not a platform screenshot.

Group messages flow into triage and a human-reviewed draft. AI concept art, not a platform screenshot.

Follow Feishu docs for bot + encrypted events. Log raw payloads first; do not call the model yet.

Choice for type, Score for urgency, Noul review probability. Example types: access, incident, howto, noise.

from typesafe_sdk import Choice, Noul, Score, TypeSafeClient
text = "Prod login 502 — checkout impacted"
with TypeSafeClient() as client:
res = client.system_one(
state={"message": text},
questions={
"type": Choice(
instructions="Route an internal Feishu support message.",
criteria={
"incident": "Service degradation / outage",
"access": "Permission or account access",
"howto": "How-to / documentation",
"noise": "Chit-chat",
},
),
"needs_human": Noul(instructions="Needs on-call acknowledgment?"),
"urgency": Score(instructions="1-5 urgency", criteria=["Low", "Medium", "High"]),
},
)
print({"type": res.choices["type"].choice, "urgency_score": res.scores["urgency"].score, "human_review_probability": res.nouls["needs_human"].noul})

3. Render a card + draft; do not auto-reply

Section titled “3. Render a card + draft; do not auto-reply”

Interactive card shows type, urgency, suggested owner, draft. Buttons: confirm send / reassign / ignore. No reply API before confirm.

4. Accept incidents escalate; noise ignores cleanly

Section titled “4. Accept incidents escalate; noise ignores cleanly”

Three fixtures: 502, access request, chatter. Cards complete; ignore has no side effects; secrets never logged.

In a test tenant you can run Feishu event → Jev type → card → human-approved draft.

  • Test-group cards include type, urgency, draft.
  • Reply API gated on confirm; auditable.
  • Ignore path is side-effect free.

No. Cards help on-call; plain webhooks work if send stays gated.