ContributionsMost RecentMost LikesSolutionsAction Execute an action, likeCloud Codeor calling awebhook. Tag You can apply or remove tags within a flow. Tags can be used to measure flow conversion or build segments of contacts. Conditions and Code Actions also support tags. All tag operations are recorded in the 'user.tagsHistory' list accessible in Code actions. The following tag operations are recorded: Adding tag Removing tag Updating existing tag with a new value 📘 Note:tagsHistorylist only includes 200 most recent items which means that if your bot has more than 200 tags, a user you will not see oldest history. This does not affect the amount of tags single user can have, they are not limited which means you can attach as many tags as you need, howevertagsHistorywill only display 200 latest items. Adding tag You can add new tags and specify both a name and a value. If a tag with the same name but a different value is added, it will overwrite the existing tag with the same name. Removing tags You can remove one or multiple tags within a flow. Reset Resetting a flow drops any current conversational context and parameters. Everything Reset all flows, parameters, and context. Basically, this reply action clears the bot's memory. 🚧 Caution: Resetting all context at the wrong place in the flow prevents the AI engine from finding matches. Use this action sparingly and purposely. All parameters Only resets the parameters of your bot. All the collected values will be reset. The context, however, will be remembered as the conversation flow. Specific parameters This will reset only specific parameters within your flow. Use this for example when you want to replace parameters with new values. Resolve Resolve your conversations automatically without having to archive them manually. The resolve action works like the handover but instead of moving a conversation into ahandoverstate, it resolves it. Conversation can be resolved with: Reason (fixed): bot, agent Resolution (free text): ‘ABC’, ‘spam’ etc 📘 Note: Both the reason and resolution can be used for analytics purposes. Automatic resolves Instead of adding a resolve action inside a flow, you can also resolve all conversations that are older than a certain date or remove all data that was last updated before a certain date. 📘 Note: To enable this feature within your project settings you'll have to upgrade to an enterprise plan. You can read more about automatic resolveshere . Handover Indicates that a conversation requires human assistance. Optionally, you can specify the bot not reply to a user while in handover state. Integrations Built-in integrations likeKhorosandFrontrequire the handover action to let agents within those systems pick up conversations. Hand back Handing back a conversation to the bot is done within a customer service solution or the Flow Chat app. Change in bot handover duration Overview To optimize database performance, the default pause duration for bot handover to an agent has been revised. Previously, this duration was set to indefinite, which negatively impacted the database.The new maximum duration has been set to 3 months.This document outlines the details of this change and provides guidance on its implementation. Rationale for Change Database Performance Optimization:The indefinite pause duration caused an accumulation of unclosed conversations, straining the database resources and leading to performance issues. Operational Efficiency:A 3-month period is deemed sufficient for resolving customer queries. If a conversation remains unresolved beyond this period, it indicates a potential issue in the customer’s process that needs to be addressed. Expected Benefits Improved Database Performance:Reduction in the number of indefinitely paused conversations will lead to better resource management and performance. Enhanced Customer Service: Encourages timely resolution of customer queries and highlights process inefficiencies in customer handling. WhatsApp templated messages Flow supports template messages for Cloud API business platforms. You can send templated messages using Flow reply and Code Actions, which enables you to broadcast structured information to your customers. To send template messages, you must first integrate WhatsApp into a Flow project. Read more about WhatsApp integration and messaging capabilities. Configure in Khoros Care Go to KhorosCare Configuration > WhatsApp Business Manager. Copy theMessage Template Namespacefrom the WhatsApp Business Account details. You can select any of the templates from theApproved Templateslist. You need the Template namespace for the reply in the flow design. You can implement message templates by using the Template reply or Code Actions. Use a Template Reply Create a flow. Drag and drop the Event trigger into the canvas. Note:We recommend starting the flow with the Event trigger to broadcast the templated message. Drag and drop the Template reply into the canvas. Enter the template name in theTemplatefield. Provide the same name as you did in Care. Paste the template namespace in theNamespacefield. Choose a language from theLanguagedrop-down menu. Select the same language you set for the template in Care. (Optional) Enter the template message in theTemplate messagefield. This is automatically applied based on the approved template. Note:The entries for the above fields must be pre-approved by Whatsapp and should be as per the configurations of the selected and approved templates. (Optional) Select aMedia Header:Text,Image,Video, orFileto include media in the template message. None is selected by default. Add all body text (if applicable) and configure it. You can use parameters in body text like regular replies {{param_name}}. Note: If the body text is missing or invalid, your message will not be sent. Select the Body Text type based on the message:Text,Currency, orDate. Enter the value in theParamfield. For currency, selectCurrency TypeandAmount. For date, select theDateandTimefor a particular timezone. ClickSAVEto save the flow. Code Action Example You can alternatively use the code action to send templated messages on WhatsApp—the following code samples can be used for sending templated messages. Ensure that you change the variables as per your organization settings. Create a basic template without body text: async payload => { try { const language = new WhatsApp.Language({ policy: "deterministic", code: "en_US", // change this to supported language }) const template = new WhatsApp.Template({ namespace: "your_namespace", name: "your_template_name", language: language, components: [] }) const message = new Message("my fallback").addResponse(template) return message } catch(err) { console.error(err) } } Create different types of header parameters: async payload => { try { const headerText = new WhatsApp.Header({ type: 'text', value: 'example text' }) // type text const headerMedia = new WhatsApp.Header({ type: 'image', // can be ‘video’ or ‘document’ value: 'https://example.media.com’', providerName: 'test Provider', //optional filename: 'test file' //optional }) // type media } catch(err) { console.error(err) } } Add the parameter to the header: async payload => { try { const header = new WhatsApp.Components({ type: ‘header’ }) const headerText = new WhatsApp.Header({ type:'text', value: 'example text' }) header.parameters.push(headerText) // or // const headerMedia = new WhatsApp.Header({ // type: 'image', // value: 'https://example.media.com’', // providerName: 'test Provider', // filename: 'test file' // }) // header.parameters.push( headerMedia ) } catch(err) { console.error(err) } } Create different types of body parameters: async payload => { try { const text = new WhatsApp.Header({ "type": "text", "value": "Example text" }) // type text const currency = new WhatsApp.Currency({ "fallback_value": "$10", "code": "USD", "amount_1000": 10000 // amount_1000 = actual_value * 1000, here actual_value =10 }) // type currency const dateTime = new WhatsApp.DateTime({ "fallback_value": "February 29, 2024", “day_of_week”: 1, // optional "day_of_month": 25, "year": 1977, "month": 2, "hour": 15, "minute": 33, }) // type date_time } catch(err) { console.error(err) } } Add body parameters to the body: async payload => { try { const text = new WhatsApp.Header({ "type": "text", "value": "Example text" }) const currency = new WhatsApp.Currency({ "fallback_value": "$10", "code": "USD", "amount_1000": 10000 }) const body = new WhatsApp.Components( { type: “body” } ) body.parameters.push(text) body.parameters.push(currency) } catch(err) { console.error(err) } } Create a template with body and header: In the example, add the header and body created in the previous steps into the component of the template. const template = new WhatsApp.Template({ namespace: "your_namespace", name: "your_template_name", language: language, components: [ header, body ] ← add here }) For more information, readWhatsApp Message TemplateandMedia Message Templates. Rich UI Components Use Rich UI Components to reply with UI widgets like cards, images, and videos. 📘 Note: For each UI widget, you can specify a customized speech response. Location Use Location reply actions to quickly send a location to your users. Depending on the capabilities of the channel used by the user, location messages are rendered either as a map image or as a Google Maps link. The user can then open that location in the mapping application built into their OS or in Google Maps. Buttons You can use buttons in your bots to enhance the experience and make it easier for customer to choose an action. Buttons can complete the following actions: Trigger an event Send text as the user Open a URL Open a URL in a web view The button does not disappear after the user taps on it. As such, the user can click it multiple times. 📘 Note: Not all channels support opening URLs or web views. Card Cards are compound messages consisting of text, images, or buttons. Depending on the connected messaging channel, cards are rendered differently. Carousel Carousel messages include a set ofcardsthat scroll horizontally. Carousels can contain text, images, and buttons. Not all messaging channels fully support carousel messages. To check the level of support across Flow messaging channels, seeintegration capabilities. Quick Reply Quick Replies are a great way to walk the user through a specific flow, by suggesting the next course of action. A quick reply, once tapped, inserts a reply on behalf of the user. Quick replies are invaluable when building a bot or automated conversation flow, because they keep your user focused and provide clear instructions on how to proceed. Each Quick Reply button has an associated action, which uniquely identifies the intent of the action. When the user answers with one of the suggested quick replies, one of the following actions is performed: Trigger an event Send text as the user Unlikebutton, Quick Replies disappear after the user taps on one or if a new inbound or outbound message arrives. List List messages include a list of items that scroll vertically and can contain text, images, or buttons. Not all messaging channels fully support list messages. To check the level of support across Flow messaging channels, seeintegration capabilities. Media Use Media Replies to send images, videos, and audio replies. Requirements Image or video files must be remotely accessible and hosted on a secure (https) environment. Send an image. Depending on the channel your solution integrates with, images are cropped. For best results, use images that maintain a 1.91:1 or 1:1 (square) aspect ratio. Recommended file formats are: Media Format image .png, .jpeg, .gif video .m4v audio .m4a, .mp3, .wav 📘 Note: At this time, you cannot share YouTube videos. Event You can use Event reply actions to jump to another part of a flow. Event replies are great for breaking up flows into multiple re-usable parts. Text A basic form of reply that translates into spoken word or text bubbles, depending on the channel. String Templates String templates are variables that can be used within Any text trigger. They can be used also in text replies, titles and subtitles of a card and in button labels. For example: Param selection Multiple params render as a list within string templates. You can select the elements that will be rendered. For example to access the last element of the list use param.last.match: First element of the list can be accessed by param.first.match or param.0.match. It also works with value: param.first.value, param.last.value, param.any_digit.value. Within text replies you can use variables that are matched by the AI. If you trained the AI to match entities they can be used with a template syntax. For example if you trained the AI with a entity called country, you will be able use it like so: I am going to check the weather for {{country}} This would result in a response like: I am going to check the weather for France Entity matches could be fuzzy and by default templates print the value of a matched parameter. You can also access the match by using {{param.match}} Text variants It's also possible to send different replies to make your dialog less repetitive Public Mention This trigger enables brands to automatically trigger chatbot responses on bothFacebook and Instagramwhen users mention the brand in public posts. It complements the existing functionality that allows for automatic responses to story mentions and replies. Brands can maintain a consistent and immediate presence on both platforms, fostering better engagement and interaction with their audience through direct messages as well. How it works Detection of Mentions: The system detects when a user mentions the brand in a public Facebook or Instagram post by identifying the brand’s handle in the post caption or comments. Trigger Chatbot Response: You can design your responses for aMention Triggerjust like for any other trigger Customizable Responses: Brands can customize responses based on specific keywords, the sentiment of the mention, or the context. Different responses can be set for various scenarios, such as positive mentions, queries, or complaints. Example Scenarios Scenario 1: Influencer Mention An influencer mentions the brand in a public Facebook or Instagram post. The system detects the mention and triggers a chatbot response that thanks the influencer and offers a discount code for their followers. Scenario 2: Customer Query A user mentions the brand in a comment asking about product availability on Facebook or Instagram. The system detects the query and triggers a chatbot response providing information about product availability and a link to the brand’s website. Empty Message TheEmpty Messagetrigger is a new feature integrated into Flow to enhance user interaction. When a user sends an empty message, theEmpty Messagetrigger is activated, allowing your bot to handle this scenario. Key Features Universal Trigger TheEmpty Messagetrigger is designed to work universally across all integrations withKhoros Care. Sending an empty message will trigger this feature regardless of the channel. TheEmpty Messagetrigger is a generic trigger for all integrations with Khoros Care.## Contextual Usage TheEmpty Messagetrigger can be utilized both at the start or in the middle of a Flow. How to use it Designing & Testing You can drag & drop theEmpty Messagetrigger into your Flows from the right panel, just like any other action. To test theEmpty Messagetrigger, simply send an empty message during a chatbot interaction. Image showing the Empty Message trigger in the Actions panel Integration & Configuration TheEmpty Messagetrigger seamlessly integrates into existing chatbot workflows. There is no need for additional configuration or setup, making it easy to implement across various platforms. Upon selecting theEmpty Messagetrigger, you will notice that there are no additional settings visible on the right panel. AnEmpty Messagetrigger will always behave in the exact same way: it will be triggered when the user sends an empty message. Optimized Experience TheUnknowndoesn't get matched for empty messages, so these would not trigger any bot flow without the use of theEmpty Message trigger. By adding both to your bot, you can ensure customers do not get ignored by your automation.