telegram-native-8787

$npx mdskill add vercel-labs/vercel-openclaw/telegram-native-8787

Diagnose Telegram webhook failures and execute native recovery workflows.

  • Resolves webhook validation errors and sandbox listener failures.
  • Integrates Vercel logs, OpenClaw providers, and drain-channel workflows.
  • Cross-references project targeting and delivery IDs for root cause.
  • Delivers sanitized configuration and post-accept reply visibility.
SKILL.md
.github/skills/telegram-native-8787View on GitHub ↗
---
name: telegram-native-8787
description: "Telegram channel specialist workflow: debug /api/channels/telegram/webhook, native port 8787 /telegram-webhook, webhookSecret, boot cleanup, and post-accept reply visibility."
---

# Telegram Native 8787

Use after `channel-debug-core` for Telegram issues.

## Files

- `src/app/api/channels/telegram/webhook/route.ts`
- `src/server/channels/telegram/**`
- `src/server/workflows/channels/drain-channel-workflow.ts`
- `src/server/openclaw/config.ts`
- `src/server/admin/why-not-ready.ts`
- `src/app/api/channels/summary/route.ts`

## Runtime Path

```text
Telegram update -> /api/channels/telegram/webhook -> secret header validation -> dedup -> fast path to sandbox port 8787 /telegram-webhook OR workflow -> local/public native handler probe -> OpenClaw Telegram provider -> Telegram user-visible reply
```

## Parallel Lane Inputs To Consume

Before proposing a Telegram fix, consume:

- Vercel/app logs lane: accepted webhook, planner event, fast-path result, workflow handoff, requestId/deliveryId/update_id, and project targeting proof.
- Sandbox runtime lane: actual sandboxId, port 8787 listener, local/public `/telegram-webhook` probe, sanitized config has `channels.telegram`, webhookSecret presence without value.
- Workflow lane: `drainChannelWorkflow` run state and whether 8787 not-listening/ECONNREFUSED triggered reconciliation, with verified project targeting when `.vercel/project.json` differs from the incident target.
- Prior-fix comparison: webhookSecret flow, suspicious_empty_200, stale 8787 URL refresh, boot-message cleanup.

## Special Checks

- Port 8787 is not port 3000.
- Native handler registered evidence is local/public probe behavior, especially local 401 on invalid secret.
- Fast, empty 200 is suspicious; do not call it accepted.
- `lastRestoreMetrics.telegramListenerReady` is evidence, not the whole truth.
- `webhookSecret` must flow through config build, restore assets, dynamic resume files, and config hash.
- Accepted forward does not prove a visible Telegram reply.
- Boot message send/update/delete behavior is user-visible evidence.
More from vercel-labs/vercel-openclaw