Input: {"body":{"messages":[{"content":"Extract the following information from the input:\n{ \n/** The name of the feature */\nfeature?: string\n; \n/** The parent feature */\nparent?: string | null\n; \n/** The description of the feature */\ndescription?: string\n }\n====\n\n• Extract all things that looks like a Botpress feature in the provided input. You must extract a minimum of one element.\n• You may have multiple elements, or zero elements in the input.\n• You must extract each element separately.\n• Each element must be a JSON object with exactly the format: ■json_start■{ \"feature\": ..., \"parent\": ..., \"description\": ... }■json_end■\n• If there are no elements to extract, respond with ■ZERO_ELEMENTS■.\n• When you are done extracting all elements, type \"■NO_MORE_ELEMENT■\" to finish.\n• For example, if you have zero elements, the output should look like this: ■ZERO_ELEMENTS■■NO_MORE_ELEMENT■\n• For example, if you have two elements, the output should look like this: ■json_start■{ ... }■json_end■■json_start■{ ... }■json_end■■NO_MORE_ELEMENT■\n• You may ignore any fields that are not present in the input. All keys are optional.","role":"system"},{"content":"Here's an example to help you understand the format:\n\n<|start_schema|>\nArray<{ name: string, age: number }>\n<|end_schema|>\n\n<|start_instructions|>\nExtract all people\n<|end_instructions|>\n\n<|start_input|>\nThe story goes as follow.\nOnce upon a time, there was a person named Alice who was 30 years old.\nThen, there was a person named Bob who was 25 years old.\nThe end.\n<|end_input|>","role":"user","type":"text"},{"content":"■json_start■\n{\n  \"name\": \"Alice\",\n  \"age\": 30\n}\n■json_end■\n■json_start■\n{\n  \"name\": \"Bob\",\n  \"age\": 25\n}\n■json_end■■NO_MORE_ELEMENT■","role":"assistant","type":"text"},{"content":"Here's an example to help you understand the format:\n\n<|start_schema|>\n{ \n/** The name of the feature */\nfeature?: string\n; \n/** The parent feature */\nparent?: string | null\n; \n/** The description of the feature */\ndescription?: string\n }\n<|end_schema|>\n\n<|start_instructions|>\nExtract all things that looks like a Botpress feature in the provided input. You must extract a minimum of one element.\n<|end_instructions|>\n\n<|start_input|>\n2d152d1292bc92b1ef9c2c46a8ba6083b71290da5d8cacf487ec7-image.png)\nIf you do not have **Auto-compute** enabled, a grey icon will appear next to stale table cells.\n![](https://files.readme.io/916133b27eee9a61ee3ffda42e0cc26cb14e193706e12c36e078d6b4e800fff1-image.png)\nTo update the stale data, simply re-activate **Auto-compute**.\nImporting and Exporting\n[](#importing-and-exporting)\nImport a Table\n[](#import-a-table)\nYou can import a table from a CSV file. Click on the `Import Table` button above the table and select the CSV file you want to import. Botpress will automatically detect the column names and types from the CSV file and create the table structure for you.\nExport a Table\n[](#export-a-table)\nClick on the `Export Table` button to export the table. This will download the table as a CSV file to your computer.\n> ## ���\n>\n> Reminder\n>\n> Don't edit the CSV file directly to avoid data loss and import errors. Instead, make the changes in Botpress Studio and then export the updated table again.\n> ## ���\n>\n> Note\n>\n> When you export a bot the tables are exported as well so there is no need to export them separately unless you want to use them in another bot.\nUpdated 26 days ago\n---\n* [Table of Contents](#)\n* * [Creating a Table](#creating-a-table)  \n         * [Making Fields Searchable](#making-fields-searchable)  \n   * [Types of Fields (Columns)](#types-of-fields-columns)  \n   * [Filtering Records](#filtering-records)  \n         * [Logical Operators](#logical-operators)  \n         * [Types of Rules](#types-of-rules)  \n         * [Rule Groups](#rule-groups)  \n         * [Creating a Filter](#creating-a-filter)  \n         * [Manually Editing Filters](#manually-editing-filters)  \n   * [Operations on Tables - via the Interface](#operations-on-tables---via-the-interface)  \n         * [Add records to a table](#add-records-to-a-table)  \n         * [Update records in a table](#update-records-in-a-table)  \n         * [Delete records from a table](#delete-records-from-a-table)  \n   * [Operations on Tables - via Cards](#operations-on-tables---via-cards)  \n   * [Operations on Tables - via Botpress Client](#operations-on-tables---via-botpress-client)  \n         * [listTables](#listtables)  \n         * [Create Table Rows](#create-table-rows)  \n         * [Find & Filter Table Rows](#find--filter-table-rows)  \n         * [Projection & Aggregation](#projection--aggregation)  \n         * [Update Table Rows](#update-table-rows)  \n         * [Delete Table Rows](#delete-table-rows)  \n         * [Upsert Table Rows](#upsert-table-rows)  \n         * [Create Table](#create-table)  \n         * [Update Table](#update-table)  \n         * [Get Table](#get-table)  \n         * [Delet\n* [Update Table](#update-table)  \n         * [Get Table](#get-table)  \n         * [Delete Table](#delete-table)  \n   * [Operations on Tables - via Code](#operations-on-tables---via-code)  \n         * [createRecord](#createrecord)  \n         * [createRecords](#createrecords)  \n         * [deleteRecord](#deleterecord)  \n         * [deleteRecords](#deleterecords)  \n         * [findRecords](#findrecords)  \n         * [getRecord](#getrecord)  \n         * [updateRecord](#updaterecord)  \n         * [upsertRecords](#upsertrecords)  \n   * [Computed Columns](#computed-columns)  \n         * [Selecting the basis of computation](#selecting-the-basis-of-computation)  \n         * [AI-based computed columns](#ai-based-computed-columns)  \n         * [Code-based computed columns](#code-based-computed-columns)  \n         * [Updating computed values](#updating-computed-values)  \n   * [Importing and Exporting](#importing-and-exporting)  \n         * [Import a Table](#import-a-table)  \n         * [Export a Table](#export-a-table)[Jump to Content](#content)\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\n---\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\nGuides\nMoon (Dark Mode)Sun (Light Mode)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\nStudio Preferences\nSearch\n## Home\n* [Botpress Documentation](/docs/home)\n## Getting Started\n* [Build](/docs/build)\n* [Deploy](/docs/deploy)\n* [Monitor](/docs/monitor)\n## DASHBOARD\n* [Workspace](/docs/workspace)  \n   * [Home](/docs/home-1)  \n   * [Members](/docs/members)  \n   * [Audits](/docs/audits)  \n   * [Your integrations](/docs/your-integrations)  \n   * [Usage](/docs/usage-2)  \n   * [Settings](/docs/settings)  \n   * [Profile Setting](/docs/user-profile)\n* [Bot](/docs/bot)  \n   * [Overview](/docs/overview-1)  \n   * [Integrations](/docs/integrations-1)  \n   * [Webchat](/docs/webchat-1)  \n   * [Logs](/docs/logs)  \n   * [Conversations](/docs/conversations)  \n   * [Analytics](/docs/analytics-1)  \n   * [Events](/docs/events-2)  \n   * [Issues](/docs/issues)  \n   * [Configuration variables](/docs/configuration-variables-1)\n## STUDIO\n* [Interface](/docs/interface)  \n   * [Nodes](/docs/nodes)  \n   * [Home](/docs/home-2)  \n   * [Flows](/docs/studio-interface-flows)  \n   * [Knowledge Base](/docs/knowledge-base)  \n   * [Tables](/docs/tables)  \n   * [Agents](/docs/agents)  \n         * [Summary Agent](/docs/summary-agent)  \n         * [Personality Agent](/docs/personality-agent)  \n         * [Policy Agent](/docs/policy-agent)  \n         * [Translator Agent](/docs/translator-agent)  \n         * [Knowledge Agent](/docs/knowledge-agent)  \n         * [HITL Agent](/docs/hitl-agent)  \n         * [Vision Agent](/docs/vision-agent)  \n         * [Analytics Agent](/docs/analytics-agent)  \n   * [Library](/docs/library)  \n   * [Hooks](/docs/hooks)  \n   * [Integrations](/docs/integrations-3)  \n   * [Schemas](/docs/schemas)  \n   * [Card Hub](/docs/card-hub)  \n   * [Versions](/docs/versions-1)  \n   * [Chatbot Settings](/docs/chatbot-settings-1)  \n   * [Find](/docs/find)  \n   * [Variables](/docs/variables)  \n   * [Card Tray](/docs/card-tray)  \n   * [Debugger, Logs & JSON](/docs/debugger-logs-json)  \n   * [Emulator](/docs/emulator)  \n   * [Keyboard Shortcuts](/docs/keyboard-shortcuts)  \n   * [Commands](/docs/studio-commands)  \n   * [Studio Preferences](/docs/studio-preferences)  \n   * [Import & Export](/docs/import-export-bots)\n* [Cards](/docs/cards)  \n   * [Send Messages](/docs/send-messages)  \n   * [Execute](/docs/execute)  \n   * [Webchat](/docs/webchat-2)  \n   * [Flow Logic](/docs/flow-logic)  \n   * [AI](/docs/ai)  \n        \n* [Webchat](/docs/webchat-2)  \n   * [Flow Logic](/docs/flow-logic)  \n   * [AI](/docs/ai)  \n         * [AI Task](/docs/ai-task-1)  \n         * [AI Transition](/docs/ai-transition)  \n         * [AI Generate Text](/docs/ai-generate-text)  \n   * [Capture Information](/docs/capture-information)  \n   * [Events](/docs/events-3)  \n   * [Agents](/docs/agents-2)  \n   * [Utilities](/docs/utilities)\n## integrations\n* [Usage](/docs/using-integrations)  \n   * [Asana](/docs/asana-integration)  \n   * [HITL](/docs/hitl-1)  \n   * [Instagram](/docs/instagram)  \n   * [Intercom](/docs/intercom)  \n   * [Line](/docs/line)  \n   * [Messenger](/docs/messenger)  \n   * [Microsoft Teams](/docs/microsoft-teams)  \n   * [Notion](/docs/notion)  \n   * [Slack](/docs/slack)  \n   * [Sunshine Conversations](/docs/sunshine-conversations)  \n   * [Telegram](/docs/telegram)  \n   * [Trello](/docs/trello)  \n   * [Twilio](/docs/twilio)  \n   * [Viber](/docs/viber)  \n   * [Vonage](/docs/vonage)  \n   * [Webhook](/docs/webhook)  \n   * [WhatsApp](/docs/whatsapp)  \n         * [Manual Configuration](/docs/manual-configuration)  \n   * [Zapier](/docs/zapier)  \n   * [Zendesk](/docs/zendesk)\n* [Building](/docs/building-integrations)  \n   * [Getting Started](/docs/getting-started-1)  \n         * [Getting Started](/docs/getting-started-1)  \n         * [Adding Messaging Channel Capabilities](/docs/adding-messaging-channel-capabilities)  \n         * [Adding Actions & Triggers to Botpress Studio](/docs/adding-actions-triggers-to-botpress-studio)  \n         * [Publish your integration on Botpress Hub](/docs/publish-your-integration-on-botpress-hub)  \n   * [Use Your Own LLM](/docs/llm-interfaces)  \n   * [Connect a live agent platform with Botpress](/docs/hitl)  \n   * [Moving Parts](/docs/moving-parts)  \n   * [CLI](/docs/cli)  \n   * [SDK](/docs/sdk)  \n   * [Key Concepts](/docs/key-concepts)  \n         * [Architecture](/docs/architecture)\n/docs/sdk)  \n   * [Key Concepts](/docs/key-concepts)  \n         * [Architecture](/docs/architecture)  \n         * [Tags](/docs/tags)  \n         * [Channels](/docs/channels)  \n         * [Configuration](/docs/configuration)  \n         * [User](/docs/user)  \n         * [Conversations](/docs/conversations-1)  \n         * [Messages](/docs/messages)  \n         * [Event](/docs/event)  \n         * [States](/docs/states-1)  \n         * [Actions](/docs/actions)  \n         * [Definitions](/docs/definitions)  \n         * [Secrets](/docs/secrets)  \n         * [ZUI - Zod schema UI components in Botpress \\[BETA\\]](/docs/zui-zod-schema-ui-components-in-botpress)  \n   * [How to](/docs/states)  \n         * [States](/docs/states)  \n         * [Register & Unregister](/docs/register-unregister)  \n         * [Integrations Actions](/docs/integrations)  \n         * [Integration Events](/docs/integration-events)  \n         * [Handler](/docs/handler)  \n         * [Logging](/docs/logging)  \n         * [Building a Custom Integration](/docs/building-a-custom-integration)\n## Webchat\n* [Webchat](/docs/webchat)  \n   * [Webflow](/docs/webflow)  \n   * [Wix](/docs/wix)  \n   * [Wordpress](/docs/wordpress)\n* [Webchat v1 (deprecated)](/docs/web-chat-v1old)  \n   * [Controlling Web Chat using JavaScript](/docs/controlling-web-chat-using-javascript)  \n   * [Styling your webchat](/docs/chatbot-button)  \n         * [Chatbot Button](/docs/chatbot-button)  \n         * [Chat Header](/docs/chat-header)  \n         * [User Input Area](/docs/user-input-area)  \n         * [Show Bot Info](/docs/show-bot-info)  \n   * [Embedding Webchat](/docs/react-app)  \n         * [React App](/docs/react-app)  \n         * [React Native App](/docs/react-native-app)  \n         * [Web Chat Iframe](/docs/web-chat-iframe)  \n         * [Full Screen Chatbot](/docs/full-screen-chatbot)\n* [Webchat v2](/docs/embedded-webchat)  \n   * [Embedded Webchat](/docs/embedded-webchat)  \n         * [Custom CSS Reference](/docs/custom-css-reference)  \n   * [React Components](/docs/react-js)  \n   * [Webchat Client](/docs/webchat-client)\n## Botpress APIs\n* [Files API](/docs/files-api)\n* [Chat API](/docs/chat-api)\n## Appendix\n* [Safety](/docs/safety)  \n   * [Preventing Abuse](/docs/preventing-abuse)  \n   * [Brand Safety Framework](/docs/brand-safety-framework)\n* [Exporting Data](/docs/exporting-data)  \n   * [Raw Conversations](/docs/exporting-raw-conversations-with-the-botpress-api)  \n   * [Conversation History](/docs/getting-the-conversation-history-from-within-your-bot)  \n   * [Streaming Analytics](/docs/streaming-analytics-from-within-your-bot-with-hooks)  \n   * [Compiled Bot Analytics](/docs/exporting-compiled-bot-analytics-with-the-botpress-api)\nPowered by\n# Studio Preferences\n[ Suggest Edits](/edit/studio-preferences)\n![](https://files.readme.io/998d475-image.png)\nWorkflow - Snap to Grid\n[](#workflow---snap-to-grid)\nThe Snap to Grid feature in Botpress allows you to align nodes and connectors on the grid(flow-editor/canvas), making it easier to organize and visualize the flow of your chatbot.\nEnabled\n[](#enabled)\nTo enable Snap to Grid, follow these steps:\n1. Open the Botpress Studio and navigate to the Botpress Icon (top-left)\n2. Go to **Studio Preferences** \\-> Check the box -> **Workflow - Snap to Grid**.\nOnce Snap to Grid is enabled, the nodes and connectors will automatically align to the nearest grid lines when they are moved.\nNote that the Snap to Grid feature is optional and can be disabled at any time by unchecking the **Snap to Grid** box in the settings menu.\nDisabled\n[](#disabled)\nWhen the **Snap to Grid** feature is turned off, the workflow editor allows for more free-form movement of nodes and connections. Nodes and connections can be dragged and placed anywhere on the canvas, without being automatically aligned to the grid.\nThis can be useful for creating more complex and visually dynamic workflows that don't conform to a strict grid layout.\nHowever, it can also make it more difficult to align nodes and connections precisely, which may be necessary for ensuring the logical flow of the conversation.\nStudio Theme\n[](#studio-theme)\nThe Studio Theme feature allows you to change the color scheme of the Botpress Studio interface. This can be useful for customizing the look and feel of your chatbot, or for making it easier to distinguish between different bots in your workspace.\nAvailable themes include:\n1. System (default)\n2. Light\n3. Dark\nUpdated 4 months ago\n---\n* [Table of Contents](#)\n* * [Workflow - Snap to Grid](#workflow---snap-to-grid)  \n         * [Enabled](#enabled)  \n         * [Disabled](#disabled)  \n   * [Studio Theme](#studio-theme)[Jump to Content](#content)\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\n---\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\nGuides\nMoon (Dark Mode)Sun (Light Mode)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\nStreaming Analytics\nSearch\n## Home\n* [Botpress Documentation](/docs/home)\n## Getting Started\n* [Build](/docs/build)\n* [Deploy](/docs/deploy)\n* [Monitor](/docs/monitor)\n## DASHBOARD\n* [Workspace](/docs/workspace)  \n   * [Home](/docs/home-1)  \n   * [Members](/docs/members)  \n   * [Audits](/docs/audits)  \n   * [Your integrations](/docs/your-integrations)  \n   * [Usage](/docs/usage-2)  \n   * [Settings](/docs/settings)  \n   * [Profile Setting](/docs/user-profile)\n* [Bot](/docs/bot)  \n   * [Overview](/docs/overview-1)  \n   * [Integrations](/docs/integrations-1)  \n   * [Webchat](/docs/webchat-1)  \n   * [Logs](/docs/logs)  \n   * [Conversations](/docs/conversations)  \n   * [Analytics](/docs/analytics-1)  \n   * [Events](/docs/events-2)  \n   * [Issues](/docs/issues)  \n   * [Configuration variables](/docs/configuration-variables-1)\n## STUDIO\n* [Interface](/docs/interface)  \n   * [Nodes](/docs/nodes)  \n   * [Home](/docs/home-2)  \n   * [Flows](/docs/studio-interface-flows)  \n   * [Knowledge Base](/docs/knowledge-base)  \n   * [Tables](/docs/tables)  \n   * [Agents](/docs/agents)  \n         * [Summary Agent](/docs/summary-agent)  \n         * [Personality Agent](/docs/personality-agent)  \n         * [Policy Agent](/docs/policy-agent)  \n         * [Translator Agent](/docs/translator-agent)  \n         * [Knowledge Agent](/docs/knowledge-agent)  \n         * [HITL Agent](/docs/hitl-agent)  \n         * [Vision Agent](/docs/vision-agent)  \n         * [Analytics Agent](/docs/analytics-agent)  \n   * [Library](/docs/library)  \n   * [Hooks](/docs/hooks)  \n   * [Integrations](/docs/integrations-3)  \n   * [Schemas](/docs/schemas)  \n   * [Card Hub](/docs/card-hub)  \n   * [Versions](/docs/versions-1)  \n   * [Chatbot Settings](/docs/chatbot-settings-1)  \n   * [Find](/docs/find)  \n   * [Variables](/docs/variables)  \n   * [Card Tray](/docs/card-tray)  \n   * [Debugger, Logs & JSON](/docs/debugger-logs-json)  \n   * [Emulator](/docs/emulator)  \n   * [Keyboard Shortcuts](/docs/keyboard-shortcuts)  \n   * [Commands](/docs/studio-commands)  \n   * [Studio Preferences](/docs/studio-preferences)  \n   * [Import & Export](/docs/import-export-bots)\n* [Cards](/docs/cards)  \n   * [Send Messages](/docs/send-messages)  \n   * [Execute](/docs/execute)  \n   * [Webchat](/docs/webchat-2)  \n   * [Flow Logic](/docs/flow-logic)  \n   * [AI](/docs/ai)  \n        \n* [Webchat](/docs/webchat-2)  \n   * [Flow Logic](/docs/flow-logic)  \n   * [AI](/docs/ai)  \n         * [AI Task](/docs/ai-task-1)  \n         * [AI Transition](/docs/ai-transition)  \n         * [AI Generate Text](/docs/ai-generate-text)  \n   * [Capture Information](/docs/capture-information)  \n   * [Events](/docs/events-3)  \n   * [Agents](/docs/agents-2)  \n   * [Utilities](/docs/utilities)\n## integrations\n* [Usage](/docs/using-integrations)  \n   * [Asana](/docs/asana-integration)  \n   * [HITL](/docs/hitl-1)  \n   * [Instagram](/docs/instagram)  \n   * [Intercom](/docs/intercom)  \n   * [Line](/docs/line)  \n   * [Messenger](/docs/messenger)  \n   * [Microsoft Teams](/docs/microsoft-teams)  \n   * [Notion](/docs/notion)  \n   * [Slack](/docs/slack)  \n   * [Sunshine Conversations](/docs/sunshine-conversations)  \n   * [Telegram](/docs/telegram)  \n   * [Trello](/docs/trello)  \n   * [Twilio](/docs/twilio)  \n   * [Viber](/docs/viber)  \n   * [Vonage](/docs/vonage)  \n   * [Webhook](/docs/webhook)  \n   * [WhatsApp](/docs/whatsapp)  \n         * [Manual Configuration](/docs/manual-configuration)  \n   * [Zapier](/docs/zapier)  \n   * [Zendesk](/docs/zendesk)\n* [Building](/docs/building-integrations)  \n   * [Getting Started](/docs/getting-started-1)  \n         * [Getting Started](/docs/getting-started-1)  \n         * [Adding Messaging Channel Capabilities](/docs/adding-messaging-channel-capabilities)  \n         * [Adding Actions & Triggers to Botpress Studio](/docs/adding-actions-triggers-to-botpress-studio)  \n         * [Publish your integration on Botpress Hub](/docs/publish-your-integration-on-botpress-hub)  \n   * [Use Your Own LLM](/docs/llm-interfaces)  \n   * [Connect a live agent platform with Botpress](/docs/hitl)  \n   * [Moving Parts](/docs/moving-parts)  \n   * [CLI](/docs/cli)  \n   * [SDK](/docs/sdk)  \n   * [Key Concepts](/docs/key-concepts)  \n         * [Architecture](/docs/architecture)\n/docs/sdk)  \n   * [Key Concepts](/docs/key-concepts)  \n         * [Architecture](/docs/architecture)  \n         * [Tags](/docs/tags)  \n         * [Channels](/docs/channels)  \n         * [Configuration](/docs/configuration)  \n         * [User](/docs/user)  \n         * [Conversations](/docs/conversations-1)  \n         * [Messages](/docs/messages)  \n         * [Event](/docs/event)  \n         * [States](/docs/states-1)  \n         * [Actions](/docs/actions)  \n         * [Definitions](/docs/definitions)  \n         * [Secrets](/docs/secrets)  \n         * [ZUI - Zod schema UI components in Botpress \\[BETA\\]](/docs/zui-zod-schema-ui-components-in-botpress)  \n   * [How to](/docs/states)  \n         * [States](/docs/states)  \n         * [Register & Unregister](/docs/register-unregister)  \n         * [Integrations Actions](/docs/integrations)  \n         * [Integration Events](/docs/integration-events)  \n         * [Handler](/docs/handler)  \n         * [Logging](/docs/logging)  \n         * [Building a Custom Integration](/docs/building-a-custom-integration)\n## Webchat\n* [Webchat](/docs/webchat)  \n   * [Webflow](/docs/webflow)  \n   * [Wix](/docs/wix)  \n   * [Wordpress](/docs/wordpress)\n* [Webchat v1 (deprecated)](/docs/web-chat-v1old)  \n   * [Controlling Web Chat using JavaScript](/docs/controlling-web-chat-using-javascript)  \n   * [Styling your webchat](/docs/chatbot-button)  \n         * [Chatbot Button](/docs/chatbot-button)  \n         * [Chat Header](/docs/chat-header)  \n         * [User Input Area](/docs/user-input-area)  \n         * [Show Bot Info](/docs/show-bot-info)  \n   * [Embedding Webchat](/docs/react-app)  \n         * [React App](/docs/react-app)  \n         * [React Native App](/docs/react-native-app)  \n         * [Web Chat Iframe](/docs/web-chat-iframe)  \n         * [Full Screen Chatbot](/docs/full-screen-chatbot)\n* [Webchat v2](/docs/embedded-webchat)  \n   * [Embedded Webchat](/docs/embedded-webchat)  \n         * [Custom CSS Reference](/docs/custom-css-reference)  \n   * [React Components](/docs/react-js)  \n   * [Webchat Client](/docs/webchat-client)\n## Botpress APIs\n* [Files API](/docs/files-api)\n* [Chat API](/docs/chat-api)\n## Appendix\n* [Safety](/docs/safety)  \n   * [Preventing Abuse](/docs/preventing-abuse)  \n   * [Brand Safety Framework](/docs/brand-safety-framework)\n* [Exporting Data](/docs/exporting-data)  \n   * [Raw Conversations](/docs/exporting-raw-conversations-with-the-botpress-api)  \n   * [Conversation History](/docs/getting-the-conversation-history-from-within-your-bot)  \n   * [Streaming Analytics](/docs/streaming-analytics-from-within-your-bot-with-hooks)  \n   * [Compiled Bot Analytics](/docs/exporting-compiled-bot-analytics-with-the-botpress-api)\nPowered by\n# Streaming Analytics\n[ Suggest Edits](/edit/streaming-analytics-from-within-your-bot-with-hooks)\nThe Botpress Cloud dashboard provides you with an Analytics page with counters for the total number of users, new users, returning users, sessions and messages. It also shows a chart with the data and allows you to filter by date range.\nWhile this interface is great for understanding reach and engagement in a glance, you may need more in-depth data about user behavior and the paths they take when interacting with the bot, and you may need to have this data streamed to a third-party service like Hotjar, Segment or Amplitude. Luckily, you can use the Hooks feature to do just that!.\nIn this tutorial we are going to use Mixpanel as an example, but you can use any service that has a REST API and an endpoint to receive events.\nSetting up Mixpanel\n[](#setting-up-mixpanel)\n1. Create an account and a project in [Mixpanel](https://mixpanel.com/).\n2. Go to your project settings and copy the Project Token.\nSetting up the Hooks\n[](#setting-up-the-hooks)\n1. Open Botpress Studio, go to the Hooks tab and click on the `+` button next to **Before Incoming Message** to create a new hook.\n2. Name it `send-user-analytics` for example\n3. Add the following Javascript code:\nJavaScript\n`` const userAnalyticsData = {\ntime: event.createdOn.getTime(), // Mixpanel event datetime\n$insert_id: event.id, // Mixpanel unique event\ndistinct_id: event.userId, // Mixpanel preventing duplicates\nbot_id: event.botId,\nconversation_id: event.conversationId,\npayload: event.payload,\ntext: event.preview,\ncurrent_flow: event.state.context.currentFlow,\ncurrent_node: event.state.context.currentNode,\ncurrent_card: event.state.context.currentCard,\n}\nconst projectToken = '<your token>'\nawait axios.post(\n'https://api.mixpanel.com/import',\n[\n{\nevent: 'Inbound Message',\nproperties: userAnalyticsData,\n},\n],\n{\nheaders: {\nAuthorization: `Basic ${btoa(projectToken + ':')}`,\n},\n}\n)\n``\n1. Click on the `+` button next to **Before Outgoing Message** to create a new hook.\n2. Name it `send-bot-analytics` for example\n3. Add the following Javascript code:\nJavaScript\n`` const botAnalyticsData = {\ntime: outgoingEvent.createdOn.getTime(), // Mixpanel event datetime\n$insert_id: outgoingEvent.id, // Mixpanel unique event\ndistinct_id: outgoingEvent.userId, // Mixpanel preventing duplicates\nbot_id: outgoingEvent.botId,\nconversation_id: outgoingEvent.conversationId,\npayload: outgoingEvent.payload,\ntext: outgoingEvent.preview,\ncurrent_flow: outgoingEvent.state.context.currentFlow,\ncurrent_node: outgoingEvent.state.context.currentNode,\ncurrent_card: outgoingEvent.state.context.currentCard,\n}\nconst projectToken = '<your token>'\nawait axios.post(\n'https://api.mixpanel.com/import',\n[\n{\nevent: 'Outbound Message',\nproperties: botAnalyticsData,\n},\n],\n{\nheaders: {\nAuthorization: `Basic ${btoa(projectToken + ':')}`,\n},\n}\n)\n``\n> ## ���\n>\n> Note\n>\n> Now every time a user or the bot sends a message, Mixpanel will be notified with the event data. You can use this data to create funnels, analyze user behavior and understand the paths they take when interacting with the bot.\nUpdated 24 days ago\n---\n* [Table of Contents](#)\n* * [Setting up Mixpanel](#setting-up-mixpanel)  \n   * [Setting up the Hooks](#setting-up-the-hooks)[Jump to Content](#content)\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\n---\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\nGuides\nMoon (Dark Mode)Sun (Light Mode)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\nTrello\nSearch\n## Home\n* [Botpress Documentation](/docs/home)\n## Getting Started\n* [Build](/docs/build)\n* [Deploy](/docs/deploy)\n* [Monitor](/docs/monitor)\n## DASHBOARD\n* [Workspace](/docs/workspace)  \n   * [Home](/docs/home-1)  \n   * [Members](/docs/members)  \n   * [Audits](/docs/audits)  \n   * [Your integrations](/docs/your-integrations)  \n   * [Usage](/docs/usage-2)  \n   * [Settings](/docs/settings)  \n   * [Profile Setting](/docs/user-profile)\n* [Bot](/docs/bot)  \n   * [Overview](/docs/overview-1)  \n   * [Integrations](/docs/integrations-1)  \n   * [Webchat](/docs/webchat-1)  \n   * [Logs](/docs/logs)  \n   * [Conversations](/docs/conversations)  \n   * [Analytics](/docs/analytics-1)  \n   * [Events](/docs/events-2)  \n   * [Issues](/docs/issues)  \n   * [Configuration variables](/docs/configuration-variables-1)\n## STUDIO\n* [Interface](/docs/interface)  \n   * [Nodes](/docs/nodes)  \n   * [Home](/docs/home-2)  \n   * [Flows](/docs/studio-interface-flows)  \n   * [Knowledge Base](/docs/knowledge-base)  \n   * [Tables](/docs/tables)  \n   * [Agents](/docs/agents)  \n         * [Summary Agent](/docs/summary-agent)  \n         * [Personality Agent](/docs/personality-agent)  \n         * [Policy Agent](/docs/policy-agent)  \n         * [Translator Agent](/docs/translator-agent)  \n         * [Knowledge Agent](/docs/knowledge-agent)  \n         * [HITL Agent](/docs/hitl-agent)  \n         * [Vision Agent](/docs/vision-agent)  \n         * [Analytics Agent](/docs/analytics-agent)  \n   * [Library](/docs/library)  \n   * [Hooks](/docs/hooks)  \n   * [Integrations](/docs/integrations-3)  \n   * [Schemas](/docs/schemas)  \n   * [Card Hub](/docs/card-hub)  \n   * [Versions](/docs/versions-1)  \n   * [Chatbot Settings](/docs/chatbot-settings-1)  \n   * [Find](/docs/find)  \n   * [Variables](/docs/variables)  \n   * [Card Tray](/docs/card-tray)  \n   * [Debugger, Logs & JSON](/docs/debugger-logs-json)  \n   * [Emulator](/docs/emulator)  \n   * [Keyboard Shortcuts](/docs/keyboard-shortcuts)  \n   * [Commands](/docs/studio-commands)  \n   * [Studio Preferences](/docs/studio-preferences)  \n   * [Import & Export](/docs/import-export-bots)\n* [Cards](/docs/cards)  \n   * [Send Messages](/docs/send-messages)  \n   * [Execute](/docs/execute)  \n   * [Webchat](/docs/webchat-2)  \n   * [Flow Logic](/docs/flow-logic)  \n   * [AI](/docs/ai)  \n        \n* [Webchat](/docs/webchat-2)  \n   * [Flow Logic](/docs/flow-logic)  \n   * [AI](/docs/ai)  \n         * [AI Task](/docs/ai-task-1)  \n         * [AI Transition](/docs/ai-transition)  \n         * [AI Generate Text](/docs/ai-generate-text)  \n   * [Capture Information](/docs/capture-information)  \n   * [Events](/docs/events-3)  \n   * [Agents](/docs/agents-2)  \n   * [Utilities](/docs/utilities)\n## integrations\n* [Usage](/docs/using-integrations)  \n   * [Asana](/docs/asana-integration)  \n   * [HITL](/docs/hitl-1)  \n   * [Instagram](/docs/instagram)  \n   * [Intercom](/docs/intercom)  \n   * [Line](/docs/line)  \n   * [Messenger](/docs/messenger)  \n   * [Microsoft Teams](/docs/microsoft-teams)  \n   * [Notion](/docs/notion)  \n   * [Slack](/docs/slack)  \n   * [Sunshine Conversations](/docs/sunshine-conversations)  \n   * [Telegram](/docs/telegram)  \n   * [Trello](/docs/trello)  \n   * [Twilio](/docs/twilio)  \n   * [Viber](/docs/viber)  \n   * [Vonage](/docs/vonage)  \n   * [Webhook](/docs/webhook)  \n   * [WhatsApp](/docs/whatsapp)  \n         * [Manual Configuration](/docs/manual-configuration)  \n   * [Zapier](/docs/zapier)  \n   * [Zendesk](/docs/zendesk)\n* [Building](/docs/building-integrations)  \n   * [Getting Started](/docs/getting-started-1)  \n         * [Getting Started](/docs/getting-started-1)  \n         * [Adding Messaging Channel Capabilities](/docs/adding-messaging-channel-capabilities)  \n         * [Adding Actions & Triggers to Botpress Studio](/docs/adding-actions-triggers-to-botpress-studio)  \n         * [Publish your integration on Botpress Hub](/docs/publish-your-integration-on-botpress-hub)  \n   * [Use Your Own LLM](/docs/llm-interfaces)  \n   * [Connect a live agent platform with Botpress](/docs/hitl)  \n   * [Moving Parts](/docs/moving-parts)  \n   * [CLI](/docs/cli)  \n   * [SDK](/docs/sdk)  \n   * [Key Concepts](/docs/key-concepts)  \n         * [Architecture](/docs/architecture)\n/docs/sdk)  \n   * [Key Concepts](/docs/key-concepts)  \n         * [Architecture](/docs/architecture)  \n         * [Tags](/docs/tags)  \n         * [Channels](/docs/channels)  \n         * [Configuration](/docs/configuration)  \n         * [User](/docs/user)  \n         * [Conversations](/docs/conversations-1)  \n         * [Messages](/docs/messages)  \n         * [Event](/docs/event)  \n         * [States](/docs/states-1)  \n         * [Actions](/docs/actions)  \n         * [Definitions](/docs/definitions)  \n         * [Secrets](/docs/secrets)  \n         * [ZUI - Zod schema UI components in Botpress \\[BETA\\]](/docs/zui-zod-schema-ui-components-in-botpress)  \n   * [How to](/docs/states)  \n         * [States](/docs/states)  \n         * [Register & Unregister](/docs/register-unregister)  \n         * [Integrations Actions](/docs/integrations)  \n         * [Integration Events](/docs/integration-events)  \n         * [Handler](/docs/handler)  \n         * [Logging](/docs/logging)  \n         * [Building a Custom Integration](/docs/building-a-custom-integration)\n## Webchat\n* [Webchat](/docs/webchat)  \n   * [Webflow](/docs/webflow)  \n   * [Wix](/docs/wix)  \n   * [Wordpress](/docs/wordpress)\n* [Webchat v1 (deprecated)](/docs/web-chat-v1old)  \n   * [Controlling Web Chat using JavaScript](/docs/controlling-web-chat-using-javascript)  \n   * [Styling your webchat](/docs/chatbot-button)  \n         * [Chatbot Button](/docs/chatbot-button)  \n         * [Chat Header](/docs/chat-header)  \n         * [User Input Area](/docs/user-input-area)  \n         * [Show Bot Info](/docs/show-bot-info)  \n   * [Embedding Webchat](/docs/react-app)  \n         * [React App](/docs/react-app)  \n         * [React Native App](/docs/react-native-app)  \n         * [Web Chat Iframe](/docs/web-chat-iframe)  \n         * [Full Screen Chatbot](/docs/full-screen-chatbot)\n* [Webchat v2](/docs/embedded-webchat)  \n   * [Embedded Webchat](/docs/embedded-webchat)  \n         * [Custom CSS Reference](/docs/custom-css-reference)  \n   * [React Components](/docs/react-js)  \n   * [Webchat Client](/docs/webchat-client)\n## Botpress APIs\n* [Files API](/docs/files-api)\n* [Chat API](/docs/chat-api)\n## Appendix\n* [Safety](/docs/safety)  \n   * [Preventing Abuse](/docs/preventing-abuse)  \n   * [Brand Safety Framework](/docs/brand-safety-framework)\n* [Exporting Data](/docs/exporting-data)  \n   * [Raw Conversations](/docs/exporting-raw-conversations-with-the-botpress-api)  \n   * [Conversation History](/docs/getting-the-conversation-history-from-within-your-bot)  \n   * [Streaming Analytics](/docs/streaming-analytics-from-within-your-bot-with-hooks)  \n   * [Compiled Bot Analytics](/docs/exporting-compiled-bot-analytics-with-the-botpress-api)\nPowered by\n# Trello\nTrello Integration\n[ Suggest Edits](/edit/trello)\n![](https://files.readme.io/0a91107-image.png)\nThis integration allows you to connect your Botpress chatbot with Trello, a leading project management platform. With this integration, you can easily manage your boards, lists and cards directly from your chatbot.\nPrerequisites\n[](#prerequisites)\n* A [Trello account](https://trello.com/)\n* A board in Trello, with at least one list\n* The ID of the list where cards will be created. Refer to [this article](https://community.atlassian.com/t5/Trello-questions/How-do-I-find-the-LIST-ID/qaq-p/2272862) to locate it.\n* A [Botpress Cloud account](https://sso.botpress.cloud) and a [Botpress Bot](https://botpress.com/docs/cloud/getting-started/create-and-publish-your-chatbot/)\nSetting up the Trello integration in Botpress\n[](#setting-up-the-trello-integration-in-botpress)\n1. Go to the [Integration Hub](https://app.botpress.cloud/hub) in Botpress Cloud (if you don't have the integration installed yet).\n2. Find and open the Trello integration then click on the \"Install to Bot\" button, now go back to your bot settings.\nThe Trello integration has the following settings:\n* **Enabled**: Whether Botpress will communicate with Trello\n* **Webhook URL**: The URL for receiving data in Botpress\n* **API Key**: The API key for the Trello Power-Up\n* **Token**: The token for the Trello Power-Up\nSetting up Trello\n[](#setting-up-trello)\n1. Visit the [Power-Ups Admin Page](https://trello.com/power-ups/admin) and click the **New** button to obtain the API key. Name the Power-Up as \"Botpress Connector\", fill in the email and author fields, then click **Create**.\n2. Once the Power-Up is created, you will be redirected to API Key settings page, displayed below. Generate a new API key, then copy and paste this key into the **API Key** field in Botpress.\n![](https://files.readme.io/5243a12-image.png)\n3. Click on the \"Token\" link (marked in the image below) and authorize the Power-Up access to your Trello account by selecting **Allow**.\n![](https://files.readme.io/25fec25-image.png)\n4. After authorization, copy the displayed token and paste it into the **Token** field in Botpress.\n5. Make sure the integration is enabled then press the button \"Save configuration\".\nThat's it! Now the Trello integration is operational and ready for use within your bot.\nFunctionality\n[](#functionality)\nCards\n[](#cards)\nCreate Card\n[](#create-card)\nThis operation allows you to create cards programmatically in Trello. For example, this can be useful to register user feedback, add support tickets or create tasks.\n* **Card Name**: The title of the card (e.g., \"My Test Card\").\n* **List ID**: The ID of the list to which the card will be added.\n* **Description** (Optional): Details or description of the card.\n* **Due Date** (Optional): The due date of the card in ISO format.\n* **Member IDs** (Optional): The IDs of the members, represented as strings separated by commas.\n* **Label IDs** (Optional): The IDs of the labels, represented as strings separated by commas.\nYou can save the new card information by selecting a variable to store the output in. The output will be an object with the following keys: `id` and `url`.\nUpdate Card\n[](#update-card)\nThis operation allows you to update cards programmatically in Trello. For example, this can be useful to update the status of a support ticket or a task.\n* **Card ID**: The ID of the card to be updated.\n* **Card Name** (Optional): The updated name of the card.\n* **List ID** (Optional): The ID of the list to which the card is added.\n* **Closed** (Optional): Specify \"true\" to close the card and \"false\" to keep it open.\n* **Due Complete** (Optional): Specify \"true\" if the card is due complete and \"false\" if not.\nGet Member\n[](#get-member)\n* **Username or ID**: The Trello username or Trello ID to retrieve member data\nYou can save the member information by selecting a variable to store the output in. The output will be an object with several keys like: `avatarUrl`, `bioData`, `fullName`, `email` and more. Check out this [documentation page](https://developer.atlassian.com/cloud/trello/rest/api-group-members/) to learn more about the Member object.\nGet Board Members\n[](#get-board-members)\nThis operation allows you to get all the members of a board. For example, this can be useful to get the list of members of a project.\n* **Board ID**: The ID of the board to retrieve all its members.\nYou can save the members information by selecting a variable to store the output in. The output will be an object with the key: `members`. The members property is an array of objects with the keys: `id`, `fullName`, and `username`.\nAdd Comment\n[](#add-comment)\nThis operation allows you to add a comment to an existing card. For example, this can be useful to add a comment to a support ticket or a task.\n* **Card ID**: The ID of the card to which the comment will be added.\n* **Comment**: The content of the comment to be added.\nYou can save the new comment information by selecting a variable to store the output in. The output will be an object with the key: `text`.\n> ## ���\n>\n> Note\n>\n> This Trello Integration aims to extend the capabilities of your Botpress chatbot by aligning it with Trello's functionalities, providing a harmonized and interactive user experience. Explore, interact, and get creative with how you utilize this amalgamation to optimize task and project management.\nUpdated 4 months ago\n---\n* [Table of Contents](#)\n* * [Prerequisites](#prerequisites)  \n   * [Setting up the Trello integration in Botpress](#setting-up-the-trello-integration-in-botpress)  \n   * [Setting up Trello](#setting-up-trello)  \n   * [Functionality](#functionality)  \n         * [Cards](#cards)[Jump to Content](#content)\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\n---\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\nGuides\nMoon (Dark Mode)Sun (Light Mode)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\nSlack\nSearch\n## Home\n* [Botpress Documentation](/docs/home)\n## Getting Started\n* [Build](/docs/build)\n* [Deploy](/docs/deploy)\n* [Monitor](/docs/monitor)\n## DASHBOARD\n* [Workspace](/docs/workspace)  \n   * [Home](/docs/home-1)  \n   * [Members](/docs/members)  \n   * [Audits](/docs/audits)  \n   * [Your integrations](/docs/your-integrations)  \n   * [Usage](/docs/usage-2)  \n   * [Settings](/docs/settings)  \n   * [Profile Setting](/docs/user-profile)\n* [Bot](/docs/bot)  \n   * [Overview](/docs/overview-1)  \n   * [Integrations](/docs/integrations-1)  \n   * [Webchat](/docs/webchat-1)  \n   * [Logs](/docs/logs)  \n   * [Conversations](/docs/conversations)  \n   * [Analytics](/docs/analytics-1)  \n   * [Events](/docs/events-2)  \n   * [Issues](/docs/issues)  \n   * [Configuration variables](/docs/configuration-variables-1)\n## STUDIO\n* [Interface](/docs/interface)  \n   * [Nodes](/docs/nodes)  \n   * [Home](/docs/home-2)  \n   * [Flows](/docs/studio-interface-flows)  \n   * [Knowledge Base](/docs/knowledge-base)  \n   * [Tables](/docs/tables)  \n   * [Agents](/docs/agents)  \n         * [Summary Agent](/docs/summary-agent)  \n         * [Personality Agent](/docs/personality-agent)  \n         * [Policy Agent](/docs/policy-agent)  \n         * [Translator Agent](/docs/translator-agent)  \n         * [Knowledge Agent](/docs/knowledge-agent)  \n         * [HITL Agent](/docs/hitl-agent)  \n         * [Vision Agent](/docs/vision-agent)  \n         * [Analytics Agent](/docs/analytics-agent)  \n   * [Library](/docs/library)  \n   * [Hooks](/docs/hooks)  \n   * [Integrations](/docs/integrations-3)  \n   * [Schemas](/docs/schemas)  \n   * [Card Hub](/docs/card-hub)  \n   * [Versions](/docs/versions-1)  \n   * [Chatbot Settings](/docs/chatbot-settings-1)  \n   * [Find](/docs/find)  \n   * [Variables](/docs/variables)  \n   * [Card Tray](/docs/card-tray)  \n   * [Debugger, Logs & JSON](/docs/debugger-logs-json)  \n   * [Emulator](/docs/emulator)  \n   * [Keyboard Shortcuts](/docs/keyboard-shortcuts)  \n   * [Commands](/docs/studio-commands)  \n   * [Studio Preferences](/docs/studio-preferences)  \n   * [Import & Export](/docs/import-export-bots)\n* [Cards](/docs/cards)  \n   * [Send Messages](/docs/send-messages)  \n   * [Execute](/docs/execute)  \n   * [Webchat](/docs/webchat-2)  \n   * [Flow Logic](/docs/flow-logic)  \n   * [AI](/docs/ai)  \n        \n* [Webchat](/docs/webchat-2)  \n   * [Flow Logic](/docs/flow-logic)  \n   * [AI](/docs/ai)  \n         * [AI Task](/docs/ai-task-1)  \n         * [AI Transition](/docs/ai-transition)  \n         * [AI Generate Text](/docs/ai-generate-text)  \n   * [Capture Information](/docs/capture-information)  \n   * [Events](/docs/events-3)  \n   * [Agents](/docs/agents-2)  \n   * [Utilities](/docs/utilities)\n## integrations\n* [Usage](/docs/using-integrations)  \n   * [Asana](/docs/asana-integration)  \n   * [HITL](/docs/hitl-1)  \n   * [Instagram](/docs/instagram)  \n   * [Intercom](/docs/intercom)  \n   * [Line](/docs/line)  \n   * [Messenger](/docs/messenger)  \n   * [Microsoft Teams](/docs/microsoft-teams)  \n   * [Notion](/docs/notion)  \n   * [Slack](/docs/slack)  \n   * [Sunshine Conversations](/docs/sunshine-conversations)  \n   * [Telegram](/docs/telegram)  \n   * [Trello](/docs/trello)  \n   * [Twilio](/docs/twilio)  \n   * [Viber](/docs/viber)  \n   * [Vonage](/docs/vonage)  \n   * [Webhook](/docs/webhook)  \n   * [WhatsApp](/docs/whatsapp)  \n         * [Manual Configuration](/docs/manual-configuration)  \n   * [Zapier](/docs/zapier)  \n   * [Zendesk](/docs/zendesk)\n* [Building](/docs/building-integrations)  \n   * [Getting Started](/docs/getting-started-1)  \n         * [Getting Started](/docs/getting-started-1)  \n         * [Adding Messaging Channel Capabilities](/docs/adding-messaging-channel-capabilities)  \n         * [Adding Actions & Triggers to Botpress Studio](/docs/adding-actions-triggers-to-botpress-studio)  \n         * [Publish your integration on Botpress Hub](/docs/publish-your-integration-on-botpress-hub)  \n   * [Use Your Own LLM](/docs/llm-interfaces)  \n   * [Connect a live agent platform with Botpress](/docs/hitl)  \n   * [Moving Parts](/docs/moving-parts)  \n   * [CLI](/docs/cli)  \n   * [SDK](/docs/sdk)  \n   * [Key Concepts](/docs/key-concepts)  \n         * [Architecture](/docs/architecture)\n/docs/sdk)  \n   * [Key Concepts](/docs/key-concepts)  \n         * [Architecture](/docs/architecture)  \n         * [Tags](/docs/tags)  \n         * [Channels](/docs/channels)  \n         * [Configuration](/docs/configuration)  \n         * [User](/docs/user)  \n         * [Conversations](/docs/conversations-1)  \n         * [Messages](/docs/messages)  \n         * [Event](/docs/event)  \n         * [States](/docs/states-1)  \n         * [Actions](/docs/actions)  \n         * [Definitions](/docs/definitions)  \n         * [Secrets](/docs/secrets)  \n         * [ZUI - Zod schema UI components in Botpress \\[BETA\\]](/docs/zui-zod-schema-ui-components-in-botpress)  \n   * [How to](/docs/states)  \n         * [States](/docs/states)  \n         * [Register & Unregister](/docs/register-unregister)  \n         * [Integrations Actions](/docs/integrations)  \n         * [Integration Events](/docs/integration-events)  \n         * [Handler](/docs/handler)  \n         * [Logging](/docs/logging)  \n         * [Building a Custom Integration](/docs/building-a-custom-integration)\n## Webchat\n* [Webchat](/docs/webchat)  \n   * [Webflow](/docs/webflow)  \n   * [Wix](/docs/wix)  \n   * [Wordpress](/docs/wordpress)\n* [Webchat v1 (deprecated)](/docs/web-chat-v1old)  \n   * [Controlling Web Chat using JavaScript](/docs/controlling-web-chat-using-javascript)  \n   * [Styling your webchat](/docs/chatbot-button)  \n         * [Chatbot Button](/docs/chatbot-button)  \n         * [Chat Header](/docs/chat-header)  \n         * [User Input Area](/docs/user-input-area)  \n         * [Show Bot Info](/docs/show-bot-info)  \n   * [Embedding Webchat](/docs/react-app)  \n         * [React App](/docs/react-app)  \n         * [React Native App](/docs/react-native-app)  \n         * [Web Chat Iframe](/docs/web-chat-iframe)  \n         * [Full Screen Chatbot](/docs/full-screen-chatbot)\n* [Webchat v2](/docs/embedded-webchat)  \n   * [Embedded Webchat](/docs/embedded-webchat)  \n         * [Custom CSS Reference](/docs/custom-css-reference)  \n   * [React Components](/docs/react-js)  \n   * [Webchat Client](/docs/webchat-client)\n## Botpress APIs\n* [Files API](/docs/files-api)\n* [Chat API](/docs/chat-api)\n## Appendix\n* [Safety](/docs/safety)  \n   * [Preventing Abuse](/docs/preventing-abuse)  \n   * [Brand Safety Framework](/docs/brand-safety-framework)\n* [Exporting Data](/docs/exporting-data)  \n   * [Raw Conversations](/docs/exporting-raw-conversations-with-the-botpress-api)  \n   * [Conversation History](/docs/getting-the-conversation-history-from-within-your-bot)  \n   * [Streaming Analytics](/docs/streaming-analytics-from-within-your-bot-with-hooks)  \n   * [Compiled Bot Analytics](/docs/exporting-compiled-bot-analytics-with-the-botpress-api)\nPowered by\n# Slack\n[ Suggest Edits](/edit/slack)\n![](https://files.readme.io/94da470-image.png)\nPrerequisites\n[](#prerequisites)\n* A [Slack App](https://api.slack.com/apps) to connect your bot to Slack.\n* A [Botpress Cloud account](https://sso.botpress.cloud) and a [Botpress Bot](https://botpress.com/docs/cloud/getting-started/create-and-publish-your-chatbot/)\nCreate a Slack App\n[](#create-a-slack-app)\nIf you don't have a Slack app already, follow the steps below to create one:\n1. Go to [this link](https://api.slack.com/apps?new%5Fapp=1).\n2. Select **from scratch**.\n3. Enter a name for your app.\n4. Select the workspace you want to connect your bot to.\n5. Click **Create App**.\nEt voilà! You have created a Slack app.\nSetting up the Slack integration in Botpress\n[](#setting-up-the-slack-integration-in-botpress)\n1. Go to the [Integration Hub](https://app.botpress.cloud/hub) in Botpress Cloud (if you don't have the integration installed yet).\n2. Find and open the Slack integration then click on the \"Install to Bot\" button, now go back to your bot.\nThe Slack integration has the following settings:\n* **Enabled**: Whether Botpress will communicate with Slack\n* **Webhook URL**: The URL for receiving data in Botpress\n* **Bot Token**: The token used to authenticate requests made to Slack\n* **Signing Secret**: The secret used to verify the requests\n* **Bot Name**: The name of the bot that will be displayed in Slack\n* **Bot Avatar URL**: The URL to the bot's avatar that will be displayed in Slack\nSetting up Slack\n[](#setting-up-slack)\nBot Token\n[](#bot-token)\n1. In the left sidebar, click on **Features** \\> **OAuth & Permissions**\n2. Scroll down to the **Scope** \\> **Bot Token Scopes** section, click **Add an OAuth Scope**. Select both `chat:write` and `chat:write.customize` options from the list.\n3. Scroll up and click the **Install to Workspace** button in the **OAuth Tokens for Your Workspace** section\n4. In the next screen, your app will request access to your Slack workspace. Click **Allow**.\n5. In the **OAuth & Permissions > OAuth Tokens for Your Workspace** section, copy the **Bot User OAuth Token**.\n6. Copy the token and paste it in the **Bot Token** input in Botpress.\nSigning Secret\n[](#signing-secret)\nThe signing secret is used to verify webhook requests\n1. In the left sidebar of the app details page, click on **Settings** \\> **Basic Information**\n2. Scroll down to **App Credentials** section. Next to **Signing Secret**, click **Show** to reveal the secret.\n3. Copy the secret to the **Signing Secret** input in Botpress.\nSave Configuration\n[](#save-configuration)\nChannel configuration is complete, you can now click **Save**. It is important you save your configuration before configuring the webhooks, otherwise Slack will be unable to validate the webhook url\nImportant: Do not activate the toggle or authorize Slack before saving. After saving, the toggle can be activated, but do not synchronize yet.\nWebhook Configuration\n[](#webhook-configuration)\nEvents Webhook\n[](#events-webhook)\nSlack sends regular events such as messages to the event webhook\n1. In the left sidebar, click on **Features** \\> **Event Subscriptions**\n2. Turn on events by click the On/Off button\n3. Copy paste the webhook url provided in the channel configuration UI to the **Request URL** field\n4. Under **Subscribe to bot event**, add `message.im` and `message.channels`\n5. Click the **Save Changes** button. Make sure your Slack channel configuration is saved before doing this step, otherwise webhook validation will fail\n6. A yellow banner will be displayed at the top of the screen. Click the **reinstall your app** link\n7. In the next screen, your app will request access to your Slack workspace. Click **Allow**.\nInteractivity Webhook\n[](#interactivity-webhook)\nSlack sends \"interactive\" events such as reactions to message to the interactivity webhook\n1. In the left sidebar, click on **Features** \\> **Interactivity & Shortcuts**\n2. Turn on interactivity by click the On/Off button\n3. Copy paste the webhook url provided in the channel configuration UI to the **Request URL** field\n4. Click the **Save Changes** button\nInstall App\n[](#install-app)\nAdd App to Workspace\n[](#add-app-to-workspace)\nYour Slack app needs to be added to your workspace to allow Slack users to communicate with it:\n1. In the left sidebar, click on **Features** \\> **App Home**\n2. Scroll down and in the **Show Tabs > Messages Tab** section, tick **Allow users to send Slash commands and messages from the messages tab**\n3. In Slack, under the **Apps** section of the sidebar, click the **\\+ Add apps** button. In the search bar, type the name of your Slack app. Click on your Slack app in the search results.\nThat's it, you may now start chatting with your bot on Slack!\nTips\n[](#tips)\n* To get the Slack conversation ID, you can read the following variable:\n`{{ event.tags.conversation[\"slack:id\"] }}`.\n* To get the Slack conversation thread ID (if it is a thread), you can read the following variable:\n`{{ event.tags.conversation[\"slack:thread\"] }}`.\n* To get the Slack user ID, you can read the following variable:\n`{{ event.tags.user[\"slack:id\"] }}`.\n* To get the Slack message ID, you can read the following variable:\n`{{ event.tags.message[\"slack:id\"] }}`.\nSlack actions in Botpress Studio\n[](#slack-actions-in-botpress-studio)\nStarting a Conversation Proactively\n[](#starting-a-conversation-proactively)\nTo start a conversation with a user proactively, you need to know the user's Slack ID.\n1. In Studio, add the **Start DM Conversation** card to your flow.\n2. Pass the user's Slack ID in the `Slack User Id` input.\n3. You can store the result of the action in a variable.\nRetrieve a Message\n[](#retrieve-a-message)\nTo retrieve a message from Slack, you need to know the `timestamp` and the `channel` of the message.\n1. In Studio, add the **Retrieve Message** card to your flow.\n2. Pass the timestamp of the message in the `Timestamp` input.\n3. Pass the channel of the message in the `Channel` input.\n4. You can store the result of the action in a variable.\nAdd Reaction to message\n[](#add-reaction-to-message)\nTo add a reaction on a Slack message, you need to know the `message Id` and the `reaction name`.\n1. In Studio, add the **Add Reaction** card to your flow.\n2. Pass the message Id in the `Message Id` input.\n3. Pass the reaction name in the `Reaction Name` input. (see [Slack documentation](https://slack.com/help/articles/202931348-Use-emoji-and-reactions) for more informations on emojis/reactions)\nSynchronize Members\n[](#synchronize-members)\nThis action will synchronize the members of a Slack workspace with Botpress users.\nIn Studio, add the **Sync Members** card to your flow.\nReaction Added trigger\n[](#reaction-added-trigger)\nYou can use the **Reaction Added** trigger to make actions when a reaction is added to a Slack message.\nGet Slack Profile\n[](#get-slack-profile)\nYou can add the below code in an Execute Code card to allow the bot to retrieve the sender's Display Name or E-mail. You can add other properties as per your needs, all you need is to pass your bot's token in the first line. This can add more personalization and customization to your bot.\nJavaScript\n`` const botToken = ''\nconst userInfoUrl = 'https://slack.com/api/users.profile.get?user=' + event.tags.user['slack:id']\n// Query Slack API\nawait axios({ method: 'get', url: userInfoUrl, headers: { Authorization: 'Bearer ' + botToken } })\n.then((response) => {\nconsole.log(response.data)\nuser.userFullName = response.data.profile.display_name\nuser.email = response.data.profile.email\n})\n.catch(function (error) {\nif (error.response) {\n// The request was made and the server responded with a status code\n// that falls out of the range of 2xx\nconsole.log(error.response.data)\nconsole.log(error.response.status)\nconsole.log(error.response.headers)\n} else if (error.request) {\n// The request was made but no response was received\n// `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n// http.ClientRequest in node.js\nconsole.log(error.request)\n} else {\n// Something happened in setting up the request that triggered an Error\nconsole.log('Error', error.message)\n}\nconsole.log(error.config)\n})\n``\nUpdated about 1 month ago\n---\n* [Table of Contents](#)\n* * [Prerequisites](#prerequisites)  \n   * [Create a Slack App](#create-a-slack-app)  \n   * [Setting up the Slack integration in Botpress](#setting-up-the-slack-integration-in-botpress)  \n   * [Setting up Slack](#setting-up-slack)  \n         * [Bot Token](#bot-token)  \n         * [Signing Secret](#signing-secret)  \n         * [Save Configuration](#save-configuration)  \n   * [Webhook Configuration](#webhook-configuration)  \n         * [Events Webhook](#events-webhook)  \n         * [Interactivity Webhook](#interactivity-webhook)  \n   * [Install App](#install-app)  \n         * [Add App to Workspace](#add-app-to-workspace)  \n   * [Tips](#tips)  \n   * [Slack actions in Botpress Studio](#slack-actions-in-botpress-studio)  \n         * [Starting a Conversation Proactively](#starting-a-conversation-proactively)  \n         * [Retrieve a Message](#retrieve-a-message)  \n         * [Add Reaction to message](#add-reaction-to-message)  \n         * [Synchronize Members](#synchronize-members)  \n         * [Reaction Added trigger](#reaction-added-trigger)  \n         * [Get Slack Profile](#get-slack-profile)[Jump to Content](#content)\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\n---\n[![Botpress](https://files.readme.io/c8cb63b6d586cd66085b4c960570959a424c7050c5ffeb0aeaf31711e2e1b2ac-small-BPLOGO_new_dark_1.png)](https://botpress.com)\nGuides\nMoon (Dark Mode)Sun (Light Mode)\n[Guides](/docs)[API Reference](/reference)[Changelog](/changelog)\nFlows\nSearch\n## Home\n* [Botpress Documentation](/docs/home)\n## Getting Started\n* [Build](/docs/build)\n* [Deploy](/docs/deploy)\n* [Monitor](/docs/monitor)\n## DASHBOARD\n* [Workspace](/docs/workspace)  \n   * [Home](/docs/home-1)  \n   * [Members](/docs/members)  \n   * [Audits](/docs/audits)  \n   * [Your integrations](/docs/your-integrations)  \n   * [Usage](/docs/usage-2)  \n   * [Settings](/docs/settings)  \n   * [Profile Setting](/docs/user-profile)\n* [Bot](/docs/bot)  \n   * [Overview](/docs/overview-1)  \n   * [Integrations](/docs/integrations-1)  \n   * [Webchat](/docs/webchat-1)  \n   * [Logs](/docs/logs)  \n   * [Conversations](/docs/conversations)  \n   * [Analytics](/docs/analytics-1)  \n   * [Events](/docs/events-2)  \n   * [Issues](/docs/issues)  \n   * [Configuration variables](/docs/configuration-variables-1)\n## STUDIO\n* [Interface](/docs/interface)  \n   * [Nodes](/docs/nodes)  \n   * [Home](/docs/home-2)  \n   * [Flows](/docs/studio-interface-flows)  \n   * [Knowledge Base](/docs/knowledge-base)  \n   * [Tables](/docs/tables)  \n   * [Agents](/docs/agents)  \n         * [Summary Agent](/docs/summary-agent)  \n         * [Personality Agent](/docs/personality-agent)  \n         * [Policy Agent](/docs/policy-agent)  \n         * [Translator Agent](/docs/translator-agent)  \n         * [Knowledge Agent](/docs/knowledge-agent)  \n         * [HITL Agent](/docs/hitl-agent)  \n         * [Vision Agent](/docs/vision-agent)  \n         * [Analytics Agent](/docs/analytics-agent)  \n   * [Library](/docs/library)  \n   * [Hooks](/docs/hooks)  \n   * [Integrations](/docs/integrations-3)  \n   * [Schemas](/docs/schemas)  \n   * [Card Hub](/docs/card-hub)  \n   * [Versions](/docs/versions-1)  \n   * [Chatbot Settings](/docs/chatbot-settings-1)  \n   * [Find](/docs/find)  \n   * [Variables](/docs/variables)  \n   * [Card Tray](/docs/card-tray)  \n   * [Debugger, Logs & JSON](/docs/debugger-logs-json)  \n   * [Emulator](/docs/emulator)  \n   * [Keyboard Shortcuts](/docs/keyboard-shortcuts)  \n   * [Commands](/docs/studio-commands)  \n   * [Studio Preferences](/docs/studio-preferences)  \n   * [Import & Export](/docs/import-export-bots)\n* [Cards](/docs/cards)  \n   * [Send Messages](/docs/send-messages)  \n   * [Execute](/docs/execute)  \n   * [Webchat](/docs/webchat-2)  \n   * [Flow Logic](/docs/flow-logic)  \n   * [AI\n<|end_input|>","role":"user","type":"text"}],"meta":{"integrationName":"zai","promptCategory":"zai:zai.extract","promptSource":"zai:zai.extract:default"},"model":"fast","signal":{},"stopSequences":["■NO_MORE_ELEMENT■"]},"method":"POST","url":"https://api.botpress.cloud/v2/cognitive/generate-text"}

Output:
■json_start■
{
  "feature": "Workflow - Snap to Grid",
  "parent": "Studio Preferences",
  "description": "Align nodes and connectors on the grid (flow-editor/canvas) to organize and visualize the flow of your chatbot."
}
■json_end■
■json_start■
{
  "feature": "Studio Theme",
  "parent": "Studio Preferences",
  "description": "Change the color scheme of the Botpress Studio interface (System, Light, Dark)."
}
■json_end■
■json_start■
{
  "feature": "Auto-compute",
  "parent": null,
  "description": "Automatically compute stale table cells; a grey icon appears next to stale cells when disabled."
}
■json_end■
■json_start■
{
  "feature": "Trello Integration",
  "parent": "Integrations",
  "description": "Connect Botpress chatbot with Trello to manage boards, lists, and cards directly from the chatbot."
}
■json_end■