# ConvoKraft ## Getting Started -------------------------------------------------------------------------------- title: "Introduction" description: "Learn about the Catalyst ConvoKraft service that provides abilities to integrate powerful chat bot assistants in your Catalyst application." last_updated: "2026-03-18T07:41:08.535Z" source: "https://docs.catalyst.zoho.com/en/convokraft/getting-started/introduction/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Catalyst ConvoKraft ### Introduction ConvoKraft is an AI-driven service that can be used to build conversational bots for your Catalyst application that converses through text. You can interact with the bots built on ConvoKraft in conversational English, in a similar way that you interact with a person. For understanding the intent of your message, ConvoKraft bots are extensively trained with Natural Language Understanding (NLU) algorithms. This NLU ability helps it with comprehending messages and responding conversationally. ConvoKraft is a part of the Catalyst development platform that bundles together multiple on-demand development services. Each of these fully-functional services is comprised of multiple components. When you create a Catalyst application and build bots for it, the setup and management of the server resources utilized by the application is handled entirely by Catalyst, thereby completely eliminating the infrastructure, maintenance costs and efforts from your end. You can use the {{%link href="/en/serverless/help/functions/introduction/" %}}Catalyst serverless functions{{%/link%}} component ({{%link href="/en/serverless/help/functions/integration-functions/" %}}Integration functions{{%/link%}}) to code the business logic of your ConvoKraft bots in **Java**, **Node.js**, or **Python** programming environments. You can also leverage the {{%link href="/en/devops/getting-started/introduction/" %}}Catalyst Devops{{%/link%}} service to continuously monitor and fetch the execution details of your Catalyst functions. Catalyst services can be either be used independently, or be integrated with one another to build highly-functional, robust applications and microservices of any scale. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can explore all the other Catalyst components under various {{%link href="/en/" %}}Catalyst services{{%/link%}}, such as {{%link href="/en/cloud-scale/getting-started/introduction" %}}Catalyst Cloud Scale{{%/link%}}, {{%link href="/en/serverless/getting-started/introduction" %}}Catalyst Serverless{{%/link%}}, {{%link href="/en/devops/getting-started/introduction" %}}Catalyst Devops{{%/link%}}, and more. {{%/note%}} You can also code the business logic of your ConvoKraft bots using {{%link href="https://www.zoho.com/deluge/help/" %}}Deluge{{%/link%}}, Zoho's native online scripting language. These functions will be hosted on Zoho's serverless environment. Alternatively, ConvoKraft allows you to develop business logic in any programming language of your choice, hosted on a public server and they can be accessed within ConvoKraft through {{%link href="/en/convokraft/help/actions/bot-logic/webhooks/"%}}webhooks{{%/link%}}. The developed bots need to be embedded into your application's front end (say web application), for your application's users to use it. Catalyst offers the ConvoKraft {{%link href="/en/convokraft/sdk/js/overview/" %}}Javascript client SDK package{{%/link%}} to build and embed bots in your web applications with ease. You can utilize the client SDK to plug in the bot you build in your application or website's front end, and avail a streamlined, end-to-end bot building experience. After you code the business logic for your bots and embed them into your application, you can train and test them in the development environment and then deploy it to production. You can set permissions for each {{%link href="/en/getting-started/set-up-a-catalyst-project/profiles-and-permissions" %}}Catalyst profile{{%/link%}} to access and update the bots in your Catalyst project. You can also familiarize yourself with Catalyst ConvoKraft and other Catalyst services by trying out this {{%link href="/en/tutorials/ecommerce-bot/nodejs/introduction" %}}tutorial{{%/link%}}. You can get started quickly with Catalyst ConvoKraft using this {{%link href="/en/convokraft/getting-started/quick-start-guide" %}}quick start guide{{%/link%}}. -------------------------------------------------------------------------------- title: "Features of Catalyst ConvoKraft" description: "Learn about the features of Catalyst ConvoKraft that provides abilities to integrate powerful chat bot assistants in your Catalyst application." last_updated: "2026-03-18T07:41:08.535Z" source: "https://docs.catalyst.zoho.com/en/convokraft/getting-started/features-of-convokraft/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Features of Catalyst ConvoKraft {{%fieldset title="Key Features" %}} {{%fieldset-card icon="bot-icon" path="/en/convokraft/help/bots/introduction/" title="Bots"%}}The conversational assistant available 24/7 that can be embedded in your Catalyst web application.{{%/fieldset-card%}} {{%fieldset-card icon="actions-icon" path="/en/convokraft/help/actions/overview/introduction/" title="Actions"%}}The programmed tasks that can performed by a ConvoKraft bot during user interactions via chat.{{%/fieldset-card%}} {{%fieldset-card icon="botlogic-icon" path="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions" title="Bot Logic"%}}Business logic built with Catalyst Functions, Deluge or accessed with Webhooks.{{%/fieldset-card%}} {{%/fieldset%}} <br /> As represented above, Catalyst ConvoKraft features help you create a conversational automation workflow in the form of bots for your Catalyst application. Let's take a detailed look at each of the features: ### Bots ConvoKraft bots are programmed conversational assistants that have the ability to comprehend the intent of a message, process it, and respond to the user. The bots can be configured with the required set of tasks according to its usage in your application. They can be configured to welcome the user, answer their queries, or perform any operation in your application. The bots fetch straightforward answers from the direct configured responses, fetch data or perform an operation in the application by executing the business logic. After the configurations are done, you can train them to enhance its default NLP ability, test them directly in the Catalyst console, then embed the bots in your Catalyst application before deploying to production. ### Actions An action is an ability or a set of tasks that can be configured for a ConvoKraft bot to perform. When an application user initiates a conversation with the bot, it understands the intent through its NLU abilities, and decides upon the actions to be performed in that case. You can configure the actions of the bot to respond with a direct, pre-configured answer, fetch relevant data or perform an operation in the application by executing the business logic. ### Bot Logic Bot logic is the backend logic that you build for your ConvoKraft bots to perform various actions. You can develop your bot logic using any one of the following platforms, and associate it with a bot you create. The chosen bot logic will be executed on invocation of the configured actions. You can develop bot logic in any one of these ways: * **Catalyst Functions**: You can code your business logic through {{%link href="/en/serverless/help/functions/integration-functions/" %}}Catalyst Integration Functions{{%/link%}} that are hosted on Catalyst's servers. ConvoKraft provides relevant SDK packages to code Integration functions in the Java, Node.js, or the Python programming environments. * **Deluge Functions**: You can write your code in {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/" %}}Deluge Functions{{%/link%}} that will be hosted in Zoho's cloud environment. * **Webhooks**: Using any programming language of your choice, you can code your bot logic and host it on any custom domain of a public server and access them using webhooks. -------------------------------------------------------------------------------- title: "Benefits" description: "Learn about the multiple benefits of Catalyst ConvoKraft that provides abilities to integrate powerful chat bot assistants in your Catalyst application." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/convokraft/getting-started/benefits/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Benefits Listed below are some of the key advantages you will gain by using the Catalyst ConvoKraft service : 1. **High availability and Increased Customer Engagement**: ConvoKraft bots are readily available to provide service around the clock. Increased availability enhances the customer experience to a greater extent. The bots can instantly answer customer queries and help any number of customers in parallel. This helps boost customer retention and reduces your application's bounce rates due to unaddressed customer queries in a stipulated period. 2. **Seamless bot configuration**: You can set up your ConvoKraft bots to perform any required actions by either directly configuring responses to user queries or by executing the bot logic. You can code your bot logic according to your application's needs using any development platforms provided by ConvoKraft. For example, you can use any programming environment supported by Catalyst to build Integration Functions, or use Deluge Functions to write your code, or even host the logic in custom servers and access them via webhooks. You can also test and monitor the execution of Catalyst functions using the components in the Catalyst DevOps service. 3. **Faster Response Time and Higher efficiency**: Using ConvoKraft bots in your application can reduce the overall time a customer query resolution takes. ConvoKraft bots can service around the clock, contributing to your brand's reliability and availability. When bots are configured efficiently, they reduce the errors that might occur due to human intervention and provide a more satisfying service to your customers. 4. **Reduced operational overhead by automating redundant tasks**: Using ConvoKraft bots minimizes the overhead of manual model trainings and algorithm curation from the developer's end, since these bots are fed with default NLP abilities and can also be enhanced training them with custom action configurations made to the ConvoKraft bot . Embedding bots in your application to assist your customers on various arenas can help you minimize the operational costs involved in deploying human resources or building extensive logic in a wide range of scenarios. With the ConvoKraft bots operating independently, you can slash the costs to a greater extent and positively contribute to the overall revenue. They can also help customer support staff spend less time on repetitive tasks or interactions, and focus more on solving complex and critical issues. 5. **Ideal data collection and customer feedback**: ConvoKraft bots can help you enhance your sales and lead generation journey as a whole. They can help you collate useful customer information simply by interacting with the customers while they are using your application. Customer data can be analyzed and used to track their interests, draw insights, and arrive at customer trends which can be used to enhance your application further. 6. **Easy Integration in your application** : Catalyst offers ConvoKraft SDK packages that can be implemented in your application's front-end code to quickly embed the bots in your application. These SDK packages for various platforms provide sample code snippets to customize the design and functionality of the bots within your application. 7. **Reliable Infrastructure with auto-scaling provision**: Catalyst ConvoKraft comes with powerful auto--scaling capabilities that allow efficient usage of the resources provided by Catalyst. Catalyst handles the entire backend server management, that is built on Zoho's tried-and-tested infrastructure, thereby completely eliminating the setup and maintenance efforts from your end. -------------------------------------------------------------------------------- title: "Use Cases" description: "Learn about the varied usecases of Catalyst ConvoKraft that provides abilities to integrate powerful chat bot assistants in your Catalyst application.." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/convokraft/getting-started/usecases/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Use Cases Listed below are a few common real-time use cases of ConvoKraft bots and the key advantages of using them in your Catalyst application : 1. An ecommerce bot that serves as an online retail assistant for your business, by helping customers manage their online shopping orders. You can configure the bot to answer customers simple and straightforward queries, such as tracking orders, fetching purchase history or any information regarding the products in the current purchase, or retrieving details about the best-selling products of the season or the applicable offers on the cart items, and more. You can also configure the bot so that customers can initiate a cancellation or exchange procedure for the products directly, by interacting with the bot and providing the appropriate order details. 2. A virtual front-office assistant that helps engage with the visitors of your business website, by providing information they seek and generating leads. Consider a financing company that provisions housing and education loans. The business website of the company provides the loan specifications and the eligibility details. In this case, a ConvoKraft bot can be used to present the required information upon enquiry, and to collect user details that will help the sales personnel perform follow-ups and lead conversions. 3. A ticketing bot that serves as a counter personnel to answers customer queries about upcoming events, its venue, duration, date and time, agenda, keynote speakers, and more. You can configure the bot to book tickets in the application on behalf of customers and send a copy of the ticket to the customer. The bot can also allow the customer to cancel or initiate refunds for the booked tickets. 4. A simple FAQ bot for your product website can help the users quickly get what they want by simply interacting with the ConvoKraft bot instead of searching through the FAQ documentation every time. You can also configure the bot to display the appropriate help documentation links when the user enquires about a specific feature in the product. This saves immense time for the customer support team to avoid addressing the time-consuming straightforward questions, and only concentrate on the more complex tickets. 5. An appointment scheduling bot in your hospital's website, that enquires about the patient's issue, collects details about it and schedules an appointment with the concerned and available medical professional. The bot can also interact with the patient, check if they have already consulted in this specific hospital and fetch patient's history records and send to the medical professional before the scheduled appointment time to enable a seamless consultation experience for the patients. -------------------------------------------------------------------------------- title: "Quick Start Guide" description: "Learn about the steps to get started with Catalyst ConvoKraft that provides abilities to integrate powerful chat bot assistants in your Catalyst application." last_updated: "2026-03-18T07:41:08.536Z" source: "https://docs.catalyst.zoho.com/en/convokraft/getting-started/quick-start-guide/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Quick Start Guide This section covers the overall process involved in using the Catalyst ConvoKraft service, right from creating a Catalyst project, building a ConvoKraft bot, configuring the bot's business logic, training and testing the bot, to embedding it in your Catalyst application and then deploying it to production. There are a few pre- and post- requisites to be done in the Catalyst platform while using the ConvoKraft service. For example, you'll need to create a project in the Catalyst platform for your application, and then build bots for that application. After you've built the bot and synced it in your application, you will need to deploy the Catalyst project as a whole from the Catalyst console to make the bot live in production. Let's have a look at the steps in detail : 1. **Create a Catalyst project** - Access the {{%link href="https://console.catalyst.zoho.com/baas/index" %}}Catalyst console{{%/link%}} to {{%link href="/en/getting-started/catalyst-projects/#create-a-catalyst-project" %}}create a new project{{%/link%}}. After the project creation is done, you will be able to access all Catalyst services from the console itself. 2. **Create and configure the bot** - You can create a bot directly by accessing the ConvoKraft service in the Catalyst console and configure the actions to be performed by the bot. The actions of the ConvoKraft bot can be configured either to execute an underlying business logic or to respond back with direct pre-configured responses. You can refer to {{%link href="/en/convokraft/help/actions/create-an-action" %}}this page{{%/link%}} for more details on creating actions, defining {{%link href="/en/convokraft/help/actions/define-sample-sentences" %}}sample sentences{{%/link%}}, and {{%link href="/en/convokraft/help/actions/define-params" %}}params{{%/link%}} for the actions. 3. **Build business logic** - If you choose to configure actions to perform any operation in your application by executing the business logic, you can choose to code the logic using {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions" %}}Catalyst Functions{{%/link%}} or {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions" %}}Deluge{{%/link%}}. You can also code the logic and host it on your server, and refer it through {{%link href="/en/convokraft/help/actions/bot-logic/webhooks" %}}Webhooks{{%/link%}}. 4. **Test and train the bot** - Once you create and configure the bot with the required actions, you can train the bot. By training it, you can enhance the default NLP abilities of your bot and and have it tailored to your needs, based on your configurations and the bot's conversation history. Once the bot is trained, you can test it instantly from the console by simply interacting with it. You can refer to {{%link href="/en/convokraft/help/manage-a-bot/train-a-bot" %}}this page{{%/link%}} to get a more detailed understanding about the bot training and {{%link href="/en/convokraft/help/manage-a-bot/test-a-bot" %}}testing{{%/link%}} process. 5. **Embed the bot in your application** - Once you have tested your bot, you can embed it in your Catalyst application, and customize it based on your application's specific needs. For example, you can alter the size, position, and appearance of the bot's window as required and more. To use the bots in your application, you can simply plug in ConkoKraft's {{%link href="/en/convokraft/sdk/js/overview/" %}}Javascript SDK package{{%/link%}} in your codebase. 6. **Host the application** - You need to host your Catalyst application in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}} in parallel through the {{%link href="/en/cloud-scale/help/web-client-hosting/introduction" %}}web client hosting{{%/link%}} component of the {{%link href="/en/cloud-scale/getting-started/introduction" %}}Catalyst CloudScale service{{%/link%}}. You can use the components in the {{%link href="/en/devops/getting-started/introduction" %}}Catalyst DevOps service{{%/link%}} to {{%link href="/en/devops/help/apm/introduction" %}}monitor{{%/link%}} the execution of business logic in {{%link href="/en/serverless/help/functions/integration-functions/" %}}Catalyst Integration Functions{{%/link%}} and also check their {{%link href="/en/devops/help/logs/introduction" %}}logs{{%/link%}}. 7. **Deploy the application to production** - After you test your application in the development environment, it can be migrated to production as described in {{%link href="/en/deployment-and-billing/environments/initial-deployment" %}}this page{{%/link%}}. Once you deploy the Catalyst project, you will be able to access your bots and directly interact with it from the application's client interface in production. ## Help Components -------------------------------------------------------------------------------- title: "SmartTrain" description: "This feature allows you to train your ConvoKraft bot using custom data by adding it through URLs." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/smarttrain/" service: "ConvoKraft" -------------------------------------------------------------------------------- # SmartTrain SmartTrain is an advanced feature of the {{%link href="/en/convokraft/" %}}Catalyst ConvoKraft{{%/link%}} service that enables you to train your bot with custom data, enhancing its learning capabilities beyond the {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions/" %}}predefined bot logic{{%/link%}} for configured {{%link href="/en/convokraft/help/actions/create-an-action/" %}}actions{{%/link%}}. With SmartTrain, you can upload custom training data directly to ConvoKraft through the Catalyst console. The system processes the uploaded data and automatically trains the bot, allowing it to deliver intelligent responses to user queries based on the trained content. Catalyst provides a comprehensive set of REST APIs that you can integrate into your applications to leverage SmartTrain’s functionalities. These APIs allow you to enable or disable SmartTrain, add new training materials, retrieve details of existing training data, delete training materials, and fetch responses from the ConvoKraft bot after successful training with your custom data. You can refer to {{%link href="/en/api/code-reference/convokraft/add-training-material/#AddTrainingMaterial" %}}API documentation{{%/link%}} for more detailed information. ### Upload Training Data To train your ConvoKraft bot with custom data, you must first enable the **SmartTrain** feature. Once enabled, you can upload the data for training, and the bot will automatically process and learn from the content, improving its ability to deliver intelligent responses. You can upload your training data as URLs linking to web-based resources in the following file formats: * **.html** * **.txt** The URLs should contain the information your bot needs to learn and use for generating responses.The training process is fully automated, with **SmartTrain** managing the complexity of understanding and organizing the information. There’s no need for manual structuring or formatting of the content. SmartTrain preserves context and relationships within the data, enabling your bot to deliver accurate and relevant responses. You can {{%link href="/en/convokraft/help/bots/introduction/" %}}create a bot{{%/link%}}, then enable SmartTrain and upload training data by following the steps below: 1. Navigate to the **SmartTrain** tab and click **Enable SmartTrain**. 2. In the confirmation popup, click **Enable**. 3. Click **Add Training Data** to upload your custom data. 4. Under the **Add URL** section, enter the URL of a web resource in the **.html** or **.txt** format containing the training data, then click **Add**. For demonstration purposes, we have added the Catalyst help documentation link. 5. The training material will be added, and the bot will begin processing it automatically. 6. Once training is complete, the status will be updated to **Trained**. You can now test the bot by asking questions related to the uploaded custom data. Here in our case, the bot will be able to answer any queries related to Catalyst as described in the help documentation. We will see how this works in the next section. {{%note%}}{{%bold%}}Note :{{%/bold%}} You don’t need to manually {{%link href="/en/convokraft/help/manage-a-bot/train-a-bot/" %}}train the bot{{%/link%}} as you do when {{%link href="/en/convokraft/help/actions/create-an-action/" %}}configuring actions{{%/link%}}. With **SmartTrain**, the training happens automatically once you upload the training material, allowing you to proceed directly to {{%link href="/en/convokraft/help/manage-a-bot/test-a-bot/" %}}testing{{%/link%}}.{{%/note%}} ### Test the Bot After uploading the custom training data and completing the training process, you can test your bot by clicking the **Test the Bot** button in the bottom right corner, as shown in the screenshot below. You can now ask the bot any question based on the custom training data you’ve uploaded. The bot will analyze the information, correlate relevant details, and generate a well-structured and understandable response. Now, let's ask a question about our Catalyst ConvoKraft service and see how the bot responds to it. If you ask a question that is not part of the training data or beyond the bot’s understanding, it will respond with the message configured in the {{%link href="/en/convokraft/help/handlers/fallback-handler/" %}}fallback handler function{{%/link%}}. ### Delete Training Data You can delete the uploaded training data anytime directly from the Catalyst console. However, please note that once deleted, the bot will lose all learnings from that source, and you will need to re-upload the data to train it again. 1. Click the ellipsis icon next to the training material and select **Delete**. 2. In the confirmation pop-up, click **Delete**. ### Disable SmartTrain You can disable the **SmartTrain** feature if you don’t want the bot to respond to questions based on any custom training data. Disabling SmartTrain temporarily pauses its functionality, but once re-enabled, the bot will resume responding to queries using the existing training data. If you want to remove the training data permanently, be sure to delete it as explained in the previous section. 1. To disable **SmartTrain**, click the ellipsis icon, as shown in the screenshot below, and select **Disable SmartTrain**. 2. In the confirmation popup, click **Disable SmartTrain**. ### Actions -------------------------------------------------------------------------------- title: "Create an action" description: "Learn about the Catalyst ConvoKraft actions that bots can be configured to perform, such as directly responding to queries, or executing a business logic to fetch data or perform a task." last_updated: "2026-03-18T07:41:08.537Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/create-an-action/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Create an Action In this section, we will discuss the steps to create an action, configure the sample sentences and params for your ConvoKraft bot. After you {{%link href="/en/convokraft/help/bots/create-a-bot" %}}create a bot{{%/link%}}, you can add one or more {{%link href="/en/convokraft/help/actions/overview/introduction" %}}actions{{%/link%}} to it. To add a new action in your ConvoKraft bot, follow the steps given below : 1. After you create a new ConvoKraft bot or click on an existing bot, the bot's details page will be displayed as shown in the screenshot below. Click {{%bold%}}Create Action{{%/bold%}}. 2. Provide a meaningful name for the action in the pop-up that appears. You can choose to configure the response of the action with a direct answer or based on business logic. Make a selection and click {{%bold%}}Next{{%/bold%}}. ### Respond with a direct answer If you choose to configure the response of the action with a direct answer, follow the steps given below: 1. Enter the appropriate sample sentences on how this question can be asked, that is the different possible variations of the question that the user is likely to use while conversing with the ConvoKraft bot. You can learn more about {{%link href="/en/convokraft/help/actions/define-sample-sentences" %}}sample sentences{{%/link%}} from this page. Click {{%bold%}}Next{{%/bold%}}. 2. Under What's the answer section, enter the content that should be replied as an answer to the question. You can select a specific text in the answer and apply formatting styles to it by clicking the various formatting icon available in the toolbar. Learn more about the various formatting structures in detail from {{%link href="/en/convokraft/help/actions/define-bot-responses" %}}this section{{%/link%}}. {{%note%}}{{%bold%}}Note :{{%/bold%}} The answer configured here is universal and common to all users irrespective of their region and timezone.{{%/note%}} 3. Click the {{%bold%}}Preview{{%/bold%}} option in the Markdown editor toolbar to view a live preview of the content with applied formatting styles. Click {{%bold%}}Save{{%/bold%}}. ### Constructing answer by executing business logic If you choose to configure the response of the action based on the execution of a business logic, either by fetching data or performing any operation, please follow the steps listed below: 1. Define the {{%link href="/en/convokraft/help/actions/define-sample-sentences" %}}sample sentences{{%/link%}} for your action. 2. Configure the required {{%link href="/en/convokraft/help/actions/define-params" %}}params{{%/link%}} for your action. {{%note%}}{{%bold%}}Note :{{%/bold%}} You can add params only when you choose to configure your action's response based on a business logic.{{%/note%}} * To add a new param to an action: Click the {{%bold%}}New Params{{%/bold%}} option in the {{%bold%}}PARAMS{{%/bold%}} section 3. Choose the required param type from the list of data types supported by ConvoKraft and you will see a new dialog box to configure further details. Learn more about the attributes of each param type from {{%link href="/en/convokraft/help/actions/define-params/#attributes-of-a-param" %}}params{{%/link%}}. #### String We will first create a new param of type {{%badge%}}String{{%/badge%}}. You can configure the following details for the params: 1. Enter the prompt message for user input and a failure message to display in case of invalid inputs. 2. Enable Allow to skip, if required. {{%note%}}{{%bold%}}Note :{{%/bold%}} The above mentioned attributes are applicable to all param types in ConvoKraft.{{%/note%}} #### Single/Multi selection list Next, we will create another param of type {{%badge%}}Single selection list{{%/badge%}} : 1. When you configure a single selection list/multi-selection list param, you can add the applicable options by clicking the {{%bold%}}New Option{{%/bold%}} button as shown in the image below. To learn more about this param type, please refer to {{%link href="/en/convokraft/help/actions/define-params/#single-and-multiple-selection-list" %}}this page{{%/link%}}. {{%note%}}{{%bold%}}Note :{{%/bold%}} You can also allow values at runtime other than the configured values, by enabling the allow values checkbox.{{%/note%}} 2. You can also optionally configure custom button to perform further operations with the selected options by clicking the {{%bold%}}Add Button{{%/bold%}} option beside the {{%bold%}}Submission Buttons{{%/bold%}} label. The {{%bold%}}Configure Buttons{{%/bold%}} screen will appear. Enter the values for required fields of each button. To learn more about these fields, please refer to {{%link href="/en/convokraft/help/actions/define-params/#single-and-multiple-selection-list" %}}this page{{%/link%}}. To add another button, click {{%bold%}}New Button{{%/bold%}} and once the required buttons are successfully added, click {{%bold%}}DONE{{%/bold%}}. 3. Choose the Mode of input as either {{%badge%}}Textual{{%/badge%}} or {{%badge%}}Visual{{%/badge%}}, based on your requirement. 4. Associate a param with specific phrases in the sample sentences by selecting the required text. Select one of the configured params from the list shown, and associate it with the text right away. You can also click {{%bold%}}New param{{%/bold%}} to create a new param. {{%note%}}{{%bold%}}Note :{{%/bold%}} If you have not associated any param with the sample sentences, then the params will be invoked in the conversation in the exact same order in which they are defined.{{%/note%}} 5. After you configure the required sample sentences and params for the action, click Save. You can further edit the configurations by clicking on the Edit button. To learn more about viewing and managing an action, please refer to {{%link href="/en/convokraft/help/actions/manage-an-action/" %}}this page{{%/link%}}. -------------------------------------------------------------------------------- title: "Define Sample Sentences" description: "Learn about the Catalyst ConvoKraft actions that bots can be configured to perform, such as directly responding to queries, or executing a business logic to fetch data or perform a task." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/define-sample-sentences/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Define Sample Sentences ## Introduction Sample sentences are the example invocations that you add when you configure an action for your ConvoKraft bot. These sentences are conversational in nature, and can be configured based on how a user is likely to interact with your bot. You can add multiple sample sentences for a particular action. When the user interacts with the bot, the Convokraft bot looks for similar sounding invocations in the sample sentences, and triggers the corresponding action associated with the invocation. If there are no matches found with any existing configured sample sentences, the bot would respond based on the configurations made in the fallback handler. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you have chosen to develop your bot logic using {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions" %}}Deluge{{%/link%}}, refer {{%link href="/en/convokraft/help/handlers/fallback-handler" %}}this page{{%/link%}} for detailed information about fallback handler functions. If the chosen development platform is {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions" %}}Catalyst functions{{%/link%}} or {{%link href="/en/convokraft/help/actions/bot-logic/webhooks" %}}webhooks{{%/link%}}, you will have to handle the failure scenarios in your source code on your own.{{%/note%}} Sample sentences apply to all action executions, such as direct responses, as well as for business logic execution. In both cases of action executions, you will need to define sample sentences for the bot you create. * If you have chosen to configure the response based on a direct answer, then you can define the sample sentences that are likely to be used by the user in a conversational way. ConvoKraft understands the intent of the configured sample sentences using its NLP ability and when a user poses a similar query, the bot responds with the direct configured answer. * If you have chosen to configure the response to execute a business logic, then along with configuring sample sentences, any text typed in the sample sentence can be selected and marked as a {{%link href="/en/convokraft/help/actions/define-params" %}}param{{%/link%}}. The param with the value provided by the user will then be passed to the business logic for further processing. You can learn more about the implementation and usage of sample sentences while {{%link href="/en/convokraft/help/actions/create-an-action" %}}creating an action{{%/link%}}. ## Define a Sample sentence In this section, we will discuss a few example scenarios to explain the usage of sample sentences in a ConvoKraft action : Say, you are creating an action which will be invoked to respond to queries regarding the details of a particular model of a mobile phone. Based on the inputs, say a model name or number, the corresponding business logic will get executed to fetch the details of that particular model. The user might probably any questions similar to this: **"I need to know the specs of Iphone 14"** **"Iphone 13 specs"** **"Tell me everything about Iphone 14 Pro Max"** **"Tech specifications of Iphone 14"** **"Iphone SE2 technical specs"** The response to the question will be fetched based on user inputs. Say the user enquires about Iphone 14, the answer would be something like the below. <table class="content-table"> <thead> <tr> <th>Technical Spec</th> <th>iPhone 14</th> </tr> </thead> <tbody> <tr> <td>Processor</td> <td>Apple A15 Bionic</td> </tr> <tr> <td>Storage</td> <td>128GB, 256GB, 512GB</td> </tr> <tr> <td>Pixel density</td> <td>460 ppi</td> </tr> <tr> <td>Display size resolution</td> <td>6.1-inch OLED; 2,532x1,170 pixels</td> </tr> </tbody> </table> Let's consider another example where the action provides details about Zoho Corporation. In this case, the answer to the question related to Zoho will be directly configured in the action. Imagine the questions the user might ask and the different variations of them and configure them as sample sentences. Some questions can be : **"What is Zoho?"** **"What does the company Zoho Corporation do?"** **"Tell me something about Zoho Corp"** The bot would reply with the configured answer : **"Zoho Corporation is an Indian multinational technology company that makes computer software and web-based business tools. It is best known for the online office suite offering Zoho Office Suite. The company was founded in 1996 by {{%link href="https://en.wikipedia.org/wiki/Sridhar_Vembu" %}}Sridhar Vembu{{%/link%}} and Tony Thomas and has a presence in seven locations with global headquarters in Chennai, Tamil Nadu, India."** To get a more detailed understanding about the implementation and usage of sample sentences while creating an action for your ConvoKraft bot, please refer to {{%link href="/en/convokraft/help/actions/create-an-action" %}}this page{{%/link%}}. -------------------------------------------------------------------------------- title: "Define Params" description: "Learn about the usage and usecases of params while configuing actions in the ConvoKraft bot." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/define-params/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Define Params # Introduction The input data received from a user during a conversation with a bot is described as params of an action. If we consider the execution of an action analogous to filling a form, then the fields in the form can be considered as params for the action. For example, the params for an action to create an event would typically be : * Title of the event * Start time of the event * End time of the event Users can provide value to each of these params in a conversational way in their natural language. Based on the configured params for an action, ConvoKraft will automatically comprehend the intent of the message and extract the apt value of the params. {{%note%}}{{%bold%}}Note :{{%/bold%}} The conversational flow of a bot depends on the order of the defined params. After an action is detected, the bot will prompt all the unfilled params one by one with their respective prompt messages, in the order that they are defined.{{%/note%}} ConvoKraft uses its NLP ability to draw a match between the configurations being made to the action and the user's input at runtime. It will convert the user's input into a computational value as per the declared data type of the specific param. We will be discussing more about the supported data types of a param later in this page. These params will in turn be used in the business logic to perform the required operations of the bot. You can learn more about the implementation and usage of params while {{%link href="/en/convokraft/help/actions/create-an-action" %}}creating an action{{%/link%}}. {{%note%}}{{%bold%}}Note :{{%/bold%}} * Defining params will be applicable only if you have chosen to configure your action to execute a business logic. * An action can have a maximum of {{%bold%}}20 params{{%/bold%}}.{{%/note%}} ### Attributes of a param In this section, we will discuss about the various attributes of a param in detail: 1. **Param Name** A valid name for the param must comply with the following points : * Begin with lower case * Only numbers and letters are allowed * Contains a maximum of 50 characters * Must be unique for every action * The following names cannot be used as a param, as they are reserved words in ConvoKraft such as {{%badge%}}userInput{{%/badge%}}, {{%badge%}}previousParam{{%/badge%}}, {{%badge%}}additionalParams{{%/badge%}}, {{%badge%}}sessionData{{%/badge%}}, {{%badge%}}broadcast{{%/badge%}}, {{%badge%}}previousUserMsgs{{%/badge%}}, {{%badge%}}cache{{%/badge%}}, {{%badge%}}org{{%/badge%}}, and {{%badge%}}user{{%/badge%}} 2. **Param Type** You can choose the required data type for your param from the list of supported types in ConvoKraft : <table class="content-table"> <thead> <tr> <th>Data Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}String{{%/badge%}}</td> <td>A single input of type String</td> </tr> <tr> <td>{{%badge%}}Integer Number{{%/badge%}}</td> <td>A single input of type Integer</td> </tr> <tr> <td>{{%badge%}}Integer Number Range{{%/badge%}}</td> <td>Two inputs representing the start and end range of integers</td> </tr> <tr> <td>{{%badge%}}Decimal Number{{%/badge%}}</td> <td>The number of digits to be rounded off for a decimal number. The maximum precision allowed is five.</td> </tr> <tr> <td>{{%badge%}}Decimal Number Range{{%/badge%}}</td> <td>Two inputs representing the start and end range of decimals.</td> </tr> <tr> <td>{{%badge%}}Date{{%/badge%}}</td> <td>A single input of type Date</td> </tr> <tr> <td>{{%badge%}}Date Range{{%/badge%}}</td> <td>Two inputs representing the start and end range of date</td> </tr> <tr> <td>{{%badge%}}Date/Time{{%/badge%}}</td> <td>A single input of type Date/Time</td> </tr> <tr> <td>{{%badge%}}Date/Time Range{{%/badge%}}</td> <td>Two inputs representing the start and end range of Date/Time</td> </tr> <tr> <td>{{%badge%}}Boolean{{%/badge%}}</td> <td>a YES or NO input</td> </tr> <tr> <td>{{%badge%}}Email{{%/badge%}}</td> <td>A single input of type Email</td> </tr> <tr> <td>{{%badge%}}Amount{{%/badge%}}</td> <td>Amount input with currency code / currency symbol</td> </tr> <tr> <td>{{%badge%}}File{{%/badge%}}</td> <td>A file to be uploaded as user input. For this param, you can specify what file types the user can upload. The supported file types are mentioned below. </td> </tr> <tr> <td>{{%badge%}}Single selection list{{%/badge%}}</td> <td>A list of available options from which the user can select one. The details are given below.</td> </tr> <tr> <td>{{%badge%}}Multiple selection list{{%/badge%}}</td> <td>A list of available options from which the user can select more than one. The details are given below.</td> </tr> </tbody> </table> {{%note%}}{{%bold%}}Note:{{%/bold%}} * An action cannot have any date or time params if it already has a date range or time range param. * An action cannot have any integer or decimal params if it already has an integer range or decimal range param.{{%/note%}} For the file param, you can define the supported file types as follows : <table class="content-table"> <thead> <tr> <th>Formats</th> <th>Supported File Types</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}IMAGE{{%/badge%}}</td> <td>image/png, image/jpeg,image/bmp, image/tiff, image/vnd.microsoft.icon</td> </tr> <tr> <td>{{%badge%}}DOCUMENTS{{%/badge%}}</td> <td>text/plain, text/csv, application/rtf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.oasis.opendocument.text</td> </tr> <tr> <td>{{%badge%}}PDF{{%/badge%}}</td> <td>application/pdf</td> </tr> <tr> <td>{{%badge%}}PRESENTATION{{%/badge%}}</td> <td>application/mspowerpoint, application/vnd.ms-powerpoint, application/vnd.ms-powerpoint, application/vnd openxmlformatsofficedocument.presentationml .presentation, application/vnd.oasis.opendocument.presentation</td> </tr> <tr> <td>{{%badge%}}SPREADSHEET{{%/badge%}}</td> <td>application/vnd.ms-excel, application/vnd.msexcel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.oasis.opendocument.spreadsheet</td> </tr> <tr> <td>{{%badge%}}AUDIO{{%/badge%}}</td> <td>audio/mpeg , audio/wav, audio/midi, audio/x-midi, audio/aac</td> </tr> <tr> <td>{{%badge%}}VIDEO{{%/badge%}}</td> <td>video/mpeg, video/x-msvideo ,video/x-flv, video/mp4, video/quicktime</td> </tr> <tr> <td>{{%badge%}}COMPRESSION{{%/badge%}}</td> <td>application/zip, application/x-tar, application/gzip</td> </tr> </tbody> </table> ### Single and Multiple Selection List For single and multiple selection list params, you need to enter the following additional information: 1. **Options** : These are the list of available options from which the user can select either one or multiple choices. You can configure the options statically without using any code. It is recommended to give every option a distinct value that can be understood by the user. Every option has an ID, which is used to uniquely identify an option programmatically. You can either enter the ID for every option manually or use the auto-generated ID as you type in the options. A valid name and ID for the selection list options must comply with the following points: * ID only supports alphanumeric characters, hyphen and underscore * The option name can have a maximum of 150 characters * A selection list param can have up to 50 options 2. **Buttons** : Buttons represent the actions to be executed on the selected selection list options. The default action is to submit these selected selection list options, if no custom buttons are configured. The properties of a button include the following : * **Label** - The display text of the button. * **ID** - An identifier for the business logic to uniquely identify which button is chosen during conversation. * **Theme** - The colour scheme that reflects the appearance of the button in the conversation. The following three themes are supported. 1. **Positive** 2. **Negative** 3. **Neutral** A valid name and ID for the buttons must comply with the following points : * A button name and ID can include all alphanumeric and special symbols. * They can contain a maximum of 150 characters. * A selection list param can have up to three buttons. 3. **Allow values other than these options** : This option allows the user to submit their own values rather than selecting from the list of options you defined. If this option is enabled, then the IDs of such values will be set as null. 4. **Mode of Input** : This specifies the way in which a user can provide a value to the param. It can either be {{%bold%}}Textual{{%/bold%}} or {{%bold%}}Visual{{%/bold%}}. If {{%bold%}}Textual{{%/bold%}} is chosen, the user will be able to type the preferred value that they want to assign for the param. In the case of {{%bold%}}Visual{{%/bold%}}, the user has to select their input from the available visual options. The options will be displayed as a radio button (in case of single selection), check box (in case of multiple selection) or a date/time picker (in case of date/time range). 5. **Prompt Message** : The question that the bot would ask the user to get the input for the param as a part of a bot conversation with the user. For example, to get the value for the start time of an event in the create event action, the prompt message shall be set as **"What time does the event start at?"** or **"When is the event?"**. This field cannot be left empty and it must comply with the following points * It can include all alphanumeric and special symbols except #, /, \, &, *, +, = and (). * It can contain a maximum of 255 characters. For params involving a range, the Prompt message field is split into: * {{%bold%}}Start of the Range{{%/bold%}} : Prompt message to get the start value of the range. * {{%bold%}}End of the Range{{%/bold%}} : Prompt message to get the end value of the range. 6. **Prompt message on validation failure** : The custom message to be displayed to the user when the user input is found invalid for the prompted param. This field is optional. 7. **Allow to skip**: Enables the user to bypass answering a param while conversing with a bot. ### Defining a param In this section, we will discuss a few example scenarios to explain the usage of params in a ConvoKraft action: * Lets consider a scenario where the user needs to initiate a return request for an online order. The user would ask something like this : **"I would like to return my order"** **"Return my order"** **"Return this product and request refund"** You can create a param {{%badge%}}order id{{%/badge%}} to fetch the details from the user upon initiating a return request and associate the param with any phrase in your sample invocations. So that when the user enquires about the return, the bot would immediately prompt to ask the order number. * Lets discuss another scenario to schedule a meeting in the calendar. The user would type in something like this: **"Schedule a meeting in my calendar at 5pm tomorrow"** **"Add a meeting for tomorrow"** In this case, you can create params such as {{%badge%}}eventname{{%/badge%}}(String), {{%badge%}}eventtype{{%/badge%}}(Single selection list), {{%badge%}}eventdays{{%/badge%}}(Multi-selection list), {{%badge%}}eventtime{{%/badge%}}(Date/Time Range). To learn about configuring a param while creating an action for your ConvoKraft bot, please refer to {{%link href="/en/convokraft/help/actions/create-an-action" %}}creating an action{{%/link%}}. -------------------------------------------------------------------------------- title: "Define Bot Responses" description: "Learn about the Catalyst ConvoKraft actions that bots can be configured to perform, such as directly responding to queries, or executing a business logic to fetch data or perform a task." last_updated: "2026-03-18T07:41:08.538Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/define-bot-responses/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Define Bot Responses This section provides detailed information on the various response structures that can be configured in the ConvoKraft bot. You can configure responses for actions to provide direct answers or based on defined business logic. We will discuss the types of responses and their syntax in this section. ### Direct Answer Response When you {{%link href="/en/convokraft/help/actions/create-an-action/" %}}create an action{{%/link%}} that responds based on the configured direct answer, you can format the answer based on your specific needs using the options listed below. * **Bold** * **Italics** * **Underline** * **Strikethrough** * **Highlight** * **Heading** * **Bullet list** * **Numbered List** * **Image** * **Blockquote** * **Table** You can use the formatting menus right above the editor, just click on them to apply the particular format. The screenshot below depicts an answer formatted with all the applicable styles. Click on **Preview** to view the output text of the formatted response. # Respond based on a business logic When creating an action that responds based on configured business logic, you can set up various responses in the {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions/" %}}Catalyst Integration Function{{%/link%}}, {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/" %}}Deluge{{%/link%}}, or {{%link href="/en/convokraft/help/actions/bot-logic/webhooks/" %}}Webhooks{{%/link%}} using the syntaxes below. Let's explore the different types of responses and their structures in detail. ### Plain Text To send a simple text message as a response to a user query in the ConvoKraft bot, please use the below structure. #### JSON {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "message": "This is a sample message response" } {{% /code%}} #### Java {{%code class="language-java"%}}public class ExecuteHandler { public JSONObject handleExecuteRequest(JSONObject reqBody) { JSONObject jsonResponse = new JSONObject(); jsonResponse.put("message", "This is a sample message response"); } return jsonResponse; } {{%/code%}} #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}export default function handleExecute(request) { let result={}; result.message="This is a sample message response"; return result; } {{% /code%}} #### Python {{%code class="language-python" scroll="set-scroll" %}}def handle_execute_request(req_body): result = {} result['message'] = "This is a sample message response" return result {{% /code%}} The response looks like this: ### Card To configure a card response in the ConvoKraft bot, please adhere to the following structures given below. You can learn more about configuring a card response specifically in the Deluge function, from {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/deluge-object-reference/" %}}this section{{%/link%}}. **Plain Card with Title and Note** This code snippet allows you to define a simple message in the card that includes a title and a note. #### JSON {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "message": "Plain Card response", "card": [ { "type": "title", "content": "This is a card with title" }, { "type": "note", "content": "This is a card with note" } ] } {{% /code%}} #### Java {{%code class="language-java"%}}public class ExecuteHandler { public JSONObject handleExecuteRequest(JSONObject reqBody) { JSONObject jsonResponse = new JSONObject(); jsonResponse.put("card", new JSONArray() .put(new JSONObject().put("type", "title").put("content", "This is a card with title")) .put(new JSONObject().put("type", "note").put("content", "This is a card with note")));} return jsonResponse; } {{% /code%}} #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}export default function handleExecute(request) { let result={}; result.card=[]; result.card.push({ "type":"title", "content":"This is a card with title" }) result.card.push({ "type":"note", "content":"This is a card with note" }) return result; } {{% /code%}} #### Python {{%code class="language-python" scroll="set-scroll" %}}def handle_execute_request(req_body): result = {} result['card'] = [ {"type": "title", "content": "This is a card with title"}, {"type": "note", "content": "This is a card with note"} ] return result {{% /code%}} The response looks like this: #### Bullet List Card This code snippet allows you to define a bullet list within the card in the ConvoKraft response. #### JSON {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "message": "Bullet List RESPONSE", "card": [ { "type": "title", "content": "This is a title card for Bullet List" }, { "type": "list", "format": "bullet", "elements": [ { "label": "ABC" }, { "label": "DEF" } ] } ] } {{% /code%}} #### Java {{%code class="language-java"%}}public class ExecuteHandler { public JSONObject handleExecuteRequest(JSONObject reqBody) { JSONObject jsonResponse = new JSONObject(); jsonResponse.put("card", new JSONArray() .put(new JSONObject().put("type", "title").put("content", "This is a title card for Bullet List")) .put(new JSONObject().put("type", "list").put("format", "bullet").put("elements", new JSONArray() .put(new JSONObject().put("label", "ABC")) .put(new JSONObject().put("label", "DEF")))));return jsonResponse; } {{% /code%}} #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}export default function handleExecute(request) { let result={}; result.card=[]; result.card.push({ "type":"title", "content":"This is a title card for Bullet List" }) result.card.push({ "type":"list", "format":"bullet", "elements":[ { "label":"ABC" }, { "label":"DEF" } ] }); return result; } {{% /code%}} #### Python {{%code class="language-python" scroll="set-scroll" %}}def handle_execute_request(req_body): result = {} result['card'] = [ {"type": "title", "content": "This is a title card for Bullet List"}, {"type": "list", "format": "bullet", "elements": [{"label": "ABC"}, {"label": "DEF"}]} ] return result {{% /code%}} The response in the bot looks like this: #### Numbered List Card This code snippet allows you to define a numbered list within the card in the ConvoKraft response. #### JSON {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "message": "Numbered List RESPONSE", "card": [ { "type": "note", "content": "This is a note card with Numbered List" }, { "type": "list", "format": "numbered", "elements": [ { "label": "point no. 1" }, { "label": "point no. 2" } ] } ] } {{% /code%}} #### Java {{%code class="language-java"%}}public class ExecuteHandler { public JSONObject handleExecuteRequest(JSONObject reqBody) { JSONObject jsonResponse = new JSONObject(); jsonResponse.put("card", new JSONArray() .put(new JSONObject().put("type", "note").put("content", "This is a note card with Numbered List")) .put(new JSONObject().put("type", "list").put("format", "numbered").put("elements", new JSONArray() .put(new JSONObject().put("label", "point no. 1")) .put(new JSONObject().put("label", "point no. 2"))))); return jsonResponse; } {{% /code%}} #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}export default function handleExecute(request) { let result={}; result.card=[]; result.card.push({ "type":"note", "content":"This is a note card with Numbered List" }) result.card.push({ "type":"list", "format":"numbered", "elements":[ { "label":"point no. 1" }, { "label":"point no. 2" } ] }); return result; } {{% /code%}} #### Python {{%code class="language-python" scroll="set-scroll" %}}def handle_execute_request(req_body): result = {} result['card'] = [ {"type": "note", "content": "This is a note card with Numbered List"}, {"type": "list", "format": "numbered", "elements": [{"label": "point no. 1"}, {"label": "point no. 2"}]} ] return result {{% /code%}} The response in the bot looks like this: ### Link Response This code snippet allows you to send a hyperlink within the card in the ConvoKraft response. #### JSON {{%code class="language-json line-numbers" scroll="set-scroll" %}} { "message": "LINK RESPONSE", "card": [ { "type": "link", "text": "Click Here to Know about ZOHO", "content": "https://www.zoho.com" } ] } {{% /code%}} #### Java {{%code class="language-java"%}}public class ExecuteHandler { public JSONObject handleExecuteRequest(JSONObject reqBody) { JSONObject jsonResponse = new JSONObject(); jsonResponse.put("card", new JSONArray() .put(new JSONObject().put("type", "link").put("text", "Click Here to Know about ZOHO").put("content", "https://www.zoho.com"))); return jsonResponse; } {{% /code%}} #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}export default function handleExecute(request) { let result={}; result.card=[]; result.card.push({ "type":"link", "text":"Click Here to Know about ZOHO", "content":"https://www.zoho.com" }) return result; } {{% /code%}} #### Python {{%code class="language-python" scroll="set-scroll" %}}def handle_execute_request(req_body): result = {} result['card'] = [ {"type": "link", "text": "Click Here to Know about ZOHO", "content": "https://www.zoho.com"} ] return result {{% /code%}} The response in the bot looks like this: ### Table Response This code snippet allows you to display a table with populated values within the card in the ConvoKraft response. #### JSON {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "message": "TABLE RESPONSE", "card": [ { "type": "table", "heading": "Convokraft Dummy Table", "columns": [ "Name", "AGE", "CITY" ], "rows": [ [ "BOB", "25", "SFO" ], [ "Evan", "28", "NY" ] ] } ] } {{% /code%}} #### Java {{%code class="language-java"%}}public class ExecuteHandler { public JSONObject handleExecuteRequest(JSONObject reqBody) { JSONObject jsonResponse = new JSONObject(); jsonResponse.put("card", new JSONArray() .put(new JSONObject().put("type", "table").put("heading", "Convokraft Dummy Table").put("columns", new JSONArray() .put("Name").put("AGE").put("CITY")).put("rows", new JSONArray() .put(new JSONArray().put("BOB").put("25").put("SFO")) .put(new JSONArray().put("Evan").put("28").put("NY"))))); return jsonResponse; } {{% /code%}} #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}export default function handleExecute(request) { let result={}; result.card=[]; result.card.push({ "type":"table", "heading":"Convokraft Dummy Table ", "columns":[ "Name", "AGE", "CITY" ], "rows":[ [ "BOB", "25", "SFO" ], [ "Evan", "28", "NY" ] ] }) return result; } {{% /code%}} #### Python {{%code class="language-python" scroll="set-scroll" %}}def handle_execute_request(req_body): result = {} result['card'] = [ {"type": "table", "heading": "Convokraft Dummy Table", "columns": ["Name", "AGE", "CITY"], "rows": [["BOB", "25", "SFO"], ["Evan", "28", "NY"]]} ] return result {{% /code%}} The response in the bot looks like this: ### VCard Response This code snippet allows you to define contact information including the first name, last name, company name and website within the card in the ConvoKraft response. #### JSON {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "message": "VCard Response", "card": [ { "type": "vcard", "info": { "image": "https://contacts.zoho.com/file?ID=53157432", "fields": [ { "First Name": "Prashaanth" }, { "Last Name": "Ramesh" }, { "Company": "Zoho" }, { "Website": "https://www.zoho.com" } ] } } ] } {{% /code%}} #### Java {{%code class="language-java"%}}public class ExecuteHandler { public JSONObject handleExecuteRequest(JSONObject reqBody) { JSONObject jsonResponse = new JSONObject(); jsonResponse.put("card", new JSONArray() .put(new JSONObject().put("type", "vcard").put("info", new JSONObject().put("image", "https://contacts.zoho.com/file?ID=53157432").put("fields", new JSONArray() .put(new JSONObject().put("First Name", "Prashaanth")) .put(new JSONObject().put("Last Name", "Ramesh")) .put(new JSONObject().put("Company", "Zoho")) .put(new JSONObject().put("Website", "https://www.zoho.com")))))); return jsonResponse; } {{% /code%}} #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}} export default function handleExecute(request) { let result={}; result.card=[]; result.card.push({ "type":"vcard", "info":{ "image":"https://contacts.zoho.com/file?ID=53157432", "fields":[ { "First Name":"Prashaanth" }, { "Last Name":"Ramesh" }, { "Company":"Zoho" }, { "Website":"https://www.zoho.com" } ] } }) return result; } {{% /code%}} #### Python {{%code class="language-python" scroll="set-scroll" %}}def handle_execute_request(req_body): result = {} result['card'] = [ {"type": "vcard", "info": {"image": "https://contacts.zoho.com/file?ID=53157432", "fields": [{"First Name": "Prashaanth"}, {"Last Name": "Ramesh"}, {"Company": "Zoho"}, {"Website": "https://www.zoho.com"}]}} ] return result {{% /code%}} The response in the bot looks like this: ### File Response This code snippet allows you to send a file within the card in the ConvoKraft response. #### JSON {{%code class="language-json line-numbers" scroll="set-scroll" %}}{ "message": "FILE Response", "card": [ { "type": "file", "name": "SamplePDF", "format": "pdf", // File extension "content": "https://pdfobject.com/pdf/sample.pdf" } ] } {{% /code%}} #### Java {{%code class="language-java"%}}public class ExecuteHandler { public JSONObject handleExecuteRequest(JSONObject reqBody) { JSONObject jsonResponse = new JSONObject(); jsonResponse.put("card", new JSONArray() .put(new JSONObject().put("type", "file").put("name", "SamplePDF").put("format", "pdf").put("content", "https://pdfobject.com/pdf/sample.pdf")));return jsonResponse; } {{% /code%}} #### Node.js {{%code class="language-javascript" scroll="set-scroll" %}}export default function handleExecute(request) { let result={}; result.card=[]; result.card.push({ "type":"file", "name":"SamplePDF", "format":"pdf", // File extension "content":"https://pdfobject.com/pdf/sample.pdf" }) return result; } {{% /code%}} #### Python {{%code class="language-python" scroll="set-scroll" %}}def handle_execute_request(req_body): result = {} result['card'] = [ {"type": "file", "name": "SamplePDF", "format": "pdf", "content": "https://pdfobject.com/pdf/sample.pdf"} ] return result {{% /code%}} The response in the bot looks like this: -------------------------------------------------------------------------------- title: "Action Followups" description: "Learn about the Catalyst ConvoKraft actions that bots can be configured to perform, such as directly responding to queries, or executing a business logic to fetch data or perform a task." last_updated: "2026-03-18T07:41:08.539Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/action-followups/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Action Followups Action Followups define what the bot should recommend the user after executing an action, in order to engage the user further in the conversation. The bot can display a list of suggestions or ask if it should invoke another action, that might be contextually useful for the user after completing a specific action. The actions configured as follow-ups can be the same action or different actions, provided the respective actions should be configured for that corresponding ConvoKraft bot. By configuring action follow-ups, the bot can be made to proactively suggest more ways the user can interact with the ConvoKraft bot. This can facilitate the user to easily trigger the next action that would be contextually helpful, after the execution of an action. By configuring such contextually helpful actions as follow-ups, the bot will immediately display a list of predefined suggestions when the current action execution completes. When the user selects an apt suggestion, the action configured for that suggestion will be invoked as the next action. **Example :** Consider a bot that is built for a task management application. After creating a new task, it would be contextually apt to display the following as suggestions to the user: **"Start this task"**, **"Show my open tasks"**, **"Mark this task as Important"** and so on. If the user clicks on **"Mark this task as Important"**, the action to update the task status would be invoked. You can configure the action followups either directly by providing the list of actions or by fetching the actions dynamically during runtime. The action follow ups feature applies the same to actions configured to respond with a direct answer and execute a business logic. <br> ### Static Followup Suggestions If you wish to configure Action Followups statically without using any code, then please follow the steps given below : 1. Click on an existing action in the console, an Action's details page will be displayed. You can refer to {{%link href="/en/convokraft/help/actions/create-an-action/" %}}this page{{%/link%}} for creating an action. Click {{%bold%}}Add Followup Suggestions{{%/bold%}} under the Followup Suggestions section. 2. In the Followup Suggestions pop-up window, do the following: * Enter the appropriate suggestion texts in the text box under the Suggestions section. * Click the drop-down under the {{%bold%}}Mapped Actions{{%/bold%}} section and select the appropriate action to map with the given suggestion text. This will allow the action to be executed when the user clicks the suggestion. You can also add more suggestions and map them with their appropriate actions. {{%note%}}{{%bold%}}Note: {{%/bold%}} A maximum of five suggestions can be added as followup suggestions to an action.{{%/note%}} 3. Click the {{%bold%}}Update{{%/bold%}} button after configuring the required suggestion texts and their mapped actions. The configured followup suggestions will be listed under the {{%bold%}}Followup Suggestions{{%/bold%}} section. 4. To make any changes to the existing followup suggestions list, click {{%bold%}}Configure{{%/bold%}} in the Followup Suggestions section. From there, you can update them further as required. {{%note%}}{{%bold%}}Note: {{%/bold%}} If a particular action configured as a followup suggestion was deactivated/deleted, then that action will be removed from the Followup Suggestions list automatically.{{%/note%}} The follow up suggestions would appear in the chat window as shown below : <br> ### Dynamic Followup Suggestions To make your ConvoKraft bot to display a list of suggestions dynamically in runtime as a follow-up, you will need to pass them as a map value to the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function/#followup" %}}{{%badge%}}followup{{%/badge%}}{{%/link%}} key of the Execution function output, as shown below : You can also set the param values for the follow-up action so that they will not be prompted again to the user while executing that action. {{%code class="language-json"%}}{ "followup":{ "suggestions":[ { "message":"//chat suggestion that needs to be displayed to the user", "action":{ "name":"//namespace of the action that needs to be invoked", "params":[ { "name":"//param_name", "value":"//param_value" } //add other params as necessary ] } } //add other suggestions as necessary ] } } {{%/code%}} <br> ### Prompting to invoke another action In some cases, one action would be more appropriate to execute after an action rather than multiple actions. By configuring this action with the predefined suggestions as a followup, the bot would display that specific action along with a list of predefined suggestions and ask the user with a prompt message to invoke the next action. The user can select the required suggestion or reply to the prompt with an appropriate message, and proceed with the conversation further. **Example :** Consider a task management bot. The user might want to view their next task. After viewing the next task, it would be contextual to ask them, **"Would you like to start this task?"** along with the suitable suggestions for this prompt like, **"Yes, mark this task as started"**, **"No thanks"**, **"No, I'll start this task later"**. The user can select an appropriate suggestion or reply to this prompt with an appropriate message to invoke the action which would start that task. If the followup action has many params, and if you wish your bot to prompt a particular param for its value as first among other params, then you can specify that param name in the followup action's configuration. You can also set the param values for the followup action so that they will not be prompted again to the user while executing that action. {{%note%}}{{%bold%}}Note: {{%/bold%}} A maximum of five suggestions can be configured in the suggestions list.{{%/note%}} To make your ConvoKraft bot prompt the user to invoke any particular action as a followup, you must pass the action details as a map value to the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function/#followup" %}}{{%badge%}}followup{{%/badge%}}{{%/link%}} key of the Execution function output as shown in the below format : {{%code class="language-json"%}}{ "followup":{ "prompt":{ "message":"//the message that needs to be prompted to the user", "suggestions":["//suggestion_text1", "//suggestion_text2", ... "//suggestion_text5"], "reject_message":"//the message that needs to be displayed when the user replies any negative phrase to cancel the prompt", "param":"//name of the param that needs to be prompted for value at first when this action is executed", "action":{ "name":"//the namespace of the action that needs to be invoked", "params":[ { "name":"//param_name", "value":"//param_value" } //add other params as necessary ] } } } } {{%/code%}} -------------------------------------------------------------------------------- title: "Manage an action" description: "Learn about the Catalyst ConvoKraft actions that bots can be configured to perform, such as directly responding to queries, or executing a business logic to fetch data or perform a task." last_updated: "2026-03-18T07:41:08.539Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/manage-an-action/" service: "ConvoKraft" -------------------------------------------------------------------------------- # View an action An {{%link href="/en/convokraft/help/actions/overview/introduction/" %}}action{{%/link%}} is a single ability or a task that the bot performs when you give an instruction as a part of your conversation. To create an action, please refer to {{%link href="/en/convokraft/help/actions/create-an-action/" %}}this page{{%/link%}}. The created actions will be displayed under the {{%bold%}}Actions{{%/bold%}} section in the Bot's details page as shown in the screenshot below. These actions can be segregated as follows using the Actions section's filter: * **Active** : Actions that are created and available to use, which will be moved to production on clicking the deploy button. * **Inactive** : Actions that are unavailable to use in the development environment on deactivation, but are available for chat in production environment, if they are published earlier before deactivating. # Manage an action Once you have configured the required {{%link href="/en/convokraft/help/actions/define-sample-sentences" %}}sample sentences{{%/link%}} and {{%link href="/en/convokraft/help/actions/define-params" %}}params{{%/link%}} for an action, you can further edit the action from the Action's Details page as shown in the screenshot below : You can also deactivate an action of your bot by hovering over the ellipsis icon and clicking {{%bold%}} Deactivate{{%/bold%}}. -------------------------------------------------------------------------------- title: "Test an action" description: "Learn how to test an action configured for your ConvoKraft bot by simply interacting with it in conversational English." last_updated: "2026-03-18T07:41:08.539Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/test-an-action/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Test an Action To ensure that your action doesn’t have any functional issues, you have to test your action before deploying it to production. Additionally, you can also verify the user experience and ensure that it works as expected. To test your action before deploying it, you can click on {{%bold%}}Test this bot{{%/bold%}} to use the sample chat window on the right side panel of the {{%bold%}}Edit Execution Functions{{%/bold%}} page. This sample chat window would look similar to the actual chat window of your bot in the production. Using this, you can test only the current action. If the given invoking sentence is irrelevant to the current action, the bot would not be able to understand it and would reply with a message that it doesn't understand your message. {{%note%}}{{%bold%}}Note: {{%/bold%}} You can only test the current action in this window, and not all configured actions of your bot.{{%/note%}} ### Override Session Data If your functions use the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/deluge-object-reference/#sessiondata" %}}sessionData{{%/link%}} argument in its business logic, then you can test your action with different sets of mock session data using the {{%bold%}}Override Session Data{{%/bold%}} option available in the top-right corner of the chat window. For example, if you have written any code logic specific to the web client, you can set the apt session data values and mock how the logic would work, if the bot is being accessed from an actual web client in production. Once you provide apt values to the attributes and upon saving, the configured values will be passed to the {{%badge%}}sessionData{{%/badge%}} argument of the next conversation. #### Bot Logic -------------------------------------------------------------------------------- title: "Catalyst Integration Functions" description: "Learn about Catalyst Integration functions and use them to code the business logic of your ConvoKraft bot." last_updated: "2026-03-18T07:41:08.539Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/bot-logic/catalyst-integration-functions/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Catalyst Integration Functions # Introduction Catalyst Integration Functions allow you to code the business logic of other Zoho or Catalyst services, and use them as a backend to establish an integration between the two . When a particular feature is accessed in the associated service, it will automatically invoke the execution of the Integration function coded in Catalyst through a HTTP call. You can code the business logic of the backend feature of the service in the following platforms supported by Catalyst: * **Java** * **Node.js** * **Python** The business logic you build with Catalyst functions for your ConvoKraft bots is called bot logic, and it is of the Integration function type. You can {{%link href="/en/cli/v1/initialize-resources/initialize-functions/" %}}initialize a Catalyst Integration Function{{%/link%}} from the CLI, work on it in your local environment, {{%link href="/en/cli/v1/serve-resources/serve-all-resources/#serve-functions-and-basic-web-applications" %}}serve{{%/link%}} to test it, or {{%link href="/en/cli/v1/deploy-resources/deploy-functions/" %}}deploy{{%/link%}} it to the remote console. The function can then be associated with the bot you create. While using Catalyst Integration functions, you will also be able to avail of other Catalyst features that allows you to view the logs or reports of the function executions through {{%link href="/en/devops/help/logs/introduction/" %}}Catalyst Logs{{%/link%}} or {{%link href="/en/devops/help/apm/introduction/" %}}Application Performance Monitoring{{%/link%}}. You can learn more about Catalyst Integration functions in detail from {{%link href="/en/serverless/help/functions/integration-functions/" %}}this page{{%/link%}}. <br> ### ConvoKraft Integration ConvoKraft Integration functions enables you to code the business logic of your ConvoKraft bots and bundles it through the following ConvoKraft handlers : **1. {{%link href="/en/convokraft/help/handlers/welcome-message-handler" %}}Welcome Message Handler{{%/link%}}**: Enables you to configure the response to be displayed on opening a fresh chat session. **2. {{%link href="/en/convokraft/help/handlers/fallback-handler" %}}Fallback Handler{{%/link%}}**: Enables you to configure the response to be displayed when the bot fails to understand user's inputs. **3. {{%link href="/en/convokraft/help/handlers/failure-handler" %}}Failure Handler{{%/link%}}**: Enables you to configure the response to be displayed when an exception occurs in the user's message in the conversation. ### Function Structure When you create an Integration Function, Catalyst provides a boilerplate template code upon which you could build your business logic. You can use the respective templates to build your business logic in {{%bold%}}Java{{%/bold%}}, {{%bold%}}Node.js{{%/bold%}} and {{%bold%}}Python{{%/bold%}} programming environments. To learn more about the complete function directory structure for all supported stacks in Catalyst, please refer to {{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}this page{{%/link%}}. We will be discussing more about how to create an integration function in Catalyst later in {{%link href="#implementation" %}}this page{{%/link%}}. ## Java The Java file structure contains the main java file, the ExecuteHandler file which holds the core business logic of action executions, and also the other handler and configuration files. The above mentioned files and boilerplate template code will automatically be available in your functions directory, when you initialize a Java Integration Function of type {{%badge%}}ConvoKraft{{%/badge%}}, from the CLI. To learn more about initializing a Catalyst function from CLI, {{%link href="/en/cli/v1/working-with-functions/set-up-functions/" %}}refer here{{%/link%}}. Once initialization is done, you can proceed to code your bot logic, {{%link href="/en/cli/v1/serve-resources/serve-all-resources/#serve-functions-and-basic-web-applications" %}}test them locally{{%/link%}} and then {{%link href="/en/cli/v1/deploy-resources/deploy-functions/" %}}deploy the Catalyst function{{%/link%}}. ## Node.js The Node file structure contains a main function file along with the handler files, the node modules and the configuration files. The above mentioned files and boilerplate template code will automatically be available in your functions directory, when you initialize a Node.js Integration Function of type {{%badge%}}ConvoKraft{{%/badge%}}, from the CLI or the console. You can create a ConvoKraft integration function from the Catalyst console by following the steps mentioned {{%link href="#implementation" %}}here{{%/link%}}. To learn more about initializing a Catalyst function from CLI, {{%link href="/en/cli/v1/working-with-functions/set-up-functions/" %}}refer here{{%/link%}}. Once initialization is done, you can proceed to code your bot logic, {{%link href="/en/cli/v1/serve-resources/serve-all-resources/#serve-functions-and-basic-web-applications" %}}test them locally{{%/link%}} and then {{%link href="/en/cli/v1/deploy-resources/deploy-functions/" %}}deploy the Catalyst function{{%/link%}}. ## Python Similar to Java and Node.js, the Python file structure contains a main function files, handler function files, the configuration files and additionally the python module files. The {{%badge%}}requirements.txt{{%/badge%}} file contains the list of installed dependencies that are needed to implement the Catalyst Python function. You can learn more about the usage of {{%badge%}}requirements.txt{{%/badge%}} file from {{%link href="/en/cli/v1/project-directory-structure/functions-directory/#python-modules-and-function-dependencies" %}}this page{{%/link%}}. Similar to Java functions, you can initialize a python function from the Catalyst CLI. Once you initialize a Python Integration Function of type {{%badge%}}ConvoKraft{{%/badge%}}, the above mentioned files and boilerplate template code will automatically be available in the corresponding functions directory in your local environment. Once initialization is done, you can proceed to code your bot logic, {{%link href="/en/cli/v1/serve-resources/serve-all-resources/#serve-functions-and-basic-web-applications" %}}test them locally{{%/link%}} and then {{%link href="/en/cli/v1/deploy-resources/deploy-functions/" %}}deploy the Catalyst function{{%/link%}}. {{%note%}}{{%bold%}}Note :{{%/bold%}} You will not be able to code Java and Python functions from the console editor directly. You will only be able to work on Node.js functions from the editor. Alternatively, you can work on Java and Python functions {{%link href="/en/serverless/help/functions/introduction/#steps-to-work-with-functions-from-a-local-environment" %}}from a local environment{{%/link%}}, and {{%link href="#implementation" %}}upload{{%/link%}} the corresponding code bundle to the console.{{%/note%}} <br> ### Request format ConvoKraft sends the request in the following format to the Catalyst Integration function : {{%code class="language-json"%}}{ "todo": "prompt || execute || fallback || button", "bot" : "", "action" : "", "button_id" : "", "environment" : "development || production" "params":{ }, "userInput" : "", "previousParam" : "", "user" : {}, "org" : {}, "broadcast" : {}, "cache" : {}, "sessionData" : {} "clientData" : {} } {{%/code%}} <br> ### Response format ConvoKraft expects the response to be in the following format from the Catalyst Integration function, so that it understands and conveys the intended response to the user. ConvoKraft supports multiple response types for displaying content in various formats. You must ensure to follow the defined standards when configuring responses. For more information on response structures, refer to {{%link href="/en/convokraft/help/actions/define-bot-responses/" %}}this section{{%/link%}}. **Case 1**: When an input param has to be prompted to the user {{%code class="language-json"%}}{ "status" : "prompt", "prompt" : { "param_name" : "leave_type", "options":[ { "id" : "111" ,"label" : "", "image" : "image_url"}, {"id" : "112" ,"label" :"" ,"image" : "image_url"} ], "buttons" : [] }, "message" : "You don't have enough casual leaves. Please choose some other leave type.", "data" : {} } {{%/code%}} **Case 2**: When an output message has to be displayed to the user {{%code class="language-json"%}}{ "status" : "execution", "message":"Please check your screen.", "card":[], "data":{}, "broadcast":{}, "trigger":{}, "followup" : {} } {{%/code%}} There are a few restrictions to be considered with the responses received from the Catalyst Integration function, such as : * The maximum size of the response is 3 MB. * The maximum duration of request timeout is 15 seconds. If the response doesn't comply with the above guidelines, a failure message will be sent as a response to the user. <br> ### Implementation You can create a Catalyst Integration function either from the Catalyst console or CLI. Please make sure to follow the steps given below to create an Integration Function from the console. You can refer to {{%link href="/en/cli/v1/working-with-functions/set-up-functions/" %}}this page{{%/link%}}, for the steps to create a function from the CLI. 1. To create a Catalyst Integration function directly from the Catalyst console, navigate to the {{%bold%}}Serverless{{%/bold%}} icon in the left pane of the Catalyst console and click {{%bold%}}Create Function{{%/bold%}}. 2. Provide a meaningful function name and choose {{%badge%}}Integration{{%/badge%}} as the Function Type and select {{%badge%}}ConvoKraft{{%/badge%}} as the Zoho Service. You can choose to code your logic in either {{%bold%}}Java{{%/bold%}}, {{%bold%}}Node.js{{%/bold%}} or {{%bold%}}Python{{%/bold%}} programming environments. Click {{%bold%}}Create{{%/bold%}} to create a new Catalyst Integration Function. {{%note%}}{{%bold%}}Note :{{%/bold%}} You will not be able to code Java and Python functions from the console editor. You will only be able to work on Node.js functions. You can work on Java and Python functions {{%link href="/en/serverless/help/functions/introduction/#steps-to-work-with-functions-from-a-local-environment" %}}from a local environment{{%/link%}}, and upload the corresponding code bundle to the console using the {{%bold%}}File Upload{{%/bold%}} option{{%/note%}} 3. You can switch over to the {{%bold%}}Code tab{{%/bold%}} to start writing your bot's business logic. After you code the business logic, click {{%bold%}}Save{{%/bold%}}. Once you have developed the business logic of your ConvoKraft bot, you can map the appropriate Catalyst Integration Function as the development platform while {{%link href="/en/convokraft/help/bots/create-a-bot" %}}creating a bot{{%/link%}} or even later from the Bots details page. The associated Integration function will be executed on invocation of the configured actions in the bot. -------------------------------------------------------------------------------- title: "Webhooks" description: "Learn about webhooks and use them to access the business logic of your ConvoKraft bot coded in any publicly accessible external servers." last_updated: "2026-03-18T07:41:08.539Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/bot-logic/webhooks/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Webhooks # Introduction Webhooks are automated triggers initiated between two applications on occurrence of a pre-defined event. In our case, if you choose to have your business logic in any external server you can opt for webhooks as the development platform. You need to make sure that the external server is publicly accessible to ConvoKraft through a REST API. To execute the business logic, the configured Webhook URL will be hit by ConvoKraft at the corresponding invocation points during action execution. The Webhook server should comply with the below request and response formats for proper functioning of the ConvoKraft bot. ### Request Format ConvoKraft sends the request in the following format to the configured Webhook URL. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ "todo": "prompt || execute || fallback || button", "bot" : "", "action" : "", "button_id" : "", "environment" : "development || production" "params":{ }, "userInput" : "", "previousParam" : "", "user" : {}, "org" : {}, "broadcast" : {}, "cache" : {}, "sessionData" : {} "clientData" : {} }{{%/code%}} ### Response Format ConvoKraft expects the response to be in the following format from the Webhook URL, so that it understands and conveys the intended response to the user. ConvoKraft supports multiple response types for displaying content in various formats. You must ensure to follow the defined standards when configuring responses. For more information on response structures, refer to {{%link href="/en/convokraft/help/actions/define-bot-responses/" %}}this section{{%/link%}}. **Case 1**: When an input param has to be prompted to the user {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ "status" : "prompt", "prompt" : { "param_name" : "leave_type", "options":[ { "id" : "111" ,"label" : "", "image" : "image_url"}, {"id" : "112" ,"label" :"" ,"image" : "image_url"} ], "buttons" : [] }, "message" : "You don't have enough casual leaves. Please choose some other leave type.", "data" : {} }{{%/code%}} **Case 2**: When an output message has to be displayed to the user {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ "status" : "execution", "message":"Please check your screen.", "card":[], "data":{}, "broadcast":{}, "trigger":{}, "followup" : {} }{{%/code%}} There are a few restrictions to be considered with the responses received from the Webhook URLs, such as : * The maximum size of the response is 100 KB. * The maximum duration of request timeout is 5 seconds. If the response doesn't comply with the above guidelines, a failure message will be sent as a response to the user. ### Securing Webhook Calls The Webhook requests can be secured so that it can be validated by the Webhook server whether the request is originated from ConvoKraft, to avoid processing untrusted requests. ConvoKraft uses {{%link href="https://en.wikipedia.org/wiki/Digital_Signature_Algorithm" %}}Digital Signature Algorithm(DSA){{%/link%}} Cryptosystem to generate security keys, which has to be used by the Webhook server to validate the request. # Security validation flow 1. Once you opt to secure your webhook calls while {{%link href="/en/convokraft/help/bots/create-a-bot/" %}}choosing the development platform{{%/link%}}, ConvoKraft auto-generates a private key and a public key based on the DSA Cryptosystem. Both these keys are encrypted will be stored in ConvoKraft's servers and only the public key will be exposed to the developer in the Catalyst console. 2. While sending a request to the Webhook server, ConvoKraft generates a digital signature using the stored private key and sends the signature in the request header {{%bold%}}X-CONVOKRAFT-SIGNATURE{{%/bold%}}. When user types a message in the chat window, the message is encrypted with the private key and sent in the request body to the webhook server along with the digital signature in the header. 3. When the Webhook server receives this message, it makes a comparison of the received digital signature in the request and the original signature created using the encrypted public key. If there is a discrepancy found, then that means the message has been tampered. ### Implementation Once you create a bot, you can choose webhooks as the development platform and follow the below steps : 1. Enter the webhook URL of your external server in which the business logic code resides. On execution of the configured actions of the bot, this URL will be accessed. 2. You can choose to invoke the webhook URL either at the end of every user message in the conversation or whenever a particular context of the conversation ends. 3. Once bot creation is done, you will be able to view the Bots details page which lists the crucial information of your ConvoKraft bot. To view the generated public key, click the {{%bold%}}Show key{{%/bold%}} button on the Bots details page. Upon clicking the {{%bold%}}Show key{{%/bold%}} option, the {{%bold%}}Security Key{{%/bold%}} pop up will display the public key. This public key will be used in the {{%link href="/en/deployment-and-billing/environments/development-environment" %}}development environment{{%/link%}} immediately. It will be used in the {{%link href="/en/deployment-and-billing/environments/production-environment" %}}production environment{{%/link%}}, once you deploy your Catalyst project. ##### Deluge Functions -------------------------------------------------------------------------------- title: "Defining Deluge Functions" description: "Learn about Deluge functions and use them to code the business logic of your ConvoKraft bot." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Defining Deluge Functions {{%link href="https://www.zoho.com/deluge/help/" %}}Deluge{{%/link%}} is the native online scripting language of the Zoho cloud environment. You can use deluge to write your business logic and automate actions across multiple Zoho applications and also enable integration with a third-party external service. They also contain a pack of {{%link href="https://www.zoho.com/deluge/help/built-in-functions.html" %}}in-built functions{{%/link%}} to perform common tasks, using which you could quickly build your application logic and also facilitate enhanced features in your applications. Deluge has a user-friendly syntax which allows you to build powerful applications real-quick. You can seamlessly code the backend logic of your ConvoKraft bots using Deluge functions. Learn more about the data types supported by Deluge functions from {{%link href="https://www.zoho.com/deluge/help/datatypes.html" %}}this page{{%/link%}}. ConvoKraft provides the below listed pre-defined Deluge functions each with its own purpose and invocation points, to define the business logic of your bots. * {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function" %}}Execution function{{%/link%}} * {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/context-handler-function" %}}Context Handler function{{%/link%}} * {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/button-click-function" %}}Button Click function{{%/link%}} <br> ### System-Defined Input Arguments The following system defined input arguments are available for all pre-defined Deluge function types : <table class="content-table"> <thead> <tr> <th>Argument</th> <th>Deluge Data Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}sessionData{{%/badge%}}</td> <td>Map</td> <td>Contains the details of the client that is hosting the current chat session. To learn more about this argument, {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/deluge-object-reference/#sessiondata" %}}refer here{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}cache{{%/badge%}}</td> <td>Map</td> <td>A temporary storage variable which is used to pass data across functions along the action execution cycle. To learn more about this argument, {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/deluge-object-reference/#cache" %}}refer here{{%/link%}}.</td> </tr> <tr> <td>{{%badge%}}broadcast{{%/badge%}}</td> <td>Map</td> <td>A storage variable which is used to pass data across different actions, while the user is interacting with the bot. To learn more about this argument, {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/deluge-object-reference/#broadcast" %}}refer here{{%/link%}}.</td> </tr> </tbody> </table> In addition to the system-defined arguments listed above, all the static {{%link href="/en/convokraft/help/actions/define-params/" %}}params{{%/link%}} defined in the console for the action will also be available as input arguments individually for every Deluge function. ConvoKraft will populate the appropriate values for all the variables and will pass them on as input arguments for all the functions. <br> # Code Deluge Functions You can code the Deluge Functions in the in-built editor provided by ConvoKraft. We will be discussing more in detail about the editor, its usage and features in this section. ### Overview of the Code Editor The Deluge editor in ConvoKraft provides an unified experience wherein you could perform basic to complex operations all in the same place. It allows scripting by dragging tasks and dropping them onto the editor's scripting area. It provisions quick access to set variables, add info statements or comments, and also add conditional statements including if, else if and else. Additionally, the editor allows you to send notifications via email and also post as notifications to Zoho Cliq ( a communication platform powered by Zoho). You could also integrate with other Zoho services or with applications hosted in external servers using webhooks. You could create collections, insert data into collections, get data, update, delete or retrieve each element of the collection. You can learn more about the Deluge Editor from {{%link href="https://www.zoho.com/deluge/help/deluge-editor.html" %}}this page{{%/link%}}. <br> # Function Validation ConvoKraft validates the Deluge functions in the editor for its syntax and return value correctness automatically. ### Syntax Validation Syntax validation happens every time you attempt to save a Deluge function. If the syntax validation fails due to any compile time errors, the function will not be saved, and an appropriate error message will be displayed. Compile time errors include incorrect syntax, punctuation, missing variable initialization, and others. <br> ### Return Value Validation In addition to the syntax validations, the return values of the Deluge functions will also be validated for every function execution in the ConvoKraft code editor. You can learn about the defined return value format for the Deluge functions from {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function/#return-values" %}}this page{{%/link%}}. Return value validation happens when you execute the action by testing it using the bot's chat window in the console. Click on {{%bold%}}Test this bot{{%/bold%}} to start interacting with it. ConvoKraft validates the data type of the keys in the response such as {{%badge%}}message{{%/badge%}},{{%badge%}}card{{%/badge%}},{{%badge%}}broadcast{{%/badge%}} and {{%badge%}}followup{{%/badge%}}. Please make sure to mandatorily fulfil all the values in the return map of the Deluge functions for the proper functioning of your action. If your function's return value violates the specified format, an error message with the JSON element that commits the error will be displayed in the {{%bold%}}Logs{{%/bold%}} window. <br> ### Function Logs Every log contains at least one of the following labels: * **INFO** : Displays the debug and prints whatever is given in the code. * **WARNING** : Displays warning texts when something is detected as wrong or unusual. For example, the usage of any deprecated syntax in the code. Warnings will be ignored during action execution. * **ERROR** : Displays the errors that occur when code is being executed. For example, any syntax mismatch or unhandled exceptions. Errors will interrupt an action execution and an appropriate message will be thrown as a response. You can switch between the various log levels in the editor to view only the respective logs. {{%note%}}{{%bold%}}Note : {{%/bold%}} The errors committed in all functions in the flow of an action will be displayed here, alongside the errors committed in the function being executed.{{%/note%}} -------------------------------------------------------------------------------- title: "Deluge Object Reference" description: "Learn about Deluge functions and use them to code the business logic of your ConvoKraft bot." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/bot-logic/deluge-functions/deluge-object-reference/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Deluge Object Reference The Deluge Object Reference documentation aims to give a detailed idea about the various elements of the Deluge functions in ConvoKraft. The core objects supported by ConvoKraft include the data access objects, input objects, and response objects. We will be discussing each of them in detail in this section. # Data Access objects ### sessionData The details about the current chat session of the client. This data will be available for all functions under the {{%badge%}}sessionData{{%/badge%}} argument. <table class="content-table"> <thead> <tr> <th>Deluge Data type</th> <th>Availability</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}Map{{%/badge%}}</td> <td>In all functions</td> </tr> </tbody> </table> This argument comprises the following keys: <table class="content-table"> <thead> <tr> <th>Key name</th> <th>Deluge data type</th> <th>Description</th> <th>Sample value</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}medium{{%/badge%}}</td> <td>Text</td> <td>The mode of communication through which the user interacts with the bot. The possible values are {{%badge%}}call{{%/badge%}} or {{%badge%}}chat{{%/badge%}}. </td> <td>chat</td> </tr> <tr> <td>{{%badge%}}client_host{{%/badge%}}</td> <td>Text</td> <td>The nature of the client application that hosts the bot. The possible values are {{%badge%}}mobile{{%/badge%}} or {{%badge%}}web{{%/badge%}}.</td> <td>web</td> </tr> <tr> <td>{{%badge%}}client_identifier{{%/badge%}}</td> <td>Text</td> <td>The unique identifier of the client. <br> The URL of the web application, if {{%badge%}}client_identifier{{%/badge%}} is {{%badge%}}web{{%/badge%}}. <br> The package name bundle identifier of the mobile application, if {{%badge%}}client_identifier{{%/badge%}} is {{%badge%}}mobile{{%/badge%}}. </td> <td>https://zylker.com</td> </tr> <tr> <td>{{%badge%}}client_data{{%/badge%}}</td> <td>Map</td> <td>The data passed from the client to ConvoKraft at the start of the session.</td> <td>{ "user_email": "todd@hmail.com" }</td> </tr> </tbody> </table> ### cache The {{%badge%}}cache{{%/badge%}} object acts as a temporary storage variable. Any data stored in this object in the form of key-value pair will be accessible across all the functions of the currently executing action until that action execution completes. <table class="content-table"> <thead> <tr> <th>Deluge Data type</th> <th>Availability</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}Map{{%/badge%}}</td> <td>In all functions</td> </tr> </tbody> </table> ### broadcast If you want your bot to remember any information related to the current executing action, the information can be stored in the {{%badge%}}broadcast{{%/badge%}} object. This value will be retained even after the execution of the current action, and will be available for all subsequent actions until the current chat session is over. Subsequent actions can use this value, as required by business logic. <table class="content-table"> <thead> <tr> <th>Deluge Data type</th> <th>Availability</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}Map{{%/badge%}}</td> <td>In all functions</td> </tr> </tbody> </table> #### messageData The {{%badge%}}messageData{{%/badge%}} object contains the custom message sent by the client for each transcript (a message in the bot conversation) request in the {{%badge%}}data{{%/badge%}} key. <table class="content-table"> <thead> <tr> <th>Deluge Data type</th> <th>Availability</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}Map{{%/badge%}}</td> <td>In all functions</td> </tr> </tbody> </table> # Input Objects ### param The input values provided by the user for each static param would be captured under the objects with the same param name across the Deluge functions. <table class="content-table"> <thead> <tr> <th>Deluge Data type</th> <th>Availability</th> </tr> </thead> <tbody> <tr> <td>corresponding param's data type</td> <td>In Context handler function and Action execution function</td> </tr> </tbody> </table> ### previousParam The {{%badge%}}previousParam{{%/badge%}} object contains the param that was last prompted to the user. The latest reply of the user will be set as a value to this param. <table class="content-table"> <thead> <tr> <th>Deluge Data type</th> <th>Availability</th> </tr> </thead> <tbody> <tr> <td>corresponding param's data type</td> <td>Only in Context Handler function</td> </tr> </tbody> </table> # Response Objects ### card The card can be used to give a visually formatted message as a reply to the user. A card is a collection of visual elements, such as tables and images. The value of this key is a list of map objects. Each map object represents an UI element in the card. A single card may contain more than one element of the same type. Every element in the card will be displayed one below the other in the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function/#message" %}}reply message{{%/link%}}. The inline formatting options such as {{%badge%}}Bold{{%/badge%}}, {{%badge%}}Italic{{%/badge%}}, {{%badge%}}Underline{{%/badge%}}, {{%badge%}}Strikethrough{{%/badge%}}, {{%badge%}}Link{{%/badge%}}, and {{%badge%}}Highlight{{%/badge%}} are applicable to the card elements as well. So, any of these above mentioned formatting options can be used in the text values in any of the below cards. The following UI elements are supported in ConvoKraft's reply message card : <table class="content-table"> <thead> <tr> <th class="w90p">Element</th> <th class="w70p">Format</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}Note{{%/badge%}}</td> <td> {{% panel_with_adjustment header="" footer="button" %}}{ "type" : "note", "content" : "&lt;Text content that needs to be displayed as a note.&gt;" }{{% /panel_with_adjustment %}} </td> </tr> <tr> <td>{{%badge%}}Title{{%/badge%}}</td> <td> {{% panel_with_adjustment header="" footer="button" %}}{ "type" : "title", "content" : "&lt;Text content that needs to be displayed as the title&gt;" }{{% /panel_with_adjustment %}}</td> </tr> <tr> <td>{{%badge%}}List - Bullet & Numbered{{%/badge%}}</td> <td> {{% panel_with_adjustment header="" footer="button" %}}{ "type" : "list", "format" : "bullet" or "numbered" "elements" : [ { "label" : "&lt;element_label&gt;" "preview" : { "header" : { "title" : "&lt;title_content&gt;" "description" : "&lt;description_content&gt;", "subheading" : "&lt;subheading_content&gt;", "image" : { "url" :"&lt;image_url&gt;" } }, "fields" :[ { "label" : "&lt;field labels&gt;" "value" : "&lt;field values&gt;" } //add other fields as necessary ] } } //add other elements as necessary ] }{{% /panel_with_adjustment %}} {{%note%}}{{%bold%}}Note : {{%/bold%}} In the {{%badge%}}list{{%/badge%}} card, a maximum of seven fields can be configured for a {{%badge%}}preview{{%/badge%}} object. {{%/note%}} </td> </tr> <tr> <td>{{%badge%}}Table{{%/badge%}}</td> <td> {{% panel_with_adjustment header="" footer="button" %}}{ "type": "table", "heading" : "&lt;Table Heading&gt;", "columns": [ "&lt;column1 header&gt;". "&lt;column2 header&gt;" "&lt;column3 header&gt;" ], "rows": [ [ "&lt;value al&gt;" "&lt;value a2&gt;" "&lt;value a3&gt;" ], [ "&lt;value b1&gt;" "&lt;value b2&gt;" "&lt;value b3&gt;" ] ] } {{% /panel_with_adjustment %}} </td> </tr> <td>{{%badge%}}Image{{%/badge%}}</td> <td> {{% panel_with_adjustment header="" footer="button" %}}{ "type" : "image", "content" : "&lt;image url&gt;" }{{% /panel_with_adjustment %}} </td> </tr> <tr> <td>{{%badge%}}File{{%/badge%}}</td> <td> {{% panel_with_adjustment header="" footer="button" %}}{ "type" : "file", "name" : "&lt;file_name&gt;", "format" : "pdf", //file extension "content": "&lt;file url&gt;" }{{% /panel_with_adjustment %}} </td> </tr> <tr> <td>{{%badge%}}Contact card{{%/badge%}}</td> <td> {{% panel_with_adjustment header="" footer="button" %}}{ "type" : "vcard", "info" : { "image" : "<image url>", "fields" : [ { "First Name" : "Smith" }. { "Last Name" : "Gibbs" }, { "Company": "ABC Corp" }, { "Website" : "https://" } ] } } {{% /panel_with_adjustment %}} </td> </tr> <tr> <td>{{%badge%}}Link{{%/badge%}}</td> <td> {{% panel_with_adjustment header="" footer="button" %}}{ "type" : "label", "content" : "&lt;URL link&gt;" } {{% /panel_with_adjustment %}} </td> </tr> <tr> <td>{{%badge%}}Button{{%/badge%}}</td> <td> {{% panel_with_adjustment header="" footer="button" %}}{ "type" : "button", "label" : "&lt;button label&gt;". "theme" : "&lt;button theme&gt;" "id" : "&lt;button id&gt;", "onclick" : { "execute" : "function (or)clienthook", "function":"&lt;button click function name&gt;", "data" : {} } } {{% /panel_with_adjustment %}} 1. For {{%badge%}}theme{{%/badge%}} key, the value can be either {{%badge%}}positive{{%/badge%}}, {{%badge%}}negative{{%/badge%}}, or {{%badge%}}neutral{{%/badge%}}. 2. For {{%badge%}}execute{{%/badge%}} key, the value can be any one of the following: * {{%badge%}}function{{%/badge%}} - to execute the defined Button Click function. * {{%badge%}}clienthook{{%/badge%}} - to execute the {{%link href="/en/convokraft/sdk/js/hooks/" %}}hook{{%/link%}} implemented by the client application. If {{%badge%}}clienthook{{%/badge%}} is set as the value to the {{%badge%}}execute{{%/badge%}} key, then the {{%badge%}}function{{%/badge%}} key is not required. 4. For the {{%badge%}}data{{%/badge%}} key, set any value that needs to be passed to the button click function. {{%note%}}{{%bold%}}Note : {{%/bold%}} A maximum of three buttons can be configured for an action using the {{%badge%}}button{{%/badge%}} card.{{%/note%}} </td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Execution Function" description: "Learn about Deluge functions and use them to code the business logic of your ConvoKraft bot." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Execution Function # Introduction The Execution function is the endpoint of an action execution. It defines the fulfillment of an action. This handles the actual execution of the action and gives a final success or failure message to the user, after the completion of an action. The response to the user can either be text or visual elements such as a collection of cards. ### Invocation Point The Execution function is invoked at the endpoint of an action. By default, the endpoint of an action comes after all the param values are prompted and are filled with proper values. Alternatively, the endpoint can also be triggered from the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/context-handler-function" %}}context handler function{{%/link%}} {{%badge%}}{{%bold%}}(“todo” : “execute”){{%/bold%}}{{%/badge%}}. After the execution function is invoked, the action is completed and any further conversation from the user will be considered as a new action. # Input Arguments The {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/#system-defined-input-arguments" %}}system defined input arguments{{%/link%}} are only available as input arguments of the Execution function. ### Return Values The execution function returns a map in the following format: {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ “message” : “The reply message.”, “card” : { }, "broadcast" : { }, "followup" : { } }{{%/code%}} The keys present in the map returned by the execution function are explained below : ### message This gives a text message as a reply to the user and this key is mandatory. The following text formatting options are supported by ConvoKraft. Any of these options can be used in the text message. <table class="content-table"> <thead> <tr> <th>Formatting option</th> <th>Syntax</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}Bold{{%/badge%}}</td> <td>*text*</td> </tr> <tr> <td>{{%badge%}}Italic{{%/badge%}}</td> <td>_text_</td> </tr> <tr> <td>{{%badge%}}Underline{{%/badge%}}</td> <td>__text__</td> </tr> <tr> <td>{{%badge%}}Strikethrough{{%/badge%}}</td> <td>~text~</td> </tr> <tr> <td>{{%badge%}}Link{{%/badge%}}</td> <td>[label](URL_link)</td> </tr> <tr> <td>{{%badge%}}Highlight{{%/badge%}}</td> <td>`text`</td> </tr> <tr> <td>{{%badge%}}Heading{{%/badge%}}</td> <td>h1 - #Heading h2 - ##Heading h3 - ###Heading h4 - ####Heading h5 - #####Heading</td> </tr> <tr> <td>{{%badge%}}Bullet list{{%/badge%}}</td> <td>* first_item \n * second_item \n * third_item</td> </tr> <tr> <td>{{%badge%}}Numbered list{{%/badge%}}</td> <td>1. first_item \n 2. second_item \n 3. third_item</td> </tr> <tr> <td>{{%badge%}}Image{{%/badge%}}</td> <td>![alternate_text](image_URL)</td> </tr> <tr> <td>{{%badge%}}Blockquote{{%/badge%}}</td> <td>!text</td> </tr> <tr> <td>{{%badge%}}Table{{%/badge%}}</td> <td>| header1 | header2 | header3 | \n |------------|------------|------------| \n | value1 | value2 | value3 | \n | value1 | value2 | value3 |</td> </tr> </tbody> </table> The following is a sample value of the message argument : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}message : "Your event has been created successfully"{{%/code%}} ### card This gives a visually formatted message as a reply to the user. A {{%badge%}}card{{%/badge%}} is a collection of visual elements such as tables, images, and more. The value of this key is a list of map objects. Each map object represents an UI element in the card. A single card may contain more than one element of the same type. Every element in the card will be displayed one below the other in the reply message and this key is optional. To learn more about the list of UI elements that are supported in ConvoKraft's reply message {{%badge%}}card{{%/badge%}}, please refer to {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/deluge-object-reference/#card" %}}this page{{%/link%}}. The following is a sample value of the {{%badge%}}card{{%/badge%}} argument : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}"card" : { "type" : "note", "content" : "Your event details are displayed below" { "type" : "image", "image" : "event_details.png" } //add map objects } {{%/code%}} ### broadcast This will pass any data that the bot must remember after executing the current action. The value should be in map format and it would be available for all consecutive actions throughout the session. This key is optional. You can learn more about broadcast from {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/deluge-object-reference/#broadcast" %}}this page{{%/link%}}. The following is a sample value of the {{%badge%}}broadcast{{%/badge%}} argument. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}"broadcast" : { "user_level" : "admin", "status" : "booked" } {{%/code%}} ### followup You can configure if the bot should display a list of suggestions or prompt the user to invoke any particular action as a followup, after completing the current action's execution. This key is optional. Learn more about Action Followups and the structure of this key's value from {{%link href="/en/convokraft/help/actions/action-followups" %}}this page{{%/link%}}. The following is a sample value of the {{%badge%}}card{{%/badge%}} argument : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}"followup":{ "suggestions":[ { "message":"Would you like to set a reminder for this event", "action":{ "name":"schedule remainder", "params":[ { "name":"event time", "value":"11:00 am" } //add other params as necessary ] } } {{%/code%}} ### Implementation Once you {{%link href="/en/convokraft/help/actions/create-an-action" %}}create an action{{%/link%}} for your ConvoKraft bot and choose to configure the response based on a business logic, you must define the sample sentences and respective params for it. Please make sure to follow the below listed steps to implement the Execution function : 1. After you configure and save the required {{%link href="/en/convokraft/help/actions/define-sample-sentences/" %}}sample sentences{{%/link%}} and {{%link href="/en/convokraft/help/actions/define-params/" %}}params{{%/link%}} for an action, the Action's details page will be displayed. Switch to Functions tab and click {{%bold%}}Edit Function{{%/bold%}} in the {{%bold%}}Execution function{{%/bold%}} section. 2. The ConvoKraft Deluge editor will be opened where you can code your business logic and save the script. Learn more about the Deluge editor from {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/#overview-of-the-code-editor" %}}this page{{%/link%}}. You can test the changes parallely using {{%link href="/en/convokraft/help/manage-a-bot/test-a-bot/" %}}Test this bot{{%/link%}} feature. -------------------------------------------------------------------------------- title: "Context Handler Function" description: "Learn about Deluge functions and use them to code the business logic of your ConvoKraft bot." last_updated: "2026-03-18T07:41:08.540Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/bot-logic/deluge-functions/context-handler-function/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Context handler function # Introduction The Context handler function is used to control the conversational flow of an action. You can change the order in which the params are prompted to the users in runtime. You can also skip some params, do custom validations of the param values, and also ask for a confirmation before action execution in the runtime. The Context handler function can override the order in which the static params are defined. If the context handler function is enabled, the bot will prompt the parameters in the order as dictated by the context handler function and not by the order you have declared while defining the params in the Catalyst console. {{%note%}}{{%bold%}}Note:{{%/bold%}} The Context Handler function can be used only if you have chosen the developement platform of your ConvoKraft bot to be {{%badge%}}{{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/" %}}Deluge{{%/link%}}.{{%/note%}}{{%/badge%}} ### Invocation Point Once ConvoKraft detects the action of the user input, the possible param values that are present in the user input will be detected, then the bot will prompt the first missing param to the user. When a user replies to the param prompt, ConvoKraft will invoke the context handler function. The context handler function is invoked for every param that is prompted in the conversation. If an action doesn’t have any params, the context handler function will be executed once before the execution function. ### Input Arguments In addition to the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/#system-defined-input-arguments" %}}system defined{{%/link%}} input arguments, the following input arguments are also available for the Context handler function : <table class="content-table"> <thead> <tr> <th>Argument</th> <th>Deluge data type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}userInput{{%/badge%}}</td> <td>String</td> <td>Latest reply from the user</td> </tr> <tr> <td>{{%badge%}}previousParam{{%/badge%}}</td> <td>Map</td> <td>The param that is last prompted to the user. The latest reply of the user is a value to this param.</td> </tr> </tbody> </table> ### Return Value The Context handler function returns a map in the following format : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ "todo":"prompt", "prompt":{ "param_name":"&lt;name of the param to be prompted&gt;", "prompt_msg":"&lt;the text to be displayed as a prompt message&gt;", "validation_failure_message":"&lt;the text to be displayed if the user submits invalid input&gt;", "options":[ ], "buttons":[ ], "fields":[ ], }, "confirm":{ "message":"Are you sure you want to cancel?" }, "assign":{ "clientData":{ "&lt;key1&gt;":"&lt;value1&gt;", "&lt;key2&gt;":"&lt;value2&gt;" //add the client data as necessary } } }{{%/code%}} As depicted above, the following keys can be present in the map returned from the Context handler function : ### todo This key is used to indicate what a Convokraft bot should do after the execution of the context handler function. It can only take one of the following values. Also, please note that this key is mandatory. * **prompt** : Instructs the bot to prompt a param to the user. * **confirm** : Instructs the bot to ask for a final confirmation for invoking the Execution function of the action. * **execute** : Instructs ConvoKraft to invoke the Execution function. ### prompt This key contains a map that specifies what param is to be prompted to the user and is used only if {{%badge%}}todo{{%/badge%}} is set as {{%badge%}}prompt{{%/badge%}}. If this key is not provided even if {{%badge%}}todo{{%/badge%}} is set as {{%badge%}}prompt{{%/badge%}}, the bot will prompt the next param as per the order of the params defined in the console. Thus this key can be skipped if we have to use the default order of the params definition. The map value of this key contains the following attributes : 1. **param_name** : The name of the param to be prompted. The param name must be one of the existing params defined in the console. 2. **prompt_msg** : This can be used to override the prompt message of the param defined while creating the param in the Catalyst console. **validation_failure_message**- The custom message to be displayed if the input given by the user is invalid for the prompted param. This key is optional. 3. **options** : The list of options of the single and multiple selection list params, from which the user can make a choice. * **id** : The unique ID of the option. * **label** : The text to be displayed as the option's label. * **preview** : The additional information to be displayed for options in the single and multiple selection list params. Option previews will be available only when the input mode of the single and multiple selection list params is {{%badge%}}Visual{{%/badge%}}. The preview key is optional. * **header** : The header lists the properties of the single and multiple selection list param options. The header object should contain the following attributes in the below format : {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}{ "id":"&lt;the unique id for the option&gt;", "label":"&lt;the text to be displayed as the options label&gt;", "preview":{ "header":{ "title":"&lt;the text to be displayed as the option previews title&gt;", "description":"&lt;the text to be displayed as the option previews description&gt;", "subheading":"&lt;the text to be displayed as the subheading to the options preview&gt;", "image":{ "url":"&lt;the url of the preview image&gt;" } } } }{{%/code%}} If the {{%badge%}}header{{%/badge%}} object is configured with these appropriate attributes for the options, then the preview will be displayed when the user clicks the info icon on each option. When you click on the info icon, the configured image, name and URL would be displayed. * **fields** : The fields object lists the additional properties about the options. The {{%badge%}}fields{{%/badge%}} object must contain the following attributes in the below format. This is mandatory only if the preview is configured. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}[ { "label":"&lt;the text to be displayed as the field name&gt;", "value":"&lt;the text to be displayed as the field value&gt;" } ]{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} A maximum of seven fields can be configured for an option.{{%/note%}} The key elements of the {{%badge%}}preview{{%/badge%}} key are, {{%badge%}}header{{%/badge%}} and {{%badge%}}fields{{%/badge%}}. If the {{%badge%}}fields{{%/badge%}} object is configured along with {{%badge%}}preview{{%/badge%}} key, then the appropriate previews will be displayed when the user hovers on the respective options and there will be no info icon displayed in this case. 4. **buttons** : Buttons are used to configure the operations to be performed on the options defined in the single and multiple selection list params. The {{%badge%}}buttons{{%/badge%}} key should contain the following attributes in the below format. {{%code class="language-javascript line-numbers" scroll="set-scroll" %}}[ { "id":"the unique id for the button", "label":"the text to be displayed as the button's label", "theme":"&lt;positive | neutral | negative&gt;" } ]{{%/code%}} {{%note%}}{{%bold%}}Note : {{%/bold%}} Single and Multiple selection list params can have up to 3 buttons.{{%/note%}} ### confirm This contains a Map that specifies the confirmation message for action execution that should be prompted to the user. It is mandatory only if {{%badge%}}todo{{%/badge%}} is set as {{%badge%}}confirm{{%/badge%}}. The map value can contain only the below listed key : * **message** : The confirmation message that should be prompted to the user. ### assign The value of the assign key is of type Map. This can be used to change the values of all the static params and the system defined arguments in runtime. * **clientData** : Used to update the client data values based on the session data in runtime. ### Implementation Once you {{%link href="/en/convokraft/help/actions/create-an-action" %}}create an action{{%/link%}} for your ConvoKraft bot and choose to configure the response based on a business logic, you must define the sample sentences and respective params for it. Please make sure to follow the below listed steps to implement the Context handler function : 1. After you configure and save the required {{%link href="/en/convokraft/help/actions/define-sample-sentences/" %}}sample sentences{{%/link%}} and {{%link href="/en/convokraft/help/actions/define-params/" %}}params{{%/link%}} for an action, the Action's details page will be displayed. Switch to Functions tab and enable the {{%badge%}}Context Handler function{{%/badge%}}. 2. You will be prompted with below message, Click OK to proceed. 3. The ConvoKraft Deluge editor will be opened where you can code your business logic and save the script. Learn more about the Deluge editor from {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/#overview-of-the-code-editor" %}}this page{{%/link%}}. You can test the changes parallely using {{%link href="/en/convokraft/help/manage-a-bot/test-a-bot/" %}}Test this bot{{%/link%}} feature. -------------------------------------------------------------------------------- title: "Button Click Function" description: "Learn about Deluge functions and use them to code the business logic of your ConvoKraft bot." last_updated: "2026-03-18T07:41:08.541Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/bot-logic/deluge-functions/button-click-function/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Button Click Functions # Introduction ConvoKraft allows you to configure custom buttons in the responses while interacting with the user alongside the default Submit button. When you define {{%link href="/en/convokraft/help/actions/define-params/#single-and-multiple-selection-list" %}}Single/Multi selection list{{%/link%}} params for an action, if you need to perform further custom operations using the selected options as input, you can code the logic in Button click functions. These buttons can be created by defining the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/deluge-object-reference/#card" %}}{{%badge%}}button{{%/badge%}}{{%/link%}} card in the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function" %}}Execution function{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} 1. The Button Click Function can be used only if you have chosen the developement platform of your ConvoKraft bot to be {{%badge%}}{{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/" %}}Deluge{{%/link%}}.{{%/badge%}} 2. You can configure a maximum of three Button Click functions for an action. {{%/note%}} ### Invocation Point Once the custom buttons configured in the Execution Handler response is clicked, the corresponding Button Click function configured for that button would be invoked. ### Input Arguments In addition to the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/#system-defined-input-arguments" %}}system defined input arguements{{%/link%}}, the below listed input argument is also available for the Button Click Function : <table class="content-table"> <thead> <tr> <th>Argument</th> <th>Deluge data type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}data{{%/badge%}}</td> <td>Map</td> <td>The value set to the {{%badge%}}data{{%/badge%}} key for the {{%badge%}}button{{%/badge%}} card in the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function" %}}Execution function{{%/link%}} </td> </tr> </tbody> </table> ### Return Value Button click function returns a map in the following format : {{%code class="language-json"%}}{ “message” : “The reply message.”, “card” : { }, "broadcast" : { }, "followup" : { } } {{%/code%}} To learn more about the keys returned by the Button Click Function, please refer to {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function/#return-values" %}}this page{{%/link%}}. ### Implementation Once you {{%link href="/en/convokraft/help/actions/create-an-action" %}}create an action{{%/link%}} for your ConvoKraft bot and choose to configure the response based on a business logic, you must define the sample sentences and respective params for it. Please make sure to follow the below listed steps to implement the Button Click function : 1. When you create an action, you will need to configure the required {{%link href="/en/convokraft/help/actions/define-sample-sentences/" %}}sample sentences{{%/link%}} and {{%link href="/en/convokraft/help/actions/define-params/" %}}params{{%/link%}} for it. Click on {{%badge%}}New param{{%/badge%}} and select {{%badge%}}Single/Multi selection list{{%/badge%}}. 2. In the param dialog box, under Submission Buttons, click {{%badge%}}Add Button{{%/badge%}} to create a new custom button. 3. Provide a meaningful action name for your button as {{%badge%}}Label{{%/badge%}} and define a name that has to referenced in your Execution function for this custom button as {{%badge%}}Id{{%/badge%}}. 4. When you save the changes made to the sample sentences and params, you will be able to view the Functions tab. Under Button Click Functions, the custom button you have created will appear. Click on {{%badge%}}Edit Function{{%/badge%}} to code the business logic of the button invocation. You could also create new functions by clicking on {{%badge%}}Add Function.{{%/badge%}} 5. Start writing your logic in the ConvoKraft Deluge editor and save the script once done. The editor also allows you to switch between functions right away. Click on the {{%badge%}}Test this Bot{{%/badge%}} button to interact with the bot and validate the changes you made. To learn more about the elements and usage of ConvoKraft editor, please refer to {{%link href="https://www.zoho.com/deluge/help/deluge-editor.html" %}}this page{{%/link%}}. #### Overview -------------------------------------------------------------------------------- title: "Introduction" description: "Learn about the Catalyst ConvoKraft actions that bots can be configured to perform, such as directly responding to queries, or executing a business logic to fetch data or perform a task." last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/overview/introduction/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Actions - Introduction ### Overview An action is a single ability or a task that the bot performs when you give an instruction as a part of your conversation. For example, you can ask the bot to fetch your appointments for the day or ask it to schedule a meeting in your calendar. To complete an action, the bot can prompt a few questions that are necessary to fulfil the action. For example, the conversation of a typical schedule meeting action looks like: {{%bold%}}User{{%/bold%}} : Schedule a meeting to discuss about the Zylker deal by 11 AM tomorrow. <br> {{%bold%}}ConvoKraft Bot{{%/bold%}} : Sure, when would the meeting get over? <br> {{%bold%}}User{{%/bold%}} : By 12 PM. <br> {{%bold%}}ConvoKraft Bot{{%/bold%}} : Where is the meeting happening? <br> {{%bold%}}User{{%/bold%}} : At the headquarters. <br> {{%bold%}}ConvoKraft Bot{{%/bold%}} : Okay, I have added the meeting to your calendar. Hence, an action is not necessarily a single message exchange between the user and the bot. It can have multiple messages exchanged between the user and the bot to achieve a single task. In the above mentioned example, the bot would schedule a meeting by executing the configured business logic. <br> ### Types of Actions Based on the intention, actions can be classified into two types : #### Directly answer a question These actions give a direct answer to a static question asked without performing any operation or executing a business logic. They would typically get over with a single conversational exchange and they will be universal, such that their answers would be the same across users, time zones, regions or any parameters. **Example Question : What is ConvoKraft?** The response to this question would be straightforward and the same to any user asking the question, without involving any specific business logic. You can configure these actions by defining relevant {{%link href="/en/convokraft/help/actions/define-sample-sentences" %}}sample sentences{{%/link%}} for the actions and the answers to specific questions. When the user interacts with the ConvoKraft bot, the bot would look for these configured actions and if there is a match with the user's query, it would respond with the direct configured answer. #### Execute a business logic These actions will instruct the bot to dynamically construct the answer for the user input by fetching relevant data from the specified data sources. This involves executing business logic specific to the action, and the answer may vary based on the data and the logic executed. The business logic execution can involve performing specified operations, typically to fetch, add, modify, or delete some data in a particular data source. The conversation may also extend to multiple messages to gather more inputs, depending on the complexity of the business logic. You can configure these actions by defining applicable {{%link href="/en/convokraft/help/actions/define-sample-sentences" %}}sample sentences{{%/link%}} and the relevant {{%link href="/en/convokraft/help/actions/define-params" %}}params{{%/link%}} for the actions of your ConvoKraft bot. **Example Questions :** 1. **What is in my schedule today?** To answer this question, the bot would fetch data from your calendar and would construct its answer depending on the data being fetched. 2. **Schedule a meeting** To schedule a meeting, the bot would prompt and get the relevant input data from the user and would create an event in your calendar. ### Action execution flow 1. Whenever a bot receives a user input, ConvoKraft tries to understand it to detect the intention of the user input. When you {{%link href="/en/convokraft/help/manage-a-bot/train-a-bot" %}}train a bot{{%/link%}}, the configured actions will be used by ConvoKraft to form new NLP models and enhance the existing models that help boost the intellectual ability of the bot to comprehend the intention of every action. 2. The bot would look for the configured sample sentences defined for the action. If the intention of the user input matches with any of the intentions of the configured actions, then the bot might prompt the user for more information to associate values for the params that are required to fulfil that action through a business logic, or might provide a direct response in the form of a conversation. 3. If the user asks to perform a task which doesnt have a match with any of the actions of the bot, then it would respond based on the logic configured in the {{%link href="/en/convokraft/help/handlers/fallback-handler" %}}Fallback message handler{{%/link%}} function. 4. Based on the configured business logic, ConvoKraft will either invoke the {{%link href="/en/convokraft/help/actions/bot-logic/webhooks" %}}Webhook URL{{%/link%}}, the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions" %}}Deluge Function{{%/link%}}, or the {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions" %}}Catalyst Integration Function{{%/link%}} associated with the particular action, which in turn will execute the logic. 5. Finally, the response to the action is sent as a reply to the user in the ConvoKraft bot conversationally. -------------------------------------------------------------------------------- title: "Action Models" description: "Learn about the Catalyst ConvoKraft actions that bots can be configured to perform, such as directly responding to queries, or executing a business logic to fetch data or perform a task." last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/actions/overview/models/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Action Models A ConvoKraft bot can be configured to perform actions while conversing with the user. An action of a bot is characterized by its {{%link href="/en/convokraft/help/actions/define-sample-sentences" %}}sample sentences{{%/link%}}, {{%link href="/en/convokraft/help/actions/define-params" %}}params{{%/link%}}, and {{%link href="#bot-logic" %}}bot logic{{%/link%}}. The actions configured to respond with a direct answer is defined with its relevant sample sentences. On the other hand, the actions that execute bot logic, may require user inputs for performing certain operations, which requires you to set params for the actions along with the sample sentences. ### Sample sentences Sample sentences are the example invocations that end users would say to invoke a particular action in their conversational language. These sample sentences help to enhance ConvoKraft's intelligence in understanding a user input better. Listed below are a few typical sample sentences that can be configured to create an event : * **"Create an event"** * **"Schedule a meeting"** Practically, users would speak out data as part of invoking instructions, so sample sentences may also include certain param values. As in the examples below, a user may mention the event title, start time, and end time as a part of their initial invoking sentence while trying to schedule an event. * **"Create an event from 5 PM to 6 PM to discuss about the Zylker deal."** * **"Schedule a meeting with John at 5 PM."** If the invoking sentence does not contain all the required params, the bot will prompt the user for those required param values. The sample sentences define the intention of a particular action, and the params define the entities that would be required to fulfil that action. Thus, the data model of any ConvoKraft action is attained using the combination of sample sentences and params. To learn more about sample sentences and their significance in action configuration, refer to {{%link href="/en/convokraft/help/actions/define-sample-sentences" %}}this page{{%/link%}}. ### Params Params are the input data required to fulfil or execute an action. For example, the params of an action configured to create an event in your calendar would typically be the event title, start time, end time, event venue, and more. To learn more about params and their types, {{%link href="/en/convokraft/help/actions/define-params/#attributes-of-a-param" %}}refer here{{%/link%}}. ### Bot logic The conversational flow and execution of an action depends upon the business logic (or bot logic) defined for it. ConvoKraft supports the following development platforms to define the bot logic of an action : * {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions" %}}Catalyst Functions{{%/link%}} * {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions" %}}Deluge Functions{{%/link%}} * {{%link href="/en/convokraft/help/actions/bot-logic/webhooks" %}}Webhooks{{%/link%}} All the declared params of an action are passed to the business logic to execute the action. In addition to the declared params, other environmental data (such as details about the user or the client application) that would be needed to execute the business logic will also be passed as input arguments to these functions. 1. **Catalyst Functions** Catalyst Functions are custom-built coding structures which contains the intense business logic of your Catalyst application. Catalyst Integration functions allows you to code and use a Catalyst function as a backend of other Catalyst or Zoho services and establish an integration with them. When you invoke the action in ConvoKraft, it would automatically invoke the configured integration function through a HTTP call. While using Catalyst Functions, your business logic can be defined in the following programming environments: * **{{%link href="/en/sdk/java/v1/overview" %}}Java{{%/link%}}** * **{{%link href="/en/sdk/nodejs/v2/overview" %}}Node.js{{%/link%}}** * **{{%link href="/en/sdk/python/v1/overview" %}}Python{{%/link%}}** You can {{%link href="/en/serverless/help/functions/implementation/" %}}create a Catalyst Function{{%/link%}} by navigating to the Serverless service in your console or even use the {{%link href="/en/cli/v1/working-with-functions/set-up-functions/" %}}Catalyst CLI{{%/link%}} to create and code your functions from the local environment. Catalyst functions are highly scalable and efficient. The server infrastructure upon which the functions are hosted is entirely handled by Catalyst eliminating the need for you to manage the backend and enabling you only to work on developing the business logic. In addition to providing powerful backends for your applications, Catalyst functions are robust and reliable in nature, providing a seamless integration with ConvoKraft. To learn more about using Catalyst functions to define the business logic of your ConvoKraft actions, {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions" %}}refer here{{%/link%}}. 2. **Deluge Functions** {{%link href="https://www.zoho.com/deluge/help/" %}}Deluge{{%/link%}} is the native online scripting language of the Zoho cloud environment. It has a user-friendly syntax allowing seamless integration between two Zoho services, or with a third party service. The business logic of the ConvoKraft actions must be written in Deluge through the following pre-defined function templates: * {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function" %}}{{%bold%}}Execution{{%/bold%}}{{%/link%}} (mandatory) : This is the core function involved in execution of all the actions of a ConvoKraft bot. * {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/context-handler-function" %}}{{%bold%}}Context Handler{{%/bold%}}{{%/link%}} (optional) : This function is invoked for every user input during an action. It can be used to change the order of params in the conversational flow, skip them if required, or even perform custom validations. * {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/button-click-function" %}}{{%bold%}}Button Click{{%/bold%}}{{%/link%}} (optional) : This function can be used while defining a {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/deluge-object-reference/#card" %}}button card's{{%/link%}} business logic. This is a part of the execution function type that focuses on the implementation of custom buttons. These functions are hosted in the Zoho cloud and will be executed at their respective invocation points during an action execution. Similar to Catalyst functions, Deluge functions are also highly efficient, and their hosting and maintenance are fully handled by Zoho. You can learn more about using Deluge functions to define the business logic of your ConvoKraft actions {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/" %}}here{{%/link%}}. 3. **Webhooks** In the case of webhooks, you can code the backend logic in an external platform and invoke it through the webhooks configured within ConvoKraft. The business logic of the actions must be built, managed, and hosted externally in a publicly hosted server that is accessible to ConvoKraft. You will be required to use REST APIs to access the logic from the bots you build. The configured Webhook URL will be invoked by ConvoKraft at the appropriate invocation points during the action execution. While using webhooks, your business logic can be defined in any convenient programming language of your choice. But on the contrary to Deluge and Catalyst functions, when using webhooks, you will have to manage the infrastructure setup and configuration completely from your end. Learn more about using webhooks to define the business logic of your ConvoKraft actions from {{%link href="/en/convokraft/help/actions/bot-logic/webhooks" %}}this page{{%/link%}}. ### Bots -------------------------------------------------------------------------------- title: "Introduction" description: "Learn about the Catalyst ConvoKraft bots that provide conversation assitance to your application's end users." last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/bots/introduction/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Bots - Introduction ### Overview ConvoKraft bots are the conversational assistants you build to serve as the conversational interface of your Catalyst application. Technically, bots are instances you create in the ConvoKraft service, intact with their Natural Language Understanding (NLU) and conversational abilities. You can create a bot for your Catalyst application from the {{%link href="https://console.catalyst.zoho.com/baas/index" %}}Catalyst console{{%/link%}}. You will need to configure the set of tasks to be performed by your bot as {{%link href="/en/convokraft/help/actions/overview/introduction" %}}actions{{%/link%}}. A ConvoKraft bot can be configured to perform actions while conversing with the user. The responses of each action can be based on your application's specific needs. Each action can be configured to respond either with a direct answer or execute a business logic in your application. You can choose to develop the business logic of your ConvoKraft bots using any one of the following platforms: * {{%bold%}}Catalyst Integration Functions{{%/bold%}}: {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions" %}}Catalyst Serverless Integration Functions{{%/link%}} are custom-built coding structures, which is hosted in Catalyst servers. Refer {{%link href="/en/serverless/help/functions/integration-functions/" %}}here{{%/link%}} to learn more about Catalyst Integration functions. * {{%bold%}}Deluge{{%/bold%}}: {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions" %}}Deluge{{%/link%}} is Zoho's native online scripting language, which is hosted in Zoho's cloud environment. Refer {{%link href="https://www.zoho.com/deluge/help/" %}}here{{%/link%}} to learn more about Deluge. * {{%bold%}}Webhooks{{%/bold%}}: {{%link href="/en/convokraft/help/actions/bot-logic/webhooks" %}}Webhooks{{%/link%}} are call-back functions that can be used to access your custom server endpoints when specific actions are invoked by the bot. You can also choose to secure your Webhook URLs, if required. You can create multiple ConvoKraft bots for your application, as per your requirements. After configuring the required actions for the ConvoKraft bot, it will be able to respond to conversations using its native conversational abilities, and perform required tasks based on its understanding of the configured actions. <br> ### Abilities of a ConvoKraft bot A Catalyst ConvoKraft bot has the following in-built abilities by default: * **Intent parsing**: Understanding the intention of a sentence to perform the required action. * **Context maintenance**: Understanding the relation between a sentence and its previous or next sentence. * **Entity extraction**: Extracting information as programmable data from a conversational sentence. These native abilities complement the custom abilities or {{%link href="/en/convokraft/help/actions/overview/introduction" %}}actions{{%/link%}} in every bot built using the ConvoKraft service. <br> ### Workflow of a ConvoKraft bot After you {{%link href="/en/convokraft/help/bots/create-a-bot" %}}create a Convokraft bot{{%/link%}}, you will need to configure the required actions for it based on the different usecases of your application. Then the bot can respond to all user messages related to that particular action. When an input message is received, ConvoKraft will compare the input message with the sample invocations of the configured actions of the bot. If the message doesn't seem to match with any of the configured actions, the bot will respond that it cannot understand the message. If ConvoKraft was able to match the input message with a pre-configured action of the bot, it will prompt for user data required to fulfil that action as an input, in a conversational way. For example, if you are trying to book an event, the bot may prompt questions to get the details, such as the name of the event, start time, end time, and location. After all the required data is fetched as input, ConvoKraft will execute the business logic defined for that action or respond with an direct answer, depending on the response configured for that action. -------------------------------------------------------------------------------- title: "Create a Bot" description: "Learn about the Catalyst ConvoKraft bots that provide conversation assitance to your application's end users." last_updated: "2026-03-18T07:41:08.543Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/bots/create-a-bot/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Create a Bot The first step in working with the ConvoKraft service is creating a bot. You can create a bot and add appropriate {{%link href="/en/convokraft/help/actions/create-an-action" %}}actions{{%/link%}} to it from the Catalyst console. Please follow the below steps to create a new ConvoKraft bot. 1. Click the **ConvoKraft icon** in the left navigation pane of the {{%link href="https://console.catalyst.zoho.com/baas/index" %}}Catalyst console{{%/link%}} in your project and navigate to the service. This will open the *Bots* page. 2. Click **Create New Bot**. 3. In the pop-up, provide a name for the bot. You can also add a short description and an icon for the bot, optionally. 4. Click **Save**. Upon the successful creation of the bot, you will be redirected to the Bot's details page. You can further edit the bot or add actions for the bot from this page. Now, you will need to choose one of the following development platforms to build your business logic: {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions" %}}Catalyst Integration Functions{{%/link%}}, {{%link href="/en/convokraft/help/actions/bot-logic/webhooks" %}}Webhooks{{%/link%}}, or {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions" %}}Deluge{{%/link%}}. * If you choose to code your business logic using Catalyst Integration functions, then select **Function** and associate the required Catalyst Function with the ConvoKraft bot from the drop-down list. All functions of the type **Bot Logic** present in your project will be listed here. You can also choose to invoke the function at the end of an action or right after every message exchange in the conversation. You can learn more about using Catalyst Integration functions, from {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions" %}}this page{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} You will need to create and configure the Catalyst Integration function for your bot beforehand. You can then associate the bot with the function.{{%/note%}} * If you choose to code your business logic independently and host it in any external public server that is accessible by ConvoKraft, then select **Webhook**. Please make sure you plug in the valid URL of the endpoints of your server. Similar to Catalyst Integration functions, you can choose to invoke the webhook at the end of every action or after every message in the bot conversation. You can also choose to secure your webhook calls, if required. To know more about the usage of webhooks in detail, please refer to {{%link href="/en/convokraft/help/actions/bot-logic/webhooks/" %}}this page{{%/link%}}. * If you choose to code your business logic in {{%link href="https://www.zoho.com/deluge/help/" %}}Deluge{{%/link%}}, select **Deluge**. You will be provided with an in-built code editor in the console to code your Deluge functions. To learn more about the usage of Deluge functions and the editor, please refer to {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions" %}}this page{{%/link%}}. After you make a selection, click **Save**. After the ConvoKraft bot is created, you can configure the actions that the bot needs to perform. ### Handlers -------------------------------------------------------------------------------- title: "Welcome Message Handler" description: "Learn about the Welcome message handlers that allows you to configure the greeting responses of your ConvoKraft bot." last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/handlers/welcome-message-handler/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Welcome Message Handler # Introduction When a ConvoKraft bot is opened by the user for a fresh chat session, the bot will reply with a welcome message. If you wish to customize this default response message to give a reply of your own, you can configure it in the Welcome Message handler function. The Welcome message handler function returns a map whose structure is similar to the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function/#return-values" %}}return map{{%/link%}} of an Execution function. {{%note%}}{{%bold%}}Note :{{%/bold%}} If the chosen development platform of your ConvoKraft bot is either {{%bold%}}Catalyst functions{{%/bold%}} or {{%bold%}}Webhooks{{%/bold%}}, you can enable the handler from the console and define the logic of your handler functions either in the Integration Function or in the codebase associated with the configured webhook URL respectively.{{%/note%}} To learn more about defining handler functions in Deluge, please refer to {{%link href="/en/convokraft/help/handlers/code-deluge-handlers" %}}this page{{%/link%}}. If you have chosen your development platform to be Functions, you can use the below listed sample codes for the Java, Node.js and Python stacks : ### Java {{%code class="language-java"%}} import org.json.JSONObject; import java.io.*; import java.util.logging.Logger; public class WelcomeHandler { Logger LOGGER = Logger.getLogger(WelcomeHandler.class.getName()); public JSONObject handleWelcomeRequest(JSONObject reqBody) throws Exception{ LOGGER.info("Welcome Handler: : TODO : "+ reqBody.get("todo")); JSONObject welcomeResponse = new JSONObject(); welcomeResponse.put("message", "Welcome to your Bot. Please ask your queries"); JSONObject jsonResponse = new JSONObject(); jsonResponse.put("welcome_response", welcomeResponse); return jsonResponse; } } {{%/code%}} ### Node.js {{%code class="language-javascript"%}}import logger from "./logger.js"; // Handle the welcome functionality export default function handleWelcome() { logger.info('Handling welcome request'); return { "welcome_response": { "message": "Welcome to your Bot. Please ask your queries" } }; } {{%/code%}} ### Python {{%code class="language-python"%}}import logging def handle_welcome_request(): # This is your Welcome message Handler. # You need to write the default Welcome message your want your bot to greet its users. # The way to return welcome message is as follows : # { # 'welcome_response': { # 'message': 'Welcome to your Bot. Please ask your queries' # } # } # Sample code to set the same is available Below. logging.info('Handling welcome request') return { 'welcome_response': { 'message': 'Welcome to your Bot. Please ask your queries' } }{{%/code%}} -------------------------------------------------------------------------------- title: "Fallback Handler" description: "Learn about the Fallback handlers that allows you to configure the bot responses for scenarios when Convokraft is unable to comprehend user messages." last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/handlers/fallback-handler/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Fallback Handler # Introduction When a bot receives an input message that it can't understand, it will reply with a message configured in the Fallback handler function. If you wish to customize the default response message to give a reply of your own, you can configure the fallback handler function based on your bot's specific needs. In addition to the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/defining-deluge-functions/#system-defined-input-arguments" %}}system defined input arguements{{%/link%}} of an Execution function, the Fallback Handler function includes a custom argument called the {{%badge%}}userInput{{%/badge%}} of String datatype, that stores the latest response from the user in the current chat session. The Fallback handler function returns a map whose structure is similar to the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function/#return-values" %}}return map{{%/link%}} of an Execution function. {{%note%}}{{%bold%}}Note :{{%/bold%}} 1. If the chosen development platform of your ConvoKraft bot is either {{%bold%}}Catalyst functions{{%/bold%}} or {{%bold%}}Webhooks{{%/bold%}}, you can enable the handler from the console and define the logic of your handler functions either in the Integration function or in the codebase associated with the configured webhook URL respectively. 2. The response status for success scenarios of the fallback handler function should be configured as {{%badge%}}handled{{%/badge%}}. If not, the status will be considered as failure. The return response of the function depends on the logic configured in the fallback function handler. This is applicable to both Catalyst functions and Webhooks. {{%/note%}} To learn more about defining handler functions in Deluge, please refer to {{%link href="/en/convokraft/help/handlers/code-deluge-handlers" %}}this page{{%/link%}}. If you have chosen your development platform to be Functions, you can use the below listed sample codes for the Java, Node.js and Python stacks : ### Java {{%code class="language-java"%}}import org.json.JSONObject; import java.io.*; import java.util.logging.Logger; public class FallbackHandler { Logger LOGGER = Logger.getLogger(FallbackHandler.class.getName()); public JSONObject handleFallbackRequest(JSONObject reqBody) throws Exception{ JSONObject jsonResponse = new JSONObject(); LOGGER.info("Fallback Handler : : TODO : "+ reqBody.get("todo")); jsonResponse.put("message", "Fallback Response: Please define this question and try again"); return jsonResponse; } }{{%/code%}} ### Node.js {{%code class="language-javascript"%}}import logger from "./logger.js"; // Handle the fallback functionality export default function handleFallback() { logger.info('Handling fallback request'); return { "message": "Fallback Response: Please define this question and try again" }; } {{%/code%}} ### Python {{%code class="language-python"%}}import logging def handle_fallback_request(): # This is your Fallback Response Handler. # You need to write the Fallback Response when the bot doesnt know what to respond to users. # The way to return fallback message is to be returned is as follows : # { # 'message': 'Fallback Response: Please define this question and try again' # } # Sample code to set the same is available Below. logging.info('Handling fallback request') return { 'message': 'Fallback Response: Please define this question and try again' }{{%/code%}} -------------------------------------------------------------------------------- title: "Code Deluge Handlers" description: "Learn about coding Deluge handlers using the in-built editor in ConvoKraft." last_updated: "2026-03-18T07:41:08.544Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/handlers/code-deluge-handlers/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Code Deluge Handlers # Implementation To configure any Deluge handler for your ConvoKraft bot, please follow the steps listed below : 1. After you {{%link href="/en/convokraft/help/bots/create-a-bot/" %}}create a ConvoKraft bot{{%/link%}} and configure the required {{%link href="/en/convokraft/help/actions/create-an-action/" %}}actions{{%/link%}} for it, navigate to the Handlers tab and enable the required handler, which will allow you to edit the handler function further. {{%note%}}{{%bold%}}Note :{{%/bold%}} You will be able to edit the handler function from the console, only if you have chosen the development platform of your ConvoKraft bot to be Deluge.{{%/note%}} 2. Once you have enabled the handler function, click Edit Function and you will be redirected to the handler’s function page. 3. Save the function code and click {{%bold%}}DONE{{%/bold%}} after constructing the response based on your bot’s specific needs. -------------------------------------------------------------------------------- title: "Failure Handler" description: "Learn about the Failure handlers that allows you to configure the bot logic to handle scenarios of exceptions during action execution." last_updated: "2026-03-18T07:41:08.545Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/handlers/failure-handler/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Failure Handler # Introduction When an exception occurs for the user input message, the bot will reply with a message configured in the Failure handler function. If you wish to customize the default response message to give a reply of your own, you can configure the Failure Handler function based on your bot's specific needs. In addition to the {{%link href="/en/convokraft/help/actions//bot-logic/deluge-functions/defining-deluge-functions/#system-defined-input-arguments" %}}system defined input arguements{{%/link%}} of an execution function, the Failure handler function includes a custom argument called the userInput of String datatype, that stores the latest response from the user in the current chat session. The Failure handler function returns a map whose structure is similar to the {{%link href="/en/convokraft/help/actions/bot-logic/deluge-functions/execution-function/#return-values" %}}return map{{%/link%}} of an Execution function. {{%note%}}{{%bold%}}Note :{{%/bold%}} If the chosen development platform of your ConvoKraft bot is either {{%bold%}}Catalyst functions{{%/bold%}} or {{%bold%}}Webhooks{{%/bold%}}, you can enable the handler from the console and define the logic of your handler functions either in the Integration function or in the codebase associated with the configured webhook URL respectively.{{%/note%}} To learn more about defining handler functions in Deluge, please refer to {{%link href="/en/convokraft/help/handlers/code-deluge-handlers" %}}this page{{%/link%}}. If you have chosen your development platform to be Functions, you can use the below listed sample codes for the Java, Node.js and Python stacks : ### Java {{%code class="language-java"%}}import org.json.JSONObject; import java.io.*; import java.util.logging.Logger; public class FailureHandler { Logger LOGGER = Logger.getLogger(FailureHandler.class.getName()); public JSONObject handleFailureRequest(JSONObject reqBody) throws Exception{ JSONObject jsonResponse = new JSONObject(); LOGGER.info("Failure Handler : : TODO : " + reqBody.get("todo")); jsonResponse.put("message", "Failure Response: Please define this question and try again"); return jsonResponse; } }{{%/code%}} ### Node.js {{%code class="language-javascript"%}}import logger from "./logger.js"; // Handle the failure functionality export default function handleFailure() { logger.info('Handling failure request'); return { "message": "Failure Response: Please define this question and try again" }; }{{%/code%}} ### Python {{%code class="language-python"%}}import logging def handle_failure_request(): # This is your Failure Response Handler. # You need to write the Failure Response when the bot Fails during execution of the function. # The way to return Failure message is to be returned is as follows : # { # 'message': 'Sorry, Something went wrong' # } # Sample code to set the same is available Below. logging.info('Handling failure request') return { 'message': 'Failure Response: Please define this question and try again' }{{%/code%}} ### Manage a bot -------------------------------------------------------------------------------- title: "Train a bot" description: "Learn about the training process of a ConvoKraft bot and the core importance of training them before deployment." last_updated: "2026-03-18T07:41:08.548Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/manage-a-bot/train-a-bot/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Train the bot After you create or modify the {{%link href="/en/convokraft/help/actions/overview/introduction" %}}actions{{%/link%}} of your ConvoKraft bot in the development environment, you will need to train the bot with the configured operations. When you create an action, you define the {{%link href="/en/convokraft/help/actions/define-sample-sentences" %}}sample sentences{{%/link%}} and the expected responses for them. Now, when the user initiates a conversation with the bot to perform any task, the bot will first make a quick comparison of the user's message and the pre-defined sample sentences. If there is a match with any of the configured actions, then the bot responds with an intended answer. Upon training the bot, it will be able to analyze the common invocation patterns and the configurations being made to the specific actions, then arrive at a NLP logic. This will auto-generate and train the corresponding Natural Language Processing (NLP) models. These models in turn will help the bot to arrive at a correlation between different variations of the same user query, and respond intellectually. By training the bot, you could avoid the time-consuming efforts spent on defining sample sentences for multiple variations of the same user query. After you train your bot, you can instantly test your bot by initiating conversations with respect to the updated configurations. Consider a situation where you define sample sentences for an action that constructs answers by fetching details about an event, such as for queries like **"What is the venue of the event"**, **"When is the event being conducted"** and **"Who are the keynote speakers for the event"**. Now, if a user asks the bot questions like **"Where is the event venue?"** or **"What time is the event?"** in an conversational way, the bot would recognize the intent of these messages and search for any invocation patterns stored in the available NLP models. The bot would associate these questions with the sample sentences you already defined, which contribute to understanding the intent of user input better. This is why it's important for you to train a bot before you deploy it. You can train the bot from the Bot's details page in the console after you configure the actions for it. This will initiate the training process by Catalyst in the background. After the bot has been trained successfully, you will be prompted with a status message. {{%note%}}{{%bold%}}Note :{{%/bold%}} If you encounter any network issue in the middle of the training process, there are possibilities of training failure. In that case, you can train the bot once again, then proceed with its deployment.{{%/note%}} The bot will be deployed to production, once you deploy your Catalyst project. You can refer to {{%link href="/en/deployment-and-billing/environments/initial-deployment" %}}this page{{%/link%}} for the steps to deploy your project. -------------------------------------------------------------------------------- title: "Test a bot" description: "Learn to test your ConvoKraft bot by interacting with it in a conversational way based on the action configurations of the bot." last_updated: "2026-03-18T07:41:08.548Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/manage-a-bot/test-a-bot/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Test the bot You can test your Convokraft bot right after training it by simply interacting with it directly from the Catalyst console, in a conversational way with queries related to the latest changes made in the actions. {{%note%}}{{%bold%}}Note:{{%/bold%}} We recommend that you train mandatorily and test the bot in the development environment before you deploy it to production, to avoid any critical issues in the live bot in the production environment.{{%/note%}} The bot will be deployed to production, once you deploy your Catalyst project. You can refer to {{%link href="/en/deployment-and-billing/environments/initial-deployment" %}}this page{{%/link%}} for the steps to deploy your project. # Interact with the bot You can interact with any bot built on Catalyst ConvoKraft in conversational English, just like how you speak with or text a fellow human being. The bot understands your natural language and will try to answer your questions or carry out your instructions. Once you open the bot's chat window, the onboarding screen will be displayed with a list of actions that the bot can perform. If the bot does not have a custom onboarding screen configured, then {{%bold%}}"Hi, how may I help you?" {{%/bold%}} will be shown as a welcome message, when the bot is opened up. You can either choose one from the list or type your custom message in the text box to interact with the ConvoKraft bot. When you send a message to the bot via the chat window, the bot will respond with a reply. The reply will be an answer to the question asked or the result of the instruction given. In case, if the bot needs more information to answer the question or to perform the operation, it might prompt for some additional information conversationally. For example, if you are trying to book an event, then the bot may prompt questions to get the details, such as the name of the event, the type of event, event days and so on. For certain questions, the bot displays options from which you can select one or many options according to your requirements. After selecting, click the apt button (if available) to proceed with the instruction. If no buttons are displayed, the selected option would be immediately submitted to the bot. For example, for the event day question, the bot may provide you with options like Monday, Tuesday, Wednesday, and so on. * **Single input selection** * **Multiple input selection** * **Date picker** Sometimes the ConvoKraft bot allows you to skip certain questions that are considered optional for processing that instruction. So, if you are not willing to answer a particular question, then click the {{%bold%}}Skip giving this input{{%/bold%}} option. Similarly, if the answer you give is in an invalid format or if the bot is not able to infer meaningful data from your message, then the bot will prompt for the same input repeatedly, until it gets a valid answer. At any point, if you do not wish to continue the current context of the conversation further, you can click the {{%bold%}}Start a new conversation{{%/bold%}} option. This will make the bot drop the current context in the conversation and you can start over the conversation with some other instruction. Upon receiving all the required details, the bot performs the desired operation and displays the final output. The output can be a simple message, table, image, a bulleted list and more based on the configurations being made. You can further continue your conversation with the bot by asking some other questions or giving further instructions. The bot will also display suggestions related to the previous instruction. You can either select one from the suggestions or enter a new message and continue the interaction. Similar to showing suggestions, the bot may also ask a follow-up question, along with the suggestions to proceed with the conversation. You can answer that question by either selecting one from the displayed suggestions or typing the suitable answer as a reply. -------------------------------------------------------------------------------- title: "Deploy a bot" description: "Learn about the deployment process of a ConvoKraft bot after training and testing it in the development environment." last_updated: "2026-03-18T07:41:08.548Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/manage-a-bot/deploy-a-bot/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Deploy to production Any changes made to the bot or its underlying actions are only saved in ConvoKraft's development environment. These changes will not be instantly available on the bot in production environment. For the live bot to understand the addition of any new actions, removal, or modifications made in the existing actions, the bot has to be deployed to production. This is necessary to ensure that you can make seamless changes on the go to a bot in the development environment, which is already being used by the users in the production environment. To deploy a bot to production, click the {{%bold%}}Deploy to Production{{%/bold%}} button on the Bot's details page. {{%note%}}{{%bold%}}Note :{{%/bold%}} The {{%bold%}}Deploy to Production{{%/bold%}} button will only be active if there are any changes made in any of the underlying actions that you have configured for the bot.{{%/note%}} Once you click the {{%bold%}}Deploy to Production{{%/bold%}} button, a pop-up window will be displayed with the following sections : * **Choose Actions** : All actions that were modified since the previous deployment will be categorically listed under this section. Select an action to deploy its changes to production. Any changes made in the unselected actions will not be deployed. * **Release Type** : Choose the appropriate release type based on your changes. Your deployment will be given an appropriate version number based on this choice. * **Release Notes** : You can leave meaningful notes about the changes made for your future reference. After mentioning all the required values, click the {{%bold%}}Deploy{{%/bold%}} button. Upon successful deployment, any changes made to underlying actions will be reflected in the production bot. You can switch to the Production Environment, by choosing it from the drop-down. You can embed the ConvoKraft bot in your web application by navigating to the {{%bold%}}Clients{{%/bold%}} tab in the console, copy the code shown in the screenshot below and paste it in the {{%badge%}}index.html{{%/badge%}} file of your application's source code. Further, customize the ConvoKraft bot for your specific requirements using the {{%link href="/en/convokraft/sdk/js/customization-of-a-bot/" %}}ConvoKraft JS SDK package{{%/link%}}. -------------------------------------------------------------------------------- title: "Usage stats" description: "Learn about the various usage statistics of your ConvoKraft bot that can be viewed in the Catalyst console. " last_updated: "2026-03-18T07:41:08.548Z" source: "https://docs.catalyst.zoho.com/en/convokraft/help/manage-a-bot/usage-stats/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Usage Stats When a bot receives an input message, it either invokes the action as a response or fails to understand the message in the first place. The initiated action may also have been stopped by the user in the middle of the conversation or failed due to some technical issues. The Usage Stats tab provides an analysis of the bot's usage, and also drills down the count at the action level. # Invocations By Action Broadly, the usage stats report classifies the count of all messages processed by a Convokraft bot into the following categories: * {{%bold%}}Responded With Actions{{%/bold%}} : Number of invocations that were responded by the configured actions of the bot. * {{%bold%}}Responded By ConvoKraft{{%/bold%}} : Number of invocations that were responded by configured handlers of the bot. * {{%bold%}}Missed To Understand{{%/bold%}} : Number of invocations that were not understood by the bot. The number of invocations responded with actions is further classified based on the actions that are invoked. Every action's total invocation count is further split into three categories : * {{%bold%}}COMPLETED{{%/bold%}} - Number of invocations in which the action is completed successfully. * {{%bold%}}CANCELLED{{%/bold%}} - Number of invocations in which the action is cancelled in the middle of the conversation. * {{%bold%}}FAILED{{%/bold%}} - Number of invocations in which the action has failed due to technical issues in your business logic. {{%note%}}{{%bold%}}Note:{{%/bold%}} 1. The Usage stats tab will be visible only when you deploy your bot to production. 2. You can view the usage stats for various time periods and also sort it based on any of the columns.{{%/note%}} ## SDK ### JS SDK -------------------------------------------------------------------------------- title: "Overview" description: "Learn about the JS SDK package provided by the Catalyst ConvoKraft service that has the abilities to integrate powerful chat bot assistants in your Catalyst application." last_updated: "2026-03-18T07:41:08.549Z" source: "https://docs.catalyst.zoho.com/en/convokraft/sdk/js/overview/" service: "ConvoKraft" -------------------------------------------------------------------------------- # ConvoKraft JavaScript Client SDK ### Overview A ConvoKraft bot can be added to your web application at ease using the ConvoKraft JavaScript SDK, so that users can directly interact with the bot through the programmed chat window. This documentation provides detailed information on the steps to integrate the JavaScript SDK with your Catalyst web application and customize the ConvoKraft bot as per your application's specific requirements. This SDK supports all modern web browsers, including the following minimum versions: <table class="content-table"> <thead> <tr> <th>Browser</th> <th>Version</th> </tr> </thead> <tbody> <tr> <td>Microsoft Edge</td> <td>12+</td> </tr> <tr> <td>Mozilla Firefox</td> <td>21+</td> </tr> <tr> <td>Google Chrome</td> <td>23+</td> </tr> <tr> <td>iOS Safari</td> <td>6+</td> </tr> </tbody> </table> ### SDK Integration Add the following code snippet in the {{%badge%}}index.html{{%/badge%}} file of your web application's source code to plug in the ConvoKraft JS SDK to your application : {{%code class="language-html" scroll="set-scroll" %}}&lt;script src="https://console.catalyst.zoho.com/convokraft/assets/js/convokraft-chat-sdk.js"&gt; &lt;/script&gt; {{%/code%}} Please make sure to include the following code snippet to your web application to make the chat window appear in the traditional chatbot position i.e., the bottom right corner of your Catalyst web application screen. You can further alter the size, position, appearance and customize the chat window completely as required. We will be discussing them in detail in {{%link href="/en/convokraft/sdk/js/customization-of-a-bot" %}}this section{{%/link%}}. {{%code class="language-html" scroll="set-scroll" %}}&lt;div class="anchor_convokraft_toBottom"&gt; &lt;convokraft-chat-bot bot-name="test" project-id="6687000000009014" org-id="74535893"&gt;&lt;/convokraft-chat-bot&gt; &lt;/div&gt; Style - &lt;style&gt; div.anchor_convokraft_toBottom { width: 330px; height: 450px; position: fixed; bottom: 0; right: 0; } &lt;/style&gt; {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 1. Please make sure the **convokraft-chat-sdk.js** is included after **&lt;convokraft-chat-bot/&gt;** tag. 2. This SDK works best in fixed positioning, so please make sure the container around **&lt;convokraft-chat-bot/&gt;** tag is a fixed positioned one.{{%/note%}} -------------------------------------------------------------------------------- title: "Customization of a bot" description: "Learn about the JS SDK package provided by the Catalyst ConvoKraft service that has the abilities to integrate powerful chat bot assistants in your Catalyst application." last_updated: "2026-03-18T07:41:08.549Z" source: "https://docs.catalyst.zoho.com/en/convokraft/sdk/js/customization-of-a-bot/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Customization of the bot The ConvoKraft JS SDK supports customizing several elements of the chat window to suit your application's specific requirements. The following attributes should be used in the **&lt;convokraft-chat-bot&gt;** tag within the {{%badge%}}index.html{{%/badge%}} file of your web application's source code : * {{%badge%}}lt-prop-convokraft-title{{%/badge%}} * {{%badge%}}show-convokraft-header{{%/badge%}} * {{%badge%}}bot-name{{%/badge%}} * {{%badge%}}lt-prop-conversation{{%/badge%}} * {{%badge%}}show-help{{%/badge%}} * {{%badge%}}show-typing-suggestions{{%/badge%}} * {{%badge%}}show-action-suggestions{{%/badge%}} * {{%badge%}}lt-prop-styles{{%/badge%}} ### lt-prop-convokraft-title This attribute helps to set the title of the chat window UI. **Sample code :** {{%code class="language-javascript" scroll="set-scroll" %}}&lt;convokraft-chat-bot lt-prop-bot-title="Ask convokraft"&gt; &lt;/convokraft-chat-bot&gt; {{%/code%}} ### show-convokraft-header This attribute is used to let the ConvoKraft bot know whether the header of the chat window should be displayed or not. The value of this attribute can be {{%badge%}}true{{%/badge%}} or {{%badge%}}false{{%/badge%}} as per your requirement. By default, it is set to {{%badge%}}true{{%/badge%}}. And if the value is set to {{%badge%}}false{{%/badge%}}, the header of the chat window will not be displayed. **Sample code :** {{%code class="language-javascript" scroll="set-scroll" %}}&lt;convokraft-chat-bot lt-prop-convokraft-title="Ask convokraft" show-convokraft-header="false"&gt; &lt;/convokraft-chat-bot&gt; {{%/code%}} ### bot-name By providing any specific bot name (bot namespace) as the value of this attribute, ConvoKraft will converse only with that particular bot. **Sample code :** {{%code class="language-javascript" scroll="set-scroll" %}}&lt;convokraft-chat-bot lt-prop-convokraft-title="Ask convokraft" bot-name = "ecommercebot" &gt;&lt;/convokraft-chat-bot&gt; {{%/code%}} ### lt-prop-conversation This attribute helps to set the alignment of the messages in the bot conversation. The value of this attribute can be set to either {{%badge%}}true{{%/badge%}} or {{%badge%}}false{{%/badge%}}. * If {{%badge%}}true{{%/badge%}}, all message conversations within the chat window would get converted to the conversation view (user messages are aligned to the right and ConvoKraft responses are aligned to the left of the chat window). **Sample code :** {{%code class="language-javascript" scroll="set-scroll" %}}&lt;convokraft-chat-bot lt-prop-convokraft-title="Ask convokraft" bot-name = "aqualordappointmentbooker" lt-prop-conversation="true"&gt; &lt;/convokraft-chat-bot&gt; {{%/code%}} * If {{%badge%}}false{{%/badge%}}, all message conversations within the chat window will be aligned to the left. **Sample code :** {{%code class="language-javascript" scroll="set-scroll" %}}&lt;convokraft-chat-bot lt-prop-convokraft-title="Ask convokraft" bot-name = "aqualordappointmentbooker" lt-prop-conversation="false"&gt; &lt;/convokraft-chat-bot&gt; {{%/code%}} ### show-help This attribute can be used to enable a help icon to be adjacent to the typing area in the chat window. On clicking the help icon, an onboarding screen will be displayed. The on-boarding screen contains the sample sentences or action suggestions configured for that ConvoKraft bot. The value for this attribute can be {{%badge%}}true{{%/badge%}} or {{%badge%}}false{{%/badge%}}. By default, it is set as{{%badge%}}false{{%/badge%}}. **Sample code :** {{%code class="language-javascript" scroll="set-scroll" %}}&lt;convokraft-chat-bot lt-prop-convokraft-title="Ask convokraft" bot-name = "aqualordappointmentbooker" show-help="true"&gt; &lt;/convokraft-chat-bot&gt; {{%/code%}} ### show-typing-suggestions This attribute is used to display the action suggestions at the simultaneously while typing any message in the typing area. The value of this attribute can either be {{%badge%}}true{{%/badge%}} or {{%badge%}}false{{%/badge%}}. **Sample code :** {{%code class="language-javascript" scroll="set-scroll" %}}&lt;convokraft-chat-bot lt-prop-convokraft-title="Ask convokraft" bot-name = "aqualordappointmentbooker" show-help="true" show-history="true" show-typing-suggestions="true"&gt; &lt;/convokraft-chat-bot&gt; {{%/code%}} ### show-action-suggestions This attribute can be used to display the action suggestions at the end of each chat conversation. The value of this attribute can either be {{%badge%}}true{{%/badge%}} or {{%badge%}}false{{%/badge%}}. If this attribute is enabled, the {{%badge%}}show-typing-suggestions{{%/badge%}} attribute will be enabled automatically. **Sample code :** {{%code class="language-javascript" scroll="set-scroll" %}}&lt;convokraft-chat-bot lt-prop-convokraft-title="Ask convokraft" bot-name = "aqualordappointmentbooker" show-help="true" show-history="true" show-action-suggestions="true"&gt; &lt;/convokraft-chat-bot&gt; {{%/code%}} ### lt-prop-styles This attribute helps in configuring styles of the various elements in the chat window UI. The styles can be configured as follows: <table class="content-table"> <thead> <tr> <th>Attribute Name</th> <th>Usage</th> <th>Value</th> <th>Example</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}headerBg{{%/badge%}}</td> <td>To set the background colour of the chat window header.</td> <td>The value for this style can be any color value.</td> <td>#5acc42</td> </tr> <tr> <td>{{%badge%}}headerText{{%/badge%}}</td> <td>To set the text color of the chat window header.</td> <td>The value for this style can be any color value.</td> <td>black</td> </tr> <tr> <td>{{%badge%}}headerFont{{%/badge%}}</td> <td>To set the font family of the chat window header text.</td> <td>The value for this style can be any font family name.</td> <td>sans-serif</td> </tr> <tr> <td>{{%badge%}}userBg{{%/badge%}}</td> <td>To set the background colour of the user message container in the chat window.</td> <td>The value for this style can be any color value.</td> <td>#5acc42</td> </tr> <tr> <td>{{%badge%}}userText{{%/badge%}}</td> <td>To set the text color of the texts in the user message container.</td> <td>The value for this style can be any color value.</td> <td>black</td> </tr> <tr> <td>{{%badge%}}userFont{{%/badge%}}</td> <td>To set the font family of the texts in the user message container.</td> <td>The value for this style can be any font family name.</td> <td>Comic Sans MS</td> </tr> <tr> <td>{{%badge%}}botBg{{%/badge%}}</td> <td>To set the background color of ConvoKraft message container in the chat window.</td> <td>The value for this style can be any color value.</td> <td>#ddd</td> </tr> <tr> <td>{{%badge%}}botText{{%/badge%}}</td> <td>To set the text color of the texts in the convokraft message container.</td> <td>The value for this style can be any color value.</td> <td>#222</td> </tr> <tr> <td>{{%badge%}}botFont{{%/badge%}}</td> <td>To set the font family of the texts in convokraft message container.</td> <td>The value for this style can be any font family name.</td> <td>Arial</td> </tr> <tr> <td>{{%badge%}}bodyBg{{%/badge%}}</td> <td>To set the background colour of the chat window body.</td> <td>The value for this style can be any color value.</td> <td>#ddd</td> </tr> </tbody> </table> For the {{%badge%}}lt-prop-styles{{%/badge%}} attribute, the styles and their values should be provided in JSON format, as depicted in the sample code below : {{%code class="language-javascript" scroll="set-scroll" %}}&lt;convokraft-chat-bot lt-prop-conversation="true" lt-prop-styles='{"headerBg":"#5acc42", "headerText":"black", "headerFont":"sans-serif", "userBg":"#5acc42", "userText":"black", "botBg":"#ddd", "botText":"#222", "userFont":"Comic Sans MS", "botFont":"Arial", "bodyBg":"#ddd"}'&gt; &lt;/convokraft-chat-bot&gt; {{%/code%}} -------------------------------------------------------------------------------- title: "Hooks" description: "Learn about the JS SDK package provided by the Catalyst ConvoKraft service that has the abilities to integrate powerful chat bot assistants in your Catalyst application." last_updated: "2026-03-18T07:41:08.549Z" source: "https://docs.catalyst.zoho.com/en/convokraft/sdk/js/hooks/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Hooks ConvoKraft hooks are functions that can be configured by the developers in the global scope of a Catalyst web application and can be accessed using the ConvoKraft object. The ConvoKraft JS SDK provisions the below listed hooks : * {{%badge%}}handleResponse{{%/badge%}} * {{%badge%}}handleMissed{{%/badge%}} * {{%badge%}}handleError{{%/badge%}} * {{%badge%}}minimizeChat{{%/badge%}} * {{%badge%}}didConnect{{%/badge%}} * {{%badge%}}setOnBoarding{{%/badge%}} * {{%badge%}}setOnBoardingSentences{{%/badge%}} * {{%badge%}}setClientSessionData{{%/badge%}} * {{%badge%}}handleUpload{{%/badge%}} * {{%badge%}}handleWelcome{{%/badge%}} ### handleResponse Based on the response provided by ConvoKraft for any action, you can handle the data and customize the visual representation of the response as per your specific requirements. The original response sent will be sent in the {{%badge%}}data{{%/badge%}} key of a Deluge function from your web application. In order to customize the response, you need to pass the data value to the following hook along with the HTML element, within which the web application can render the ConvoKraft's original response. **Syntax** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.handleResponse=function(actionName,data,element,responseHandled,fromHistory,fromPagination) { //Enter logic here return true; } {{%/code%}} The below table provides details about the various elements of the function : <table class="content-table"> <thead> <tr> <th>Element</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}actionName{{%/badge%}}</td> <td>The namespace of the action invoked.</td> </tr> <tr> <td>{{%badge%}}data{{%/badge%}}</td> <td>It holds the custom data that is being sent from Deluge to the hook.</td> </tr> <tr> <td>{{%badge%}}element{{%/badge%}}</td> <td>It holds ConvoKraft's custom reply element that will be displayed in the chat window. </td> </tr> <tr> <td>{{%badge%}}responseHandled{{%/badge%}}</td> <td>This is a mandatory callback function, which helps the bot to know that DOM operations are complete and it can scroll the chat div to top.</td> </tr> <tr> <td>{{%badge%}}fromHistory{{%/badge%}}</td> <td>This key contains a Boolean value that represents whether the current message being constructed is from the current session or any past sessions.</td> </tr> <tr> <td>{{%badge%}}fromPagination{{%/badge%}}</td> <td>This key contains a Boolean value that represents whether the current message being constructed is a message after a pagination call. If true, it is not advisable to call {{%badge%}}responseHandled(){{%/badge%}}, so that messages don't scroll all the way down.</td> </tr> </tbody> </table> **Sample code** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.handleResponse = function(actionName,data,element,responseHandled,fromHistory,fromPagination) { if(actionName=="schedule_event") { element.innerHTML="This is a test function from "+data.name; element.style.padding="10px"; responseHandled(); return false; //Renders the above constructed response } return true; //Renders original convokraft response } {{%/code%}} ### handleMissed If the user's message doesn't match with any of the configured actions of your bot, and in that case if you have defined the {{%badge%}}convokraft.handleMissed(){{%/badge%}} hook in your web application's global scope, then ConvoKraft would display the custom response as rendered through this hook. **Syntax** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.handleMissed = function(element, responseHandled, fromHistory, fromPagination) { //Enter the logic of the element which will be rendered as convokraft's response } {{%/code%}} The following table describes the syntax elements and their descriptions : <table class="content-table"> <thead> <tr> <th>Element</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}element{{%/badge%}}</td> <td>It holds ConvoKraft's custom reply element that will be displayed in the chat window. </td> </tr> <tr> <td>{{%badge%}}responseHandled{{%/badge%}}</td> <td>This is a mandatory callback function, which helps the bot to know that DOM operations are complete and it can scroll the chat div to top.</td> </tr> <tr> <td>{{%badge%}}fromHistory{{%/badge%}}</td> <td>This key contains a boolean value that represents whether the current message being constructed is from the current session or any past sessions.</td> </tr> <tr> <td>{{%badge%}}fromPagination{{%/badge%}}</td> <td>This key contains a boolean value that represents whether the current message being constructed is a message after a pagination call. If {{%badge%}}true{{%/badge%}}, it is not advisable to call {{%badge%}}responseHandled(){{%/badge%}}, so that messages don't scroll all the way down.</td> </tr> </tbody> </table> **Sample code** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.handleMissed= function(element,responseHandled,fromHistory){ element.innerHTML = "<div class='wrapped_not_found'>Sorry! Not found!<br/><br/><img src='https://www.zylker.com/files/2020/06/iStock-872962368-chat-bots.webp'></img></div>"; responseHandled(); return false; } {{%/code%}} ### handleError If any API error occurs while executing an action, you can use this hook to display a custom error response by defining {{%badge%}}convokraft.handleError{{%/badge%}} in your Catalyst web application's global scope. **Syntax** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.handleError = function(element, responseHandled, fromHistory, fromPagination) { //Enter logic to customize error message } {{%/code%}} The following table describes the syntax elements and their descriptions : <table class="content-table"> <thead> <tr> <th>Element</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}element{{%/badge%}}</td> <td>It holds ConvoKraft's custom reply element that will be displayed in the chat window. </td> </tr> <tr> <td>{{%badge%}}responseHandled{{%/badge%}}</td> <td>This is a mandatory callback function, which helps the bot to know that DOM operations are complete and it can scroll the chat div to top.</td> </tr> <tr> <td>{{%badge%}}fromHistory{{%/badge%}}</td> <td>This key contains a boolean value that represents whether the current message being constructed is from the current session or any past sessions.</td> </tr> <tr> <td>{{%badge%}}fromPagination{{%/badge%}}</td> <td>This key contains a boolean value that represents whether the current message being constructed is a message after a pagination call. If {{%badge%}}true {{%/badge%}}, it is not advisable to call {{%badge%}}responseHandled(){{%/badge%}}, so that messages don't scroll all the way down.</td> </tr> </tbody> </table> **Sample code** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.handleError= function(element,responseHandled){ if(typeof data !== "undefined"){ messageString = data.data.code; } else{ messageString = "Api Error!"; } element.innerHTML = "<div class='wrapped_not_found'>Sorry! "+messageString+"<br/><br/><img src='https://www.zylker.com/files/2020/06/iStock-872962368-chat-bots.webp'></img></div>"; responseHandled(); } {{%/code%}} ### minimizeChat This hook enables the user to minimize or maximize the chat window when clicked on its header. **Syntax** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.minimizeChat=function() { //obtain your chat div and apply minimize animation and styles as you need } {{%/code%}} **Sample code** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.minimizeChat=function() { if(document.getElementById("zdivid").style.marginBottom=="-400px"||document.getElementById("zdivid").style.marginBottom=="") { document.getElementById("zdivid").style.marginBottom="-0px"; } else { document.getElementById("zdivid").style.marginBottom="-400px"; } } {{%/code%}} ### didConnect This hook is used to notify the Catalyst web application that the chat is loaded completely. **Syntax** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.didConnect=function() { //Enter logic here } {{%/code%}} **Sample code** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.didConnect=function() { var loadingDiv=document.getElementById("loadingDiv"); if(loadingDiv) { loadingDiv.style.display='none'; } } {{%/code%}} ### setOnBoarding If there is no history of chat, then the onboarding screen would be displayed by default. This hook can be defined in the global scope of your web application in order to customize the ConvoKraft bot's onboarding screen as per your requirements. **Syntax** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.setOnBoarding=function(element,sentences,placeholders) { //construct HTML and styles as per your need and push it to the element } {{%/code%}} The following table explains the syntax elements and their descriptions : <table class="content-table"> <thead> <tr> <th>Element</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}element{{%/badge%}}</td> <td>It holds the HTML element that needs to be customized. </td> </tr> <tr> <td>{{%badge%}}sentences{{%/badge%}}</td> <td>It holds the sample sentences of that particular action.</td> </tr> <tr> <td>{{%badge%}}placeholders{{%/badge%}}</td> <td>It is an array of strings that can be used to hold different parameters for sentences displayed in the onboarding screen</td> </tr> </tbody> </table> **Sample code** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.setOnBoarding=function(element,sentences,placeholders) { var html="<div style='font-weight:bold;font-family:'proxima_nova_ltsemibold'>This is a custom onboarding screen by client app and here are the list of sentences:</div><br/><br/><ul style='list-style:none;margin-left:-15px'>"; sentences.forEach(function(item) { html+="<li class='onboard_item' onclick='convokraftvoice.sendMessage(\""+item+"\")'>"+item+"</li>"; }) html+="</ul>"; element.innerHTML=html; element.style.padding="10px"; } {{%/code%}} ### setOnBoardingSentences This hook is used to customize the onboarding sentences or action suggestions that appear when you open a ConvoKraft chat window. By default, the chat window displays the suggestions based on the configured sample sentences of the ConvoKraft actions. An array of objects can be passed in the JSON format as arguments to this hook as listed below. Also note that with the help of sentences in the JSON, different values for placeholders can be set and returned. {{%code class="language-javascript" scroll="set-scroll" %}}[ { "id": "1", "sentence": "Apply leave for {{fromdate}} and {{todate}}", "actual_sentence": "Apply leave for today and tomorrow" }, { "id": "2", "sentence": "What is the {{property}} of {{country}}?", "actual_sentence": "What is the capital of India?" } ] //Filter or modify the sentences to be shown in the onboarding screen {{%/code%}} **Syntax** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.setOnBoardingSentences=function(sentences) { //define the HTML and styles as per your need and push it to the elemen } {{%/code%}} **Sample code** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.setOnBoardingSentences=function(sentences) { sentences.splice(0,8); return sentences; } {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} * This hook will be considered only when {{%badge%}}setOnBoarding{{%/badge%}} hook is not applied. * If you want custom sentences in {{%badge%}}setOnBoarding{{%/badge%}} hook, apply the same process for sentences in the {{%badge%}}setOnBoarding{{%/badge%}} hook.{{%/note%}} ### setClientSessionData This hook is used to get the custom client session data of your Catalyst web application. Please make sure to define it in your Catalyst web application's global scope for Convokraft to access it. **Syntax** {{%code class="language-javascript"%}}convokraft.setClientSessionData=function() { //return a JSON Object } {{%/code%}} **Sample Code** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.setClientSessionData=function() { return { portal_name: "zylker", ui_version: "2.0" } } {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} * Please make sure to return the session data as a JSON object. * When you use a Deluge function, the JSON data that is returned from this handle can be obtained using {{%badge%}}sessionData.set("client_data").{{%/badge%}}{{%/note%}} ### handleUpload This hook is used to define the operations to be performed after uploading a file. If the chosen development platform is Deluge or Function, then the file will be uploaded in the Catalyst cloud environment. In case of Webhooks, you will need to define your own file path in the {{%badge%}}file{{%/badge%}} attribute. You can configure the respective messages in the {{%badge%}}onSucces{{%/badge%}} and {{%badge%}}onFailure{{%/badge%}} callback arguments, based on your specific requirements. **Syntax** {{%code class="language-javascript"%}}convokraft.handleUpload = function(input){ //do whatever you want to to the element which will be rendered as convokraft's response } {{%/code%}} The following attributes are supported for this hook: <table class="content-table"> <thead> <tr> <th>Attribute Name</th> <th>Usage</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}sessionId{{%/badge%}}</td> <td>The ID of current transcript session.</td> </tr> <tr> <td>{{%badge%}}param{{%/badge%}}</td> <td>The param information of current prompt like param name, type and prompt message.</td> </tr> <tr> <td>{{%badge%}}file{{%/badge%}}</td> <td>The file object provided by user.</td> </tr> <tr> <td>{{%badge%}}action{{%/badge%}}</td> <td>The current conversation's action namespace.</td> </tr> <tr> <td>{{%badge%}}bot{{%/badge%}}</td> <td>The current conversation's bot namespace.</td> </tr> <tr> <td>{{%badge%}}onSuccess{{%/badge%}}</td> <td>The mandatory call back that accepts file ID as input.</td> </tr> <tr> <td>{{%badge%}}onProgressChange{{%/badge%}}</td> <td>The mandatory call back that accepts calculated upload percentage as parameter. This should be called as and when the upload percentage changes. If the upload is complete, please set percentage to 100 and a message to show success state such as {{%badge%}}onProgressChange(100,"File upload completed");{{%/badge%}}</td> </tr> <tr> <td>{{%badge%}}onFailure{{%/badge%}}</td> <td>The mandatory call back that accepts string input with a message stating the reason for upload failure.</td> </tr> </tbody> </table> **Sample Code** {{%code class="language-javascript" scroll="set-scroll" %}}convokraft.handleUpload=function(uploadObject){ let percentage = 20; let onSuccess = uploadObject.onSuccess; let onFailure = uploadObject.onFailure; var percentageInterval = setInterval(function() { if(percentage === 100){ clearInterval(percerntageInterval); uploadObject.updateProgress(100,"Your file is being processed. Please wait..."); setTimeout(function() { if(zia.fileUploadCount > 1){ onSuccess((Date.now()).toString()); } else{ onFailure("Your file is over 2MB. Please upload a file of less size."); } }, 5000); return; } percentage+=20; uploadObject.onProgressChange(percentage); }, 500); } {{%/code%}} ### handleWelcome This hook is used to modify the welcome message (the first message displayed in the chat session). This hook can be used when you need to customize only the UI. If you need a backend logic to be executed to display the welcome message, then use the welcome message handler function. **Syntax** {{%code class="language-javascript"%}}convokraft.handleWelcome = function(config){ //do whatever you want to to the element which will be rendered as convokraft's response } {{%/code%}} **Sample Code** {{%code class="language-javascript"%}}convokraft.handleWelcome = function(config) { config.element.innerHTML = `Hello Guest! Here are few things I can do for you. &lt;div class='suggestion'&gt;Raise a ticket&lt;/div&gt; &lt;div class='suggestion'&gt;List my inventory and assets&lt;/div&gt;`; } {{%/code%}} -------------------------------------------------------------------------------- title: "Methods" description: "Learn about the JS SDK package provided by the Catalyst ConvoKraft service that has the abilities to integrate powerful chat bot assistants in your Catalyst application." last_updated: "2026-03-18T07:41:08.550Z" source: "https://docs.catalyst.zoho.com/en/convokraft/sdk/js/methods/" service: "ConvoKraft" -------------------------------------------------------------------------------- # Convokraft JS SDK methods The ConvoKraft JS SDK exposes the following methods to the web application to perform a set of basic operations: * {{%badge%}}sendMessage(){{%/badge%}} * {{%badge%}}pushTranscript(){{%/badge%}} ### sendMessage() The {{%badge%}}sendMessage(){{%/badge%}} method is used to configure your client application to send a chat message to the ConvoKraft server. That is when a user clicks an option displayed in the chat window, the configured message corresponding to the option will be displayed to the user in the chat window instantly. The arguments for this method include a string containing the message that will be displayed in the chat conversation, which is mandatory and another string that contains the {{%badge%}}option_id{{%/badge%}}, which is the id of the chosen option in case of array params. The {{%badge%}}option_id{{%/badge%}} argument is optional. {{%code class="language-json"%}}{ convokraft.sendMessage(messageString,option_id); }{{%/code%}} ### pushTranscript() This method can be used to push a custom transcript (an individual message in the user conversation) for a user while conversing with the ConvoKraft bot. The message will be displayed only in the chatbot for that particular session. A transcript data as mentioned below should be passed on to the function. This method is useful in scenarios of pushing a remainder. {{%code class="language-json"%}}{ "message": "Reminder to call Bob at 11am", "id": "1", "sender": "user", "time": "1523356878103" } convokraft.pushTranscript(transcriptObject); {{%/code%}} Here, {{%badge%}}transcriptObject{{%/badge%}} is the message object that will be displayed in the conversation. --- ## API Reference — ConvoKraft -------------------------------------------------------------------------------- title: "Enable or Disable SmartTrain" description: "This API is used to enable or disable the SmartTrain feature in ConvoKraft." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/convokraft/enable-or-disable-smarttrain/" service: "ConvoKraft" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/convokraft/enable-or-disable-smarttrain/" id="EnableorDisableSmartTrain" %}} {{%divtag class="LeftContent"%}} # Catalyst ConvoKraft Catalyst ConvoKraft is an AI-powered service that allows you to build intelligent chatbots and deploy them in your Catalyst applications. These bots leverage Natural Language Understanding (NLU) to interpret messages and respond naturally in conversational English. You can customize the bot by {{%link href="/en/convokraft/help/actions/bot-logic/catalyst-integration-functions/" %}}setting up your own logic{{%/link%}}, providing {{%link href="/en/convokraft/help/actions/define-sample-sentences/" %}}simple question-answer pairs{{%/link%}}, or {{%link href="/en/convokraft/help/smarttrain" %}}training it with custom resources{{%/link%}}, based on your application's requirements. {{%link href="/en/convokraft/help/smarttrain" %}}SmartTrain{{%/link%}} is a component of the Catalyst ConvoKraft service that allows you to train your chatbot using your own resources. You can do this by configuring web URLs where the resources are hosted. This enables the bot to quickly provide accurate answers to user queries related to the trained content. You can refer to {{%link href="/en/convokraft/" %}}this help documentation {{%/link%}} to learn more about the Catalyst ConvoKraft service. # Enable or Disable SmartTrain This API enables or disables **SmartTrain** in the Catalyst ConvoKraft service. When enabled, you can add training materials to enhance the bot’s responses. Disabling it temporarily pauses the bot’s trained knowledge, preventing it from answering queries based on the training data. Once re-enabled, the training is automatically restored, allowing the bot to respond using the previously uploaded materials. You can introduce this functionality in your Catalyst application using the API below. ### Request Details #### Request URL {{%request class="apiblue" req="PATCH" %}}<p>{api-domain}/convokraft/api/v1/bots/{botid}? type=DEVELOPED{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project in which the bot has been created{{%/request_id%}} {{%request_id id="botid" data="Numerical" %}}The unique ID of the ConvoKraft bot {{%/request_id%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 1. The query parameter {{%badge%}}type=DEVELOPED{{%/badge%}} is used to indicate that the bot is in the developed state within the ConvoKraft service. 2. You can fetch the {{%badge%}}botid{{%/badge%}} directly from the URL in the ConvoKraft service when the environment is set to Development in the console. For example : <span style="pointer-events: none;word-break: break-all;">https://console.catalyst.zoho.com/baas/v1/project/183272829220/Development#/convokraft/bots/3828281991118</span> <br> Here, **3828281991118** is the {{%badge%}}botid{{%/badge%}}.{{%/note%}} #### Scope {{%scope%}} ZIAPlatform.Convokraft.RAG.UPDATE {{%/scope%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} {org_id} <br> {{%bold class="bold-primary"%}}X-CATALYST-projectid:{{%/bold%}} {project id} <br> {{%bold class="bold-primary"%}}X-CATALYST-Environment:{{%/bold%}} Development <br> {{%/scope%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} The request header {{%badge%}}CATALYST-Environment: Development{{%/badge%}} indicates that the API operation should be performed on the bot within the {{%link href="/en/deployment-and-billing/environments/development-environment/" %}}Catalyst Development environment{{%/link%}}.{{%/note%}} #### Request JSON Properties {{% nested_fields children="open" border="yes" expandable="no" title="is_rag_enabled" textformat="boolean" condition="mandatory" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to enable the RAG feature and {{%badge%}}false{{%/badge%}} to disable it. <br> Default: {{%badge%}}true{{%/badge%}}.{{% /nested_fields %}} ### Response Details The response will return the status of the SmartTrain enable or disable operation, along with a status message and status code. <br> <br> {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X PATCH \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/convokraft/api/v1/bots/92738220219110?type=DEVELOPED \ -H 'Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57' \ -H 'Content-Type: application/json' \ -H 'CATALYST-ORG: 372822922' \ -H 'X-CATALYST-projectid: 2728172727718' \ -H 'X-CATALYST-Environment: "Development"' \ -\-data '{ "bots": { "is_rag_enabled": true } }' {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "SUCCESS", "code": "SUCCESS", "message": "Updated Successfully." }{{% /panel_without_adjustment %}} {{% expand-container %}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Add Training Material" description: "This API is used to add training URLs to the SmartTrain feature in ConvoKraft." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/convokraft/add-training-material/" service: "ConvoKraft" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/convokraft/add-training-material/" id="AddTrainingMaterial" %}} {{%divtag class="LeftContent"%}} # Add Training Material This API enables you to upload custom training materials to SmartTrain, allowing the ConvoKraft bot to train automatically. You can provide web URLs of the training materials hosted on any third-party platform either in the HTML or TXT format. Once uploaded, the bot processes the content and uses it to respond to relevant queries. You can introduce this functionality in your Catalyst application using the API below. ### Request Details #### Request URL {{%request class="apiyellow" req="POST" %}}<p>{api-domain}/convokraft/api/v1/bots/{botid}/rag_training_data?type=DEVELOPED{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project in which the bot has been created{{%/request_id%}} {{%request_id id="botid" data="Numerical" %}}The unique ID of the ConvoKraft bot {{%/request_id%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 1. The query parameter {{%badge%}}type=DEVELOPED{{%/badge%}} is used to indicate that the bot is in the developed state within the ConvoKraft service. 2. You can fetch the {{%badge%}}botid{{%/badge%}} directly from the URL in the ConvoKraft service when the environment is set to Development in the console. For example : <span style="pointer-events: none;word-break: break-all;">https://console.catalyst.zoho.com/baas/v1/project/183272829220/Development#/convokraft/bots/3828281991118</span> <br> Here, **3828281991118** is the {{%badge%}}botid{{%/badge%}}.{{%/note%}} #### Scope {{%scope%}} ZIAPlatform.Convokraft.RAG.CREATE {{%/scope%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} {org_id} <br> {{%bold class="bold-primary"%}}X-CATALYST-projectid:{{%/bold%}} {project id} <br> {{%bold class="bold-primary"%}}X-CATALYST-Environment:{{%/bold%}} Development <br> {{%/scope%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} The request header {{%badge%}}CATALYST-Environment: Development{{%/badge%}} indicates that the API operation should be performed on the bot within the {{%link href="/en/deployment-and-billing/environments/development-environment/" %}}Catalyst Development environment{{%/link%}}.{{%/note%}} #### Request JSON Properties {{% nested_fields children="open" border="yes" expandable="no" title="rag_training_data" textformat="String" condition="mandatory" maxlength=" " %}}Provide the full URL of the training material pointing to **.html** or **.txt**.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="title" textformat="String" condition="optional" maxlength=" " %}}Provide the title of the training material.{{% /nested_fields %}} ### Response Details This API provides the status of the training material upload process, including the status code and message. It also returns the URLs of the uploaded materials along with a unique ID assigned by ConvoKraft for each URL. <br> <br> {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X POST \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/convokraft/api/v1/bots/92738220219110/rag_training_data?type=DEVELOPED \ -H 'Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57' \ -H 'Content-Type: application/json' \ -H 'CATALYST-ORG: 372822922' \ -H 'X-CATALYST-projectid: 2728172727718' \ -H 'X-CATALYST-Environment: "Development"' \ -\-data '{ "rag_training_data": [ { "url": "https://www.apple.com/iphone-15", "title": "Iphone 15 Specifications" }, { "url": "https://www.apple.com/iphone-11/", "title": "Iphone 11 Specifications" } ] }' {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "SUCCESS", "code": "SUCCESS", "message": "File upload in progress", "info": { "files": [ { "id": "2000000028005", "url": "https://www.apple.com/iphone-15/" }, { "id": "2000000028007", "url": "https://www.apple.com/iphone-11/" }, ] } }{{% /panel_without_adjustment %}} {{% expand-container %}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get Training Materials" description: "This API is used to get the training materials uploaded to the SmartTrain feature in ConvoKraft." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/convokraft/get-training-materials/" service: "ConvoKraft" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/convokraft/get-training-materials/" id="GetTrainingMaterials" %}} {{%divtag class="LeftContent"%}} # Get Training Materials This API allows you to fetch the details and the metadata of the training materials associated with a particular ConvoKraft bot. You can integrate this functionality into your Catalyst application using the API provided below. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/convokraft/api/v1/bots/{botid}/rag_training_data?type=DEVELOPED{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project in which the bot has been created{{%/request_id%}} {{%request_id id="botid" data="Numerical" %}}The unique ID of the ConvoKraft bot {{%/request_id%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 1. The query parameter {{%badge%}}type=DEVELOPED{{%/badge%}} is used to indicate that the bot is in the developed state within the ConvoKraft service. 2. You can fetch the {{%badge%}}botid{{%/badge%}} directly from the URL in the ConvoKraft service when the environment is set to Development in the console. For example : <span style="pointer-events: none;word-break: break-all;">https://console.catalyst.zoho.com/baas/v1/project/183272829220/Development#/convokraft/bots/3828281991118</span> <br> Here, **3828281991118** is the {{%badge%}}botid{{%/badge%}}.{{%/note%}} #### Scope {{%scope%}} ZIAPlatform.Convokraft.RAG.READ {{%/scope%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} {org_id} <br> {{%bold class="bold-primary"%}}X-CATALYST-projectid:{{%/bold%}} {project id} <br> {{%bold class="bold-primary"%}}X-CATALYST-Environment:{{%/bold%}} Development <br> {{%/scope%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} The request header {{%badge%}}CATALYST-Environment: Development{{%/badge%}} indicates that the API operation should be performed on the bot within the {{%link href="/en/deployment-and-billing/environments/development-environment/" %}}Catalyst Development environment{{%/link%}}.{{%/note%}} ### Response Details This API provides details and the metadata of all training materials associated with the bot, including the unique ID generated by ConvoKraft, the title, URL, and status of each training material. It also includes information about the creation and modification of the materials, such as the user's email address, time zone, ZUID, role, and other relevant details, along with the creation and modification timestamps. {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X GET \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/convokraft/api/v1/bots/92738220219110/rag_training_data?type=DEVELOPED \ -H 'Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57' \ -H 'Content-Type: application/json' \ -H 'CATALYST-ORG: 372822922' \ -H 'X-CATALYST-projectid: 2728172727718' \ -H 'X-CATALYST-Environment: "Development"' \ {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Response" class="language-json line-numbers"%}} { "rag_training_data": [ { "id": "67799000000085007", "title": "Iphone 15 Specifications", "url": "https://www.apple.com/iphone-15/", "source": "URL", "created_by": { "id": "76859507", "email": "amelia.burrows@zylker.com", "username": "amelia.burrows", "timezone": "Asia/Calcutta", "nickname": "amelia", "locale": "en_IN", "role": "SUPER_ADMIN", "zuid": "76859507" }, "created_time": "1732880033148", "modified_by": { "id": "76859507", "email": "amelia.burrows@zylker.com", "username": "amelia.burrows", "timezone": "Asia/Calcutta", "nickname": "nivetha.raja", "locale": "en_IN", "role": "SUPER_ADMIN", "zuid": "76859507" }, "modified_time": "1732880389581", "status": "TRAINED" }, { "id": "67799000000085009", "title": "Iphone 11 Specifications", "url": "https://www.apple.com/iphone-11/", "source": "URL", "created_by": { "id": "76859507", "email": "amelia.burrows", "username": "amelia.burrows", "timezone": "Asia/Calcutta", "nickname": "amelia", "locale": "en_IN", "role": "SUPER_ADMIN", "zuid": "76859507" }, "created_time": "1732880131250", "modified_by": { "id": "76859507", "email": "amelia.burrows@zylker.com", "username": "amelia.burrows", "timezone": "Asia/Calcutta", "nickname": "amelia", "locale": "en_IN", "role": "SUPER_ADMIN", "zuid": "76859507" }, "modified_time": "1732880131250", "status": "TRAINED" } ] }{{% /panel_without_adjustment %}} {{% expand-container %}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Delete Training Material" description: "This API is used to delete the uploaded training materials from the SmartTrain feature in ConvoKraft." last_updated: "2026-03-18T07:41:08.555Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/convokraft/delete-training-material/" service: "ConvoKraft" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/convokraft/delete-training-material/" id="DeleteTrainingMaterial" %}} {{%divtag class="LeftContent"%}} # Delete Training Material This API enables you to delete the custom training materials uploaded to the SmartTrain feature in the ConvoKraft bot by providing the unique ID assigned to each material in the request. You can also delete multiple materials at once by passing the IDs separated by commas. Please note that deleting the training material will automatically delete the trained knowledge in the bot, and it will not be able to answer any queries based on the deleted training material. You can integrate this functionality into your Catalyst application using the API provided below. ### Request Details #### Request URL {{%request class="apired" req="DELETE" %}}<p>{api-domain}/convokraft/api/v1/bots/{botid}/rag_training_data?type=DEVELOPED{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project in which the bot has been created{{%/request_id%}} {{%request_id id="botid" data="Numerical" %}}The unique ID of the ConvoKraft bot {{%/request_id%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} 1. The query parameter {{%badge%}}type=DEVELOPED{{%/badge%}} is used to indicate that the bot is in the developed state within the ConvoKraft service. 2. You can fetch the {{%badge%}}botid{{%/badge%}} directly from the URL in the ConvoKraft service when the environment is set to Development in the console. For example : <span style="pointer-events: none;word-break: break-all;">https://console.catalyst.zoho.com/baas/v1/project/183272829220/Development#/convokraft/bots/3828281991118</span> <br> Here, **3828281991118** is the {{%badge%}}botid{{%/badge%}}.{{%/note%}} #### Scope {{%scope%}} ZIAPlatform.Convokraft.RAG.DELETE {{%/scope%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} {org_id} <br> {{%bold class="bold-primary"%}}X-CATALYST-projectid:{{%/bold%}} {project id} <br> {{%bold class="bold-primary"%}}X-CATALYST-Environment:{{%/bold%}} Development <br> {{%/scope%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} The request header {{%badge%}}CATALYST-Environment: Development{{%/badge%}} indicates that the API operation should be performed on the bot within the {{%link href="/en/deployment-and-billing/environments/development-environment/" %}}Catalyst Development environment{{%/link%}}.{{%/note%}} #### Request JSON Properties {{% nested_fields children="open" border="yes" expandable="no" title="rag_training_data" textformat="Numerical" condition="mandatory" maxlength=" " %}}Provide the unique ID of the training material generated by ConvoKraft.{{% /nested_fields %}} ### Response Details This API returns the status of the delete operation along with its status code and message.<br> <br> {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X DELETE \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/convokraft/api/v1/bots/92738220219110/rag_training_data?type=DEVELOPED \ -H 'Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57' \ -H 'Content-Type: application/json' \ -H 'CATALYST-ORG: 372822922' \ -H 'X-CATALYST-projectid: 2728172727718' \ -H 'X-CATALYST-Environment: "Development"' \ -\-data '{ "rag_training_data": [ { "id": "67799000000084013" } ] }' {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Response" class="language-json line-numbers"%}} { "status": "SUCCESS", "code": "SUCCESS", "message": "Updated Successfully." } {{% /panel_without_adjustment %}} {{% expand-container %}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Fetch Answer from Bot" description: "This API is used to fetch answers from the trained bot after enabling SmartTrain in ConvoKraft." last_updated: "2026-03-18T07:41:08.556Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/convokraft/fetch-answer-from-bot/" service: "ConvoKraft" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/convokraft/fetch-answer-from-bot/" id="FetchAnswerfromBot" %}} {{%divtag class="LeftContent"%}} # Fetch Answer from Bot This API enables you to retrieve an answer from the ConvoKraft bot by submitting a transcript query. The bot will understand the question and respond with an answer based on its training. You can integrate this functionality into your Catalyst application using the API provided below. ### Request Details #### Request URL {{%request class="apiyellow" req="POST" %}}<p>{api-domain}/convokraft/api/v1/bots/{production_botid}/answer{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project in which the bot has been created{{%/request_id%}} {{%request_id id="production_botid" data="Numerical" %}}The unique ID of the ConvoKraft bot in the production environment{{%/request_id%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} You can fetch the {{%badge%}}production_botid{{%/badge%}} directly from the URL in the ConvoKraft service when the environment is set to Production in the console. For example : <span style="pointer-events: none;word-break: break-all;">https://console.catalyst.zoho.com/baas/v1/project/183272829220/Production#/convokraft/bots/3828281991118</span> <br> Here, **3828281991118** is the {{%badge%}}production_botid{{%/badge%}}.{{%/note%}} #### Scope {{%scope%}} ZIAPlatform.Convokraft.RAG.CREATE {{%/scope%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} {org_id} <br> {{%bold class="bold-primary"%}}X-CATALYST-projectid:{{%/bold%}} {project id} <br> {{%bold class="bold-primary"%}}X-CATALYST-Environment:{{%/bold%}} Development <br> {{%/scope%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} The request header {{%badge%}}CATALYST-Environment: Production{{%/badge%}} indicates that the API operation should be performed on the bot within the {{%link href="/en/deployment-and-billing/environments/production-environment/" %}}Catalyst Production environment{{%/link%}}.{{%/note%}} ### Response Details The API returns the answer provided by ConvoKraft based on the training material, along with the status of the answer retrieval process. <br> {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_without_adjustment header="Sample Request" class="language-bash" %}}curl -X POST \ https://api.catalyst.zoho.com/convokraft/api/v1/bots/92738220219110/answer \ -H 'Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57' \ -H 'Content-Type: application/json' \ -H 'CATALYST-ORG: 372822922' \ -H 'X-CATALYST-projectid: 2728172727718' \ -H 'X-CATALYST-Environment: "Production"' \ -\-data '{ "transcript": { "message": "Explain Iphone 11 Specifications" } }' {{% /panel_without_adjustment %}} {{% panel_without_adjustment header="Sample Response" class="language-json line-numbers"%}} { "transcript": { "message": "The iPhone 11 is a sleek and powerful smartphone from Apple, featuring a 6.1-inch Liquid Retina HD display that offers vibrant colors and sharp detail. It's powered by the A13 Bionic chip, which ensures fast performance and smooth multitasking. Whether you're gaming, editing photos, or using apps, the iPhone 11 can handle it with ease. One of the standout features of the iPhone 11 is its camera system. It has a dual-camera setup, with a 12MP wide and ultra-wide lens, making it great for capturing detailed photos and videos. The Night Mode feature helps take clearer pictures in low-light environments, and it also supports 4K video recording at 60fps, allowing you to shoot high-quality videos.", "status": "action_completion" } } {{% /panel_without_adjustment %}} {{% expand-container %}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} --- ## FAQ — ConvoKraft # General {{% expand-container %}} {{% expand id="what_is_zia" header="What is Catalyst ConvoKraft?" %}} Catalyst ConvoKraft is an AI-driven service used to build conversational bots that can be configured to comprehend user's message, its intent and respond back conversationally in English. You can configure the backend logic of the ConvoKraft bots using Catalyst Integration Functions or Deluge. You can also code it any programming language of your choice, store it in any publicly accessible external servers and access them in ConvoKraft using Webhooks. {{%/expand%}} {{% expand id="what_is_zia" header="Can I get the current session logged in user's details from my catalyst application to my bot?" %}} Bots created in convokraft is unauthenticated and you will not be able to get the current logged in user's details from your catalyst application. {{%/expand%}} {{%/expand-container%}} # Bots {{% expand-container %}} {{% expand id="what_is_zia" header="How do I embed the ConvoKraft bot in my application?" %}} We provide a JavaScript Client SDK package that allows you to embed the ConvoKraft bot in your application at ease. It contains elements to customize the chat window such as the header, title, alignment etc. Refer this page to know more about the various elements and their usage. {{%/expand%}} {{% expand id="what_is_zia" header="Is it mandatory to train the bot every time I make a change to the action configuration?" %}} Yes, you will need to click the Train button in the console and train the bot every time after you make a change. This will help the bot analyze common invocation patterns and train the Natural Language Processing Models in the backend. These models help in developing strong correlations between different variations of the same user query and respond back to the user intellectually. {{%/expand%}} {{% expand id="what_is_zia" header="Will I be able to get the usage stats of my convokraft bot?" %}} Yes, you will be able to get the usage statistics of your bot's interaction from the catalyst console in the bot's production environment. {{%/expand%}} {{% expand id="what_is_zia" header="Will I be able to train the bot based on a business logic or is it simply queries the db and displays the answers to particular set of questions?" %}} Yes, you will be able to train the bot based on a business logic as well as a direct answer. You need to provide the different sets of sample questions and answers in order to train the bot. Once trained, the bot will answer the queries based on the trained data. {{%/expand%}} {{% expand id="what_is_zia" header="Is there a way to deactivate my bot temporarily?" %}} You can either activate/deactivate the bot temporaily directly from the catalyst console. {{%/expand%}} {{%/expand-container%}} # Actions {{% expand-container %}} {{% expand id="what_is_zia" header="How do I handle failure in my bot's configured actions?" %}} You can code your failure handler either in deluge or integrate a catalyst function in order to handle the failure and also notify you by sending an email on the failure event from your function. {{%/expand%}} {{% expand id="what_is_zia" header="I prefer Deluge to code the functions and handlers for the bot. To implement some complex logic such as sending an email to the user or an iterative task, I have to code in a java function. Will I be able to call the catalyst java function within the bot's deluge function?" %}} Yes, you can use the invokeURL() deluge function in order to make an API call to catalyst function endpoint and get the response. {{%/expand%}} {{%/expand-container%}} # Handlers {{% expand-container %}} {{% expand id="what_is_zia" header="How do I code my bot's associated handlers or integrate an existing catalyst function to the bot created in convokraft?" %}} You can code your various handlers such as welcome handlers, failure handlers from the console using zoho's own scripting language Deluge from the console itself and also test the function. You can also associate a catalyst integration function to the bot to a particular action. Whenever the bot has been accessed for the particlaur action, your integration function will be automatically called and the response will be returned to the user via the bot. {{%/expand%}} {{% expand id="what_is_zia" header="How do I use handlers when I'm not developing my bot logic in Deluge?" %}} If you choose to develop the bot logic of your ConvoKraft bots using Catalyst Integration Functions or access the backend logic coded in any external servers using Webhooks, then you can simply enable the required handlers (Welcome Message Handler, Fallback Handler, Failure Handler) and then code the logic in the respective handler functions in your codebase. You can learn more about this from this page. {{%/expand%}} {{%/expand-container%}}