File Slots
The File slot type enables plugins to receive file attachments from users. It is resolved only when the user interacts with the dedicated "Upload file" button in the assistant interface.
File Object Structure
The File slot accepts an object with the following structure:
{
"file_name": string, // Name used when uploading to the customer API
"location": string, // File ID from input arguments
"content": string // Base64-encoded file contents
}Supported file extensions (case-insensitive)
(case-insensitive)
.png, .jpg, .jpeg, .pdf, .txt, .csv, .xlsx, .xlsm, .xls, .xltx, .xltm
Callout: Only these extensions are allowed as ticket attachments. Attempts to upload unsupported types will fail validation.
Upload Interface
Users must use the "Upload file" button.
Limitations
| Limitation | Details |
|---|---|
| No file delivery to users | Files cannot be sent back to end users in chat responses. |
| No content manipulation | The system cannot read, parse, or modify file contents beyond base64 encoding. |
| Upload only via dedicated button | Uploading files directly in chat (e.g., Slack drag-and-drop) will not populate the File slot — it triggers BriefMe instead. Use only the "Upload file" pop-up that appears when the File slot is requested. |
| Multiple files not supported | List[File] is not supported. Even if the platform (e.g., Slack) allows selecting multiple files in the upload dialog, only the first file is processed. Subsequent files are ignored. |
Workarounds
Use Case: Avoid Local File Download
Problem:
You do not want users to download files to their machine. Instead, you want users to paste a link (e.g., from Google Drive, OneDrive, or internal file server) directly into the assistant.
Limitation:
The platform cannot download files from external URLs on behalf of the user.
Solution:
Use a string slot named file_link instead of File.
Customer API responsibility:
Your API will need to handle the file download from the link passed by the user.
- Download file from
file_url - Validate content/type
- Process as needed
This bypasses local upload entirely. No file is stored or transmitted through the assistant.
Updated 8 minutes ago