2.2 KiB
2.2 KiB
05 Discord Webhook Delivery
Implementation guide: Ticket Implementation Guide
Branch
codex/v0.5-webhook-notification/05-discord-webhook-delivery
Start this branch from codex/v0.5-webhook-notification/04-generic-webhook-delivery.
Goal
Deliver ticket_status_changed notifications to Discord webhooks with configurable message text.
Requirements
- Implement queued delivery for notification actions using the
discordchannel. - Send an HTTP
POSTrequest to the configured Discord webhook URL. - Render the configured message template before delivery.
- Supported template variables:
$url$ticket_key$ticket_title$project_name$status_from$status_to$actor_name
- Send Discord payload
{ "content": "<rendered message>" }. - Validate or guard that rendered Discord messages are non-empty.
- Respect Discord content length limits.
- Persist delivery logs using the same delivery logging rules as the generic webhook channel.
Acceptance Criteria
- Discord actions receive a rendered text message for ticket status changes.
- Template variables are replaced with event payload values.
- Unknown template text remains literal text.
- Empty rendered messages are rejected before delivery and logged as failed.
- Generic webhook actions continue to deliver their JSON payload unchanged.
Tests
- Template rendering tests for every supported variable.
- HTTP fake tests asserting Discord payload shape.
- Tests for empty template output and content length validation.
- Delivery log tests for successful and failed Discord requests.
- Regression tests proving webhook channel behavior remains unchanged.
Verification
vendor/bin/pint --dirty --format agentphp artisan test --compact tests/Feature/Notificationsgit diff --check
Commit And Push
- Commit only this ticket's changes.
- Push with
git push origin codex/v0.5-webhook-notification/05-discord-webhook-delivery.
Out of Scope
- Discord embeds or rich formatting
- Discord bot tokens
- Slack, Teams, email, or other channels
- Delivery attempt UI
- User bell notifications
- Unread counters
- Incoming webhooks
- API or MCP management endpoints