Documentation Index
Fetch the complete documentation index at: https://koreai.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Channels
Channels connect your deployed agents to the platforms where your users interact — websites, messaging apps, and voice calls. Agent Platform provides channel adapters that handle the protocol-specific details so your agent definition works across all channels without modification. This guide covers deploying a web chat widget, connecting to Slack, WhatsApp, and voice, and using rich content and file attachments across channels.Deploy on Web
Deploy your agent on a website using the ABL Web SDK to embed a chat widget that connects to your deployed agent.Create an SDK Channel
Create a web SDK channel for your project. This generates the API key and configuration needed for the widget.publicApiKeyId. Generate an embed token for the widget.
Generate an Embed Token
token and apiKey you embed in your website.
Add the Widget to Your Website
Add the SDK script tag and initialization code to your HTML page.Voice-Enabled Widget
Enable voice input alongside chat.Restrict to Specific Domains
Lock the SDK key to specific origins to prevent unauthorized embedding.403 Forbidden response.
Pass User Context
Identify authenticated users by passing context at initialization.Target a Specific Deployment
Direct the SDK to use a specific deployment (e.g., staging vs. production).Troubleshooting
- Widget does not appear: Verify the script URL is correct and the
apiKeyis valid. Check the browser console for errors. - “Invalid or expired API key” error: The API key may have been rotated or the SDK channel deactivated. Generate a new token.
- CORS errors: Add your website’s origin to the
allowedOriginslist in the SDK channel configuration. - Widget loads but no response from agent: Verify that a deployment is active for the project. The SDK channel must be linked to an active deployment.
Set Up Slack
Connect your agent to Slack so users can interact with it directly in Slack channels and direct messages.Create a Slack App
- Go to api.slack.com/apps and select Create New App > From scratch.
- Name your app and select the workspace.
- Under OAuth & Permissions, add these bot token scopes:
chat:write— send messagesapp_mentions:read— respond to @mentionsim:read,im:write— direct messagesfiles:read— read file attachments (if your agent handles attachments)
- Install the app to your workspace. Copy the Bot User OAuth Token (
xoxb-...). - Under Basic Information, copy the Signing Secret.
Create a Channel Connection
Register the Slack app credentials with the Agent Platform.webhookUrl. Copy it for the next step.
Configure the Slack Webhook
- In your Slack app settings, go to Event Subscriptions.
- Enable events and paste the
webhookUrlfrom the channel connection response. - Slack sends a verification challenge. The platform responds automatically.
- Under Subscribe to bot events, add:
message.im— direct messages to the botapp_mention— @mentions in channels
- Save changes.
Slack with Threaded Replies
The platform supports threaded conversations in Slack. When a user mentions the bot in a channel, the agent responds in a thread to keep the channel clean. This is enabled by default for the Slack adapter.Slack Slash Commands
Register a custom slash command that routes to your agent.- In your Slack app settings, go to Slash Commands and create a new command (e.g.,
/ask). - Set the Request URL to:
https://your-platform/api/v1/channels/slack/slash/{connection-identifier} - The connection identifier is the external identifier from your channel connection (format:
team_id:app_id).
Slack with Interactive Components
If your agent uses actions (buttons, select menus), enable Interactivity in your Slack app:- Go to Interactivity & Shortcuts and toggle on.
- Set the Request URL to the same webhook URL used for events.
- Interactive payloads (button clicks, menu selections) are automatically routed to your agent.
Multi-Workspace Slack App
For distributing your agent across multiple Slack workspaces, use the generic webhook URL (without a connection identifier). The platform extracts the workspace identifier from the event payload.Troubleshooting
- “Channel not configured for this workspace” error: The channel connection’s external identifier does not match the Slack workspace. Verify the
team_id:app_idmatches your Slack app installation. - Bot does not respond to messages: Check that the Event Subscriptions URL verification succeeded (green checkmark in Slack). Verify the
bot_tokenscope includeschat:write. - Signature verification fails: The
signing_secretin the channel connection must match the Signing Secret from the Slack app’s Basic Information page. Secrets are case-sensitive. - Duplicate responses: Slack requires a response within 3 seconds. The platform queues messages and responds asynchronously. If your Slack app’s retry policy re-sends events, the platform deduplicates using event IDs.
Set Up WhatsApp
Connect your agent to WhatsApp so users can interact with it via WhatsApp messages.Configure a WhatsApp Business API Account
Before connecting to the platform, you need a WhatsApp Business API provider account. The platform supports Meta’s Cloud API (direct) and third-party providers like Infobip and Twilio. Meta Cloud API setup:- Go to developers.facebook.com and create a Meta App with WhatsApp product enabled.
- Under WhatsApp > Getting Started, note your Phone Number ID and WhatsApp Business Account ID.
- Generate a permanent System User Access Token with
whatsapp_business_messagingpermission. - Under Configuration, note the App Secret for webhook signature verification.
Create a Channel Connection
Register the WhatsApp credentials with the Agent Platform.webhookUrl.
Configure the Meta Webhook
- In your Meta App settings, go to WhatsApp > Configuration.
- Under Webhook, click Edit and paste the
webhookUrl. - Enter the same
verify_tokenyou used when creating the channel connection. - Click Verify and Save. Meta sends a GET request to verify the webhook.
- Under Webhook fields, subscribe to
messages.
Infobip Provider
For WhatsApp via Infobip, use the provider-specific configuration.WhatsApp with Media Support
The WhatsApp adapter supports receiving images, documents, audio, and video from users. Media files are automatically downloaded and processed by the attachment pipeline. No additional configuration is needed — the adapter handles media extraction from the webhook payload.WhatsApp Interactive Messages
Your agent can send interactive WhatsApp messages (buttons, lists) using thewhatsapp field in rich content.
Troubleshooting
- Webhook verification fails: The
verify_tokenin the channel connection must match the value entered in the Meta webhook configuration. It is a plain string you choose, not a Meta-generated secret. - Messages not arriving: Verify that you subscribed to the
messageswebhook field in Meta’s configuration. Also check that the phone number is registered and has an active WhatsApp Business account. - Signature verification fails on inbound messages: The
app_secretmust be the Meta App Secret (from Basic Settings), not the system user access token. - Media messages not processed: Large media files may timeout during download. Check the attachment processing logs for the session.
Set Up Voice
Set up a voice channel so users can interact with your agent through phone calls, using speech-to-text and text-to-speech for natural voice conversations.Jambonz Voice Setup
The platform supports voice through Jambonz (SIP gateway) and Twilio. Jambonz is the primary voice gateway.Twilio Voice Setup
For Twilio-based voice, create a channel connection with Twilio credentials.Add Voice-Specific Responses to Your Agent
UseVOICE blocks in your agent to provide voice-optimized output alongside text.
BYOC SIP (Bring Your Own Carrier)
Connect your existing SIP trunk to the platform.AudioCodes Voice Gateway
For AudioCodes VoiceAI Connect integration:Browser-Based Voice (Twilio Client)
Generate a Twilio token for browser-based voice calls from your web application.Voice with SSML
Use SSML for fine-grained control over speech output (pauses, emphasis, pronunciation).Troubleshooting
- No audio in voice calls: Verify the STT and TTS providers are configured and their API keys are valid. Check the voice service health endpoint.
- Webhook signature validation fails (Twilio): The
auth_tokenmust match the Twilio account’s Auth Token. The platform uses it to validateX-Twilio-Signatureon incoming webhooks. - Voice responses cut off: Long text responses may exceed TTS limits. Keep voice responses concise or use SSML with
<break>tags to create natural pauses. - SIP registration fails: For BYOC SIP, verify the SIP gateway IP and port are correct and that the gateway allows connections from the platform’s IP range.
Rich Content
Use rich content to send formatted responses — Markdown, Adaptive Cards, Slack blocks, carousels, and interactive elements — that adapt to each channel’s capabilities.Add Rich Content to a Response
Use theRICH_CONTENT block alongside RESPOND to provide channel-specific formatting.
RESPOND message.
Adaptive Cards (Microsoft Teams)
Send rich interactive cards on Teams using the Microsoft Adaptive Cards format.Slack Block Kit
Send formatted messages with Slack blocks.WhatsApp Interactive Messages
Send interactive list or button messages on WhatsApp.Carousel of Cards
Send a scrollable carousel of cards across supported channels.Interactive Actions (Buttons, Select, Input)
Attach interactive elements to any response. Handle user interactions withON_ACTION.
Multi-Channel Templates
Use theTEMPLATES block to define reusable multi-format content.
Troubleshooting
- Rich content not rendering: The connected channel may not support the format. Always provide a plain text
RESPONDas fallback. The runtime uses it when no matching rich format exists. - Adaptive Card JSON parse error: Validate the JSON structure using the Adaptive Cards Designer. Template variables (
{{...}}) are resolved before JSON parsing. - Slack blocks rejected by API: Slack has strict limits on block structure (max 50 blocks, max 3000 chars per text element). Validate against Slack’s Block Kit Builder.
- Interactive action not handled: Ensure each button/select element has an
idthat matches anACTION_IDin theON_ACTIONblock.
File Attachments
Handle file attachments so your agent can accept, process, and respond to user-uploaded images, documents, audio, and video files.Declare Attachment Fields
Use theATTACHMENTS block in your agent to declare the types of files your agent accepts.
Upload Attachments via the API
When building a custom integration, upload files through the attachments API.attachmentId and processing status.
Check Attachment Processing Status
| Field | Description |
|---|---|
scanStatus | Malware scan result (pending, clean, infected). |
processingStatus | Content extraction (pending, processing, complete). |
embeddingStatus | Embedding generation (pending, complete). |
Image Attachments with OCR
Enable OCR to extract text from images. Useful for processing receipts, IDs, or handwritten notes.receipt.extractedText.
Audio Attachments with Transcription
Enable transcription for audio uploads.voicemail.transcription.
Video Attachments with Key Frame Extraction
Extract key frames from video for visual analysis.Attachments in Flow Steps
Request attachments at specific points in a flow.Channel-Specific Attachment Handling
Different channels handle attachments differently. The platform normalizes the experience:| Channel | Attachment support |
|---|---|
| Web SDK | Drag-and-drop file upload in chat widget. |
| Slack | Native file sharing, auto-downloaded. |
| Image, document, audio, video via media API. | |
| Teams | File attachments via Bot Framework. |
| MIME attachments parsed from inbound email. | |
| Telegram | Photos, documents, audio, video messages. |
List and Retrieve Attachments
Troubleshooting
- Upload rejected with “PAYLOAD_TOO_LARGE”: The file exceeds the maximum size (20 MB by default for the upload endpoint, or the
maxFileSizeMbdeclared in the attachment field). Reduce file size or adjust the limit. - Processing status stuck on “pending”: The multimodal processing service may be unavailable. Check service health.
- OCR returns empty text: The image may be too low resolution or the text is not clearly visible. Recommend users upload high-quality images.
- Attachment not available in session variables: Wait for the
processingStatusto reachcompletebefore accessing extracted content. Use the status endpoint to poll.
Further Reading
- Safety & Guardrails — Rate limiting for SDK channels
- Publishing & Operations — Deploy agents to channels
- Build Your First Agent — End-to-end tutorial including web deployment