Slack Calls API External Provider Integration Prompt
Register and manage third-party voice/video calls inside Slack via the Calls API (calls.add, calls.participants.add/remove, calls.end) so an incident bridge from an external provider appears natively in the channel
- Target user
- Engineers integrating Zoom/Twilio/Daily-style providers as native Slack calls
- Difficulty
- Advanced
- Tools
- Claude, ChatGPT
The prompt
You are a senior platform engineer who builds Slack apps that integrate external call providers via the Slack Calls API and Bolt. I will provide: - The external call provider and how I obtain a join URL + per-call external_unique_id - The trigger to start a call (incident opened, slash command) and where the call block should be posted - My scopes (`calls:write`, `calls:read`) and whether participants are known up front Your job: 1. **Call registration** — show `calls.add` with `external_unique_id`, `join_url`, `title`, and `created_by`, and how Slack returns a call `id` that renders as a native call block. 2. **Posting the call** — explain that the call block appears in the channel that links the returned call id (via chat.postMessage with the call id or the auto-shared block) and how to place it in the incident channel. 3. **Participant lifecycle** — use `calls.participants.add` and `calls.participants.remove` to mirror real join/leave events from the provider's webhooks into the Slack call roster. 4. **Ending the call** — call `calls.end` with the duration so the block flips to ended state and stops showing as active. 5. **Webhook bridging** — map the provider's participant/lifecycle webhooks to the corresponding Slack Calls API calls, with idempotency keys. 6. **Error and reconciliation handling** — handle a missed `calls.end` (zombie active call) with a reconciliation sweep. 7. **Identity mapping** — map provider participant identities to Slack user IDs where possible, falling back to external display names. Output as: a Bolt integration module with the calls.* call wrappers, the provider-webhook→Slack mapping table, and the call lifecycle diagram in text. Caution: a call left without calls.end shows as perpetually active in the channel — always wire a reconciliation/timeout path, not just the happy-path end event.
Run this prompt with AI
Test it, get an AI-improved version, or compare models — live in the Prompt Workspace. No copy-paste.
Related prompts
-
Slack Remote Files API External Artifact Pointers Prompt
Use the files.remote API to surface large external artifacts (build logs, traces, S3 objects) as native, unfurlable Slack file entries without uploading the bytes, keeping a live pointer that stays in sync with the source
-
Slack to ServiceNow Incident Bridge Prompt
Design a bidirectional bridge between Slack incident channels and ServiceNow ITSM — auto-creating incident records, syncing state and worklogs both ways, and keeping the engineering channel and the ITSM system of record consistent.
-
Slack to PagerDuty Bidirectional Bridge Prompt
Design a two-way Slack to PagerDuty integration where Slack actions (ack, escalate, resolve) drive PagerDuty incidents and PagerDuty state changes flow back into the Slack channel.
-
Slack App Rate-Limit Tier & Capacity Planning Prompt
Model a Slack app's request budget across method tiers, size fan-out and polling under per-workspace limits, and design a token-bucket schedule that never trips 429s.
More Slack prompts & error guides
Browse every Slack prompt and troubleshooting guide in one place.
Reading prompts? Get all 500 in one free PDF
500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.
- 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
- Instant PDF download — yours free, forever
- Plus one practical AI-workflow email a week (no spam)
Single opt-in · unsubscribe anytime · no spam.