# Table of contents GoChat is a chatbot platform for small & medium businesses. Connect With Your Customers Instantly, Effortlessly & Everywhere over 12+ social channels. Increase your revenue, reduce operation costs & delight your customers. * [README](README.md) * [Account Setup](account-setup.md) * [Main view](building-your-first-chatbot.md) * [Building a chatbot](building-your-first-chatbot-1/README.md) * [Flow builder](building-your-first-chatbot-1/building-your-first-chatbot.md) * [AI Hub](building-your-first-chatbot-1/ai-hub.md) * [Fields & variables](building-your-first-chatbot-1/fields-and-variables.md) * [Channels and Integrations](channels-and-integrations/README.md) * [Omnichannel (what is?)](channels-and-integrations/omnichannel.md) * [WhatsApp Cloud](channels-and-integrations/whatsapp-cloud/README.md) * [Set up a new phone from zero](channels-and-integrations/whatsapp-cloud/whatsapp-cloud.md) * [Set up if you want to migrate from another platform](channels-and-integrations/whatsapp-cloud/whatsapp-cloud-1.md) * [Facebook](channels-and-integrations/facebook-bot/README.md) * [Customer feedback (facebook)](channels-and-integrations/facebook-bot/customer-feedback-facebook.md) * [Instagram](channels-and-integrations/instagram-bot.md) * [Webchat Channel](channels-and-integrations/webchat-channel.md) * [Google My Business](channels-and-integrations/google-my-business.md) * [SMS & Voice](channels-and-integrations/sms-voice.md) * [Telegram](channels-and-integrations/telegram-bot.md) * [Broadcasts](broadcasts.md) * [Tools](tools/README.md) * [Error Logs](tools/customer-feedback-facebook.md) * [Testers](tools/testers.md) * [Admins](tools/admins.md) * [Widgets](tools/widgets.md) * [Multiple Languages](tools/multiple-languages.md) * [Inbound Webhooks](tools/inbound-webhooks.md) * [Automation](automations-and-workflows/README.md) * [Keywords](automations-and-workflows/keywords.md) * [Sequences](automations-and-workflows/sequences.md) * [Content](automations-and-workflows/content.md) * [Tags](automations-and-workflows/tags.md) * [Triggers](automations-and-workflows/triggers.md) * [Comment Keywords](automations-and-workflows/comment-keywords.md) * [API docs](api.md) * [FAQ & Common Errors](common-errors/README.md) * [Platform default limits](common-errors/platform-default-limits.md) # Account Setup ## Managing Your Profile Update Your Profile: * In the settings menu, you can update several details including your profile photo, username, email address, timezone, and time format. * Make sure to save any changes you make. Manage Members and Roles (if you have ownership or admin rights): * As an owner, you can manage workspace members, inviting new members or editing existing roles. * Admins have limited access compared to owners but can manage channels, integrations, and templates. ## Billing and Subscription de GoChat ### Billing Options Billing can be managed in two ways: * Added to the recurring payment for Hyppo's consulting services. * Self-managed using a debit/credit card. ### Plans * Free Plan and Business Plan. * To switch to the Business Plan, go to the Billing menu. ![](.gitbook/assets/image174.png) At any time, you can downgrade to the Free Plan without incurring additional costs. ### Add-ons and Top-up Points * To add add-ons to the account, monthly point payments are required. * Each account has a set number of points that must be purchased through GoChat or agreed upon with Hyppo in advance as part of the billing model. ![](.gitbook/assets/image302.png) For the "Credit Card" payment method, make sure you don’t run out of points. Manage your point Top-Up from the following menu. * 1 point = 1 USD ![](.gitbook/assets/image153.png) Points are used for renewing the monthly subscription and add-ons. You must have enough points available to purchase an add-on. To manage add-ons, go to the following menu: ![](.gitbook/assets/image232.png) Add or remove add-ons. ![](.gitbook/assets/image270.png) ![](.gitbook/assets/image142.png) # API docs Checkout API details in [Swagger API Documentation](https://gochat.hyppo.io/api) See [API limits](common-errors/platform-default-limits.md) ### Intro to APIs GoChat API is used to retrieve data from the flow you build. Here are some examples that you could do with GoChat API. * Pull the flow you have built from GoChat. * Create, delete or obtain data including flow tag, flow field. * Dealing with the data about the subscribers, involving getting the subsribers' information, editing their tag or field as well as the subflow sended to the subscribers. * Configure all the data used in e-commerce such as carts or products. If you need to deal with the data below, next sections will introduce the steps to use the GoChat API. ### Authorize Since the protection of the data is important to the API, it needs to use several attribute to authorize your identity. Therefore, the first step you must do is to enter the authorized information. You need to click the Authorize button, as the following figure shown.
Then, there are three attributes that you need to fill in the textbox.
Here are the ways to find these attributes in the following section. #### Generate API Key (http,Bearer) Step 1 After you login the account in GoChat, at the top right corner, it will show your account name and avatar. Click it and choose the Your Settings in the dropdown list.
Step 2 Go to the API Keys Section by clicking the button in the User Setting. Enter the key name you would like to set and click the Create button.
Step 3 Then you will get key in a pop-up window.
WARNING Here is your new API Key. This is the only time the key will ever be displayed, so be sure not to lose it! You may revoke the key at any time from your API settings. Close the window you will get the basic information about the key except the value of the key. ### Get the Curl and Request URL Curl is used in API requests. In GoChat API documentation, you need some operation before getting the curl in the GoChat api documentation. Here, we use Get Flow Tag as an example.
Step 1. Click the expand operation of category, the Flow Tag in this case. Then find the action and the feature, Get /flow/tags. Click the row and a page will dropdown shown as following.
Step 2. This logo means authorize. If you have done this before, this step is not required. Or, you just do the same as it was mentioned before in the Authorize section. Step 3. Click Try it out. Then you will see that the Parameters or Request body part could be inputted and the Exexute Button is shown at the bottom of this part.
Step 4. Enter the parameters or request body required and click the Exexute Button. Finally you will get the Curl and Request URL.
TIP Click the Clear button if you need reset the parameters. ### Responses This part display the Json result you will get from the GoChat API. Normally if the code is 200, it means that you get the response successfully. If the code is 400, it means that there is error in your response.
### Example Value / Schema
Apart from example value, you can click on "Schema" to view more details like which value is mandatory.
\ # Broadcasts Use this feature to broadcast messages to your users! Just a few settings needed.
Go "Broadcasts" from the left sidebar, then click "+ New Broadcast".
![broadcast](.gitbook/assets/image416.png) To set up: 1. give a broadcast title (for yourself, not users) 2. select a sub flow 3. add conditions to filter who will receive this broadcast message ![broadcast](.gitbook/assets/image139.png) TIP To send to all users, try this condition "If User Id has any value". ![broadcast](.gitbook/assets/image322.png) Fill in the rest settings like message type and time to send then click "Save". If you choose "Now" for the schedule, the message will be sent once you click "Save". If not, you can cancel the broadcast anytime before it is sent. ![broadcast](.gitbook/assets/image183.png) Here is also where you check broadcast history and data. # Main view After logging in, your dashboard will look like the above. Feel free to explore it! 😆
#### Dashboard The dashboard shows you an overview of your workspace (team). Click the three buttons at the bottom for linking to our Facebook Community, YouTube Channel and Documentation. #### Bots Currently, GoChat supports 12 types of channels. Facebook, Instagram, Telegram, Slack, WeChat, WhatsApp, SMS, Voice, Google, Line, Viber and Vk. Click one of them, then you can see video guidance about how to set up the channel. #### Analytics Check analysis data here. You can click the "Last 30 days" dropdown list to adjust the period. ![overview of sidebar](.gitbook/assets/image259.png) #### Template Store Template store lists all publicly shared templates across the system. All GoChat users can publish their templates and install others' templates here. #### Integrations Here is where you manage all your integrations including your phone numbers, installed mini-apps, and other third-party services. Check the "Integration" document for detailed guidance accordingly. #### Mini-Apps Mini-Apps store lists all publicly shared mini-apps across the system. All GoChat users can publish their templates and install others' mini-apps here. #### Ecommerce E-commerce section is for managing an e-commerce system for the whole workspace. Your products information can be used across all channels and all chatbots. Also, orders from any channel any chatbot will be listed here. #### My Contents In "Contents", you can manage all the templates, mini-apps and email templates that created by you. #### Workspace Settings Workspace settings allow you to edit workspace profiles, manage all the members in your workspace as well as the channels settings. # Comment Keywords A very important and great feature inside of GoChat is the ability to let the chatbot comment, like and send a person a pm when that person responds to on a post on your Facebook and or Instagram page. You can find this if you go to the left-hand menu and press Automation then select the Comment Keyword tab. From here you will have a blue button in the top right corner name + New Comment Keyword. ![title](../.gitbook/assets/image125.png) ## How to create a Comment Keyword Once you have pressed the blue button + New Comment Keyword then a pop-up window will open up. From here you will be able to set up your comment keyword trigger. ![title](../.gitbook/assets/image116.png) If we follow along with the image above we have 6 steps to take. During step 1 you will be able to select any of your Facebook or Instagram page posts depending on which channel you are in. With step 2 you are able to type in your keywords and determine the condition on when it needs to be triggered. By default, it is on contains, but you have the following options to choose from: “If comment: Is Contains Starts with Is anything One of the following keywords” Do note that if you select Is anything the ability to type in your keywords will be disabled. On step 3 you will be able to create variations with which the chatbot will be able to reply to users who comment on your Page posts. Advised is to at least add 5 variations to avoid the algorithm marking the replies as spam. With step 4 you will be able to add the flow that will be triggered when the chatbot will send the pm to the commenter. NOTE: make sure that your initial message contains only 1 text message with a button. As this counts as a user opt-in the user first needs to interact with this message before becoming a subscriber to your chatbot. Inside of step 5 you are able to set up a delay for when the chatbot should reply and send a pm to the user. This will make it more human-like experience-wise. But it is totally optional. In the final step, you will be able to match any of the settings to your liking. Once done press the blue button on the top right or bottom name Save and your comment keyword will now be shown in the main overview ![title](../.gitbook/assets/image7.png) # Content ## Custom Fields ### Bot fields Similar to user fields you can also create bot fields. The main difference is with user fields you store data to segment and share with that specific bot user, and bot fields allow you to store data and show them all equally among all bot users. The value does not change. Think of information such as opening hours, or contact details for the business. ### Creating a bot field You can create a bot field by going to the bot field overview tab. You can do so by pressing Contents from the left-hand menu and from there press the tab called Bot Fields. ![title](../.gitbook/assets/image295.png) If you want to create a new bot field just press the button in the top right corner named + New Bot Field. From here a pop-up window will appear where you can create your bot field. ![title](../.gitbook/assets/image86.png) After naming your new bot field you can select the type of field you would like it to have. Currently, we have the following ones available for you; * Text * Number * Boolean * Date * Datetime * JSON After selecting the type you can start adding the value to this bot field. If you like a description can also be added same as the folder you want to move it to. After everything is filled in just press the button in the bottom-right corner named Save to create the bot field. ### Managing your bot fields After you created the bot field you are able to manage it from the main overview. ![title](../.gitbook/assets/image192.png) You can create folders to better keep track of your bot fields. You can also enable or disable the template field option. Lastly, you are able to edit the bot field itself by pressing the pencil icon to the right of any bot field. ### User fields User fields can be used to store data you collect from your bot users throughout the conversations you have with them. It will help you segment the users inside of a flow and allows you to create more customized funnels that will help you convert. There are two ways to create a user field. We will explain both steps in this documentation. #### Create User field in tab overview To find the user field overview press Contents from the left-hand menu and then select the User fields tab. ![title](../.gitbook/assets/image238.png) From here you will come to your user fields overview where you can manage all of your user fields you create. To create a new user field press the blue button in the top right corner named + New User Field. From here a new pop up window will appear where you will be able to set up your new user field. ![title](../.gitbook/assets/image95.png) Just name your new user field. The next step is to select what kind of user field you like to create. Currently, we have the following available for you: * Text * Number * Boolean * Date * Datetime * JSON These fields allow you to set up all kinds of options inside your chatbot including saving data from bot users or API calls as an array. You can also add a description if you like and or want to clarify what the function is. Below the description, you will be able to select whether or not you want to move it into one of the folders you might have created to keep user fields more structured and easy to find. Once you are done just press the blue button in the bottom right named Save and your user field will be created. #### Create user field inside flow builder Another way to create a user field is by doing so directly inside the flow builder. This has the huge advantage that you can create user fields on the fly and not have to go to the user fields overview tab first. Just go to any flow and from here you can create user fields anywhere you need to use them. You will be able to create them inside of: * Question blocks * Action blocks -› set custom variable * External request -› response tab Let’s take an example of a question block. We are wanting to store the response to the question inside of a new user field. ![title](../.gitbook/assets/image195.png) Just start typing a new user field name. The next step is to press the same name below your typed one to create the user field on the spot. You will then be asked which type of user field you would like to create. Depending on where you are or what kind of question you get to see different kinds of options. ![title](../.gitbook/assets/image343.png) In this case, since it is a regular question block we get to see; * Text * Number * Boolean Were you to ask for a date/time type of question you would get to see that type of custom field only. #### Managing your user fields To manage all your user fields you can do so at the main user fields overview tab. ![title](../.gitbook/assets/image368.png) You can create folders to keep your user field overview more structured and let you allow to find your user fields more easily. And you can manage any user field directly from this tab overview by pressing the pencil icon to the right of any user field. It is possible to pin or hide User fields to the Live chat agent. Take into account that only pinned User fields will be downloaded in the Bot User section -> Export feature![](../.gitbook/assets/image104.png) # Keywords With "Keyword", your users can easily jump to sub flows by typing in keywords rather than being lost in menus or buttons ![keyword](../.gitbook/assets/image292.png) 1. go "Automation" from the sidebar 2. click "Keywords" 3. for "default reply", see explaination below 4. click "+ New Keyword" 5. choose a condition from "is", "contains" or "starts with" 6. put one or more than one keyword, separated by only commas, no space allowed 7. choose a sub flow to send ## Default Reply "Default Reply" is sent when the bot doesn't know what to reply. When the active button is off or no sub flow was chosen for "Default Reply", the main flow will be sent. TIP So when you build and test flows, you can reply anything to quickly re-start the conversation. You can also adjust the frequency to send "Default Reply". Its default value is set to fire "Every Time". ![](../.gitbook/assets/image425.png) ## Advanced Default Reply * Want to have a smarter bot? * Want to reply a sentence rather than a sub flow? * Want your bot to understand more human languages rather than just keywords? Try Google Dialogflow Integration! Check [how to setup Dialogflow](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900652099\&usg=AOvVaw1yUfLiXMWDmIidwP_h5isf). # Sequences Use sequences to automatically send follow up / delay messages to customers. You can send multiple messages with different delays. ## Create Sequence ![sequence](../.gitbook/assets/image49.png) Follow steps 1 to 3 and you will see this: ![sequence](../.gitbook/assets/image216.png) 5 steps to create a sequence: 1. give a sequence name 2. click "Add Message" 3. edit the settings (see Message Settings below) 4. choose the sub flow to send 5. repeat steps 2-4 to add more messages then click "Save" ## Message Settings This is how does the setting window look like: ![sequence](../.gitbook/assets/image370.png) ### 1. The countdown to send the message * Messages are sent by order. * For the first message, the countdown begins when users subscribed to the sequence. * For other messages, the countdown begins when the previous message is sent. ### 2. Send anytime or between a time range * For "send anytime", the message will be sent immediately at the end of the countdown. * For "send between", if the countdown ends outside the time range, the message will be kept until the next available time. * Remember to check the timezone issue below. e.g. You don't want to bother users at night so you set a message to send between 9 am and 6 pm. If there is a message that should be sent at 8 pm, the system will hold the message until 9 am tomorrow. This can affect the next message because the countdown of the next message begins when the previous one is sent. ### 3. Send on which days of the week * Similarly, if you don't want to bother users at weekend, deselect Saturday and Sunday. See the example in the "send between" above. * Remember to check the timezone issue below. ### 4. Choose corresponding content type (IMPORTANT) * See "Content Type" introduction below. * If you are not sure about which type you should use, keep it default. Although the message might not be sent due to the 24 hours rule, the system will at least help you avoid being banned by Facebook. ### 5. Pick a notification type ## About Timezone If a channel has a timezone in the user's profile like Facebook, when the system check "send between time range" and "send on Monday to Sunday" settings, it's based on users' timezone first. If the user doesn't have a timezone or the channel doesn't support timezone in user profiles, then it's based on [the timezone of the workspace](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900655787\&usg=AOvVaw2z8CJpKAxVM-ZNXz6k6jdf). ## Content Type Any message sent over 24 hours after a subscriber’s last interaction must have a content type that matches its purpose (in accordance with [Facebook Policy- Message Tags](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900656234\&usg=AOvVaw0WDo4H6WFC_G3nPCFFlz33) Messages with type “Other” or without a content type will NOT be delivered to subscribers who interacted with you via Messenger more than 24 hours ago. ## Note Sending messages that do not match the assigned content type may result in your page being suspended or banned by Facebook. ## Default / Other Can contain promotions and it will only send to users who interacted with your bot in the last 24 hours. ## Confirmed Event Update Send the user reminders or updates for an event they have registered for (e.g., RSVP'ed, purchased tickets). This tag may be used for upcoming events and events in progress. ## Post Purchased Update Notify the user of an update on a recent purchase such as confirmation of transactions(invoice, receipt) and notifications of shipment status(product in-transit, shipped, delivered, delayed). ## Account Update Notify the user of a non-recurring change to their application or account. ## Send Multiple Messages ![sequence](../.gitbook/assets/image427.png) When you send more than 1 message in your sequence, note that all the messages are sent in order. In the above screenshot, for example, the "Booked" sub flow will be sent "Immediately" once the user subscribes to this "Appointment Follow Up" sequence. Because the first message begins the count down once the user subscribes. The next message begins the count down once the previous is sent. Thus, the "Appointment Follow Up" sub flow will be sent 1 day after the "Booked" sub flow is sent. ## Send Sub Flow Make some sub flows to send specifically for your sequences. Please note that each Send Message step has its own "Message Tag". The tag is set to "Other" by default. Let's say, now it is over 24 hours since the user last interacted with your bot. You choose a non-default content type for a message in your sequence. This setting automatically changes the message tag of the first Send Message step in the sub flow you send. Later, if the user responds, you are then able to send messages normally with the "default" content type. So, usually, you won't need to change any message tag in your sub flow. ## Subscribe / Unsubscribe Sequence Go "Flow Actions", and you can find the 2 sequence operations. ![sequence](../.gitbook/assets/image268.png) There are a couple of examples to use sequence, such as * "Event Follow Up" - send confirm message immediately once user registers and follow-up message as reminder or helper * "Get Feedback" - ask for feedback like 2 hours after the user talked to your bot * "Send Coupon" - send coupons when user put something in the cart but doesn't make an order for a long time # Tags Tag a user by user's type, situation, status, etc for better management. ## Create Tag In your workspace, go "Tags" from the left sidebar. ![tag](../.gitbook/assets/image214.png) Here is where you manage your tags. TIP You can also create tag by just typing in a new tag name and click it wherever you add tag. ![tag](../.gitbook/assets/image349.png) ## Add / Remove Tag In the Action step, click "Flow Actions", then you can see "Add Tag" and "Remove Tag" options. ![tag](../.gitbook/assets/image299.png) ## Use Tag in Condition Step Use condition step to help you guide users with different tags to different steps. ![tag](../.gitbook/assets/image209.png) ## Use Tag in Live Chat You can also manually add / remove / check tag for each user in "Live Chat" from the left sidebar. ![tag](../.gitbook/assets/image383.png) ## OTN - One Time Notification (Facebook) OTN(R) is short for One Time Notification (Request) and allows you to send one follow-up message to a user once they opted in for this. This is only applicable to the Messenger channel. You will be able to create ONTR in two ways. ### Create and manage from overview The first way to create OTN topics is by going to the contents tab on the left-hand menu, then to the OTN Topics tab. ![title](../.gitbook/assets/image386.png) From here you will be able to find all your create OTN Topics up till this point and you can manage them. If you want to create a new topic then you only have to press the button in the top right corner named + New Topic. Once you press it a pop-up window will appear. ![title](../.gitbook/assets/image321.png) From here you will be able to name and add your topic. Once you press the button Add you will be returned to the main overview and your newly created topic will be displayed there. You will also be able to rename the topics by just pressing it and typing in your new name for it, or delete it by pressing the trash bin icon on the right of any topic. ![title](../.gitbook/assets/image160.png) ### Create OTN topics in the flow builder Another way that is more direct and easy is to create the OTN topic directly inside the flow builder. Just go to your flow then insert a Send Message block, then go to One Time Notification -› OTN Request. ![title](../.gitbook/assets/image60.png) This will bring you to the opt-in message of the OTN request. From here you will be able to select one of the available topics already created or create a new one directly on the spot. ![title](../.gitbook/assets/image304.png) Once pressed the topic will be created and you will be able to use it to request an opt-in from your subscriber. ### How to request an OTNR and use it to send the OTN message Once you created or selected your topic inside the flow builder you will be able to draft up your own message. Soon as the user presses the Notify me button that user will be opted in to receive one message about that specific topic. This will allow you to send a message to the user concerning that topic outside the 24-hour window of the last interaction. ## Personas Personas will help you to make your chatbot come over as more human. It allows you to set up a personal profile with profile pictures so people are more inclined to talk with the chatbot since they feel it is a more personal experience. ### Creating and managing your Personas To create a new persona you can go to Contents from the left-hand menu, then to the Personas tab. From here you will have the main overview of all the personas you have created inside the chatbot. ![title](../.gitbook/assets/image279.png) If you want to create a new persona you can do so by pressing the top right button named + New Persona. From there a pop-up window will appear where you can set it all up. ![title](../.gitbook/assets/image20.png) Once created the persona will be available for you inside the main overview. From here you can also manage your persona inside that main overview. You only have to press the pencil icon to be able to edit. ![title](../.gitbook/assets/image92.png) ### How to use Personas You can use personas by setting them inside your flows. Just go to a flow and create an action block. From here select Advanced actions, then Set persona. ![title](../.gitbook/assets/image275.png) From here you can select any kind of persona you have created previously and the chatbot will then continue the conversation with that user with that profile. Using personas is a good way to increase engagement and conversions as well. Female personas often do very well with men so you could start your flow by checking with a condition which gender the user is and then set the persona accordingly. ## User Menus ## ![widget](../.gitbook/assets/image378.png) For Facebook bots, you can have a persistent menu with 3 buttons at most. To setup: 1. go "Tools" from the left sidebar 2. click "Persistent Menus" 3. "Edit Menu" 4. "+ Add Menu" 5. give menu title 6. select a menu type, "Goto sub flow", "Open website" or "Open checkout page" 7. choose a sub flow or name a website address ![widget](../.gitbook/assets/image157.png) Here is where you find your persistent menu when you talk to the bot: ![widget](../.gitbook/assets/image67.png) # Triggers Triggers can help you automate certain processes in the chatbot. For example, when a user has opted-in for email you might want to sync this data with a CRM or Google Sheet. To get to the trigger section you need to go to the left-hand menu and select Automation then choose Triggers. From here you will be able to create a new trigger by pressing the blue button on the top right named + New trigger. ![title](../.gitbook/assets/image33.png) Once pressed you will get to see the available triggers you can choose from; ![title](../.gitbook/assets/image418.png) ## How to create a new trigger Let’s take an example of a trigger when someone pays for order inside your chatbot. Press the blue button + New trigger then select the trigger named as such: Order Paid From here a new pop-up window will open where you can set up the details of your trigger. ![title](../.gitbook/assets/image136.png) You will be able to enable or disable the trigger, set up a condition if you need the bot user to match a certain filter before the trigger is activated, and you can add a note that will explain more about this trigger. Great if you are working with a team or creating a template and need to clarify things. Once done press the bottom right button named Save and you are now halfway done setting up your trigger. ## Selecting your Sub Flow Now that the trigger has been created we will be needing to add an action to it. You can do this by pressing the Choose Sub Flow space to the right of that trigger. ![title](../.gitbook/assets/image167.png) Once done it will open up a pop-up window for you where you can select your desired flow to be connected once this trigger has been activated. ![title](../.gitbook/assets/image43.png) You can also type to find your flow more easily if you prefer. Once you found your flow just select it and it will return you to the Trigger overview. From here you have a few options when it comes to managing the triggers. ## Managing your Triggers You have two options if you want to manage your triggers: * You can enable or disable them by pressing the slider on the left of the actual trigger * You can edit the trigger settings. Inside of here you also have the option to delete the trigger entirely ![title](../.gitbook/assets/image389.png) # AI Hub GoChat's AI Hub provides a suite of AI-powered tools designed to enhance chatbot capabilities, streamline customer interactions, and automate complex tasks. By following this documentation, you can effectively utilize GoChat's AI Hub to create intelligent chatbots that automate tasks, improve customer engagement, and drive business growth. ## **Key Features** * **AI Agents:** AI Agents introduce AI functionality to chatbots in an easy-to-manage way. They can be customized with specific personas, skill sets, and constraints to handle various customer interactions, from appointment booking to customer support. * **AI Functions:** These allow AI Agents to perform specific actions, such as fetching data from external sources or updating third-party platforms. AI Functions can capture user details, retrieve available time slots, and book appointments. * **AI Tasks:** AI Tasks enable the creation of follow-up messages and other automated actions based on the analysis of chat history. They help re-engage inactive users and ensure a seamless conversational experience. ## **Getting Started with AI Hub** **Accessing AI Hub:** Navigate to the AI Hub in the left-hand menu of the GoChat platform. Here, you'll find options to manage AI Agents, AI Functions, and AI Tasks.
### **Creating an AI Agent:**
1. Click the "AI agent" button. 2. Give the agent a descriptive name, such as "Appointment Booking Agent". 3. Provide a detailed description outlining the agent's skills and responsibilities. 4. Configure AI Model Settings: Choose between OpenAI, DeepSeek, and X AAi. OpenAI is recommended when using AI Functions due to its stability. Select an appropriate model (e.g., GPT-4 Turbo) and adjust parameters like temperature, frequency penalty, and presence penalty. Adjust the number of chat messages before auto-summarization to save character space. 5. Define the Agent Prompt: Define the agent's persona, skills, and constraints. Use the "generate agent prompt" feature to automatically populate these sections based on the agent's description. Review and adjust the generated prompt to ensure it aligns with your requirements. Add additional guidelines to the prompt, such as "ask for each user detail separately". 6. Save the AI Agent. ### **Creating AI Functions:**
1. Navigate to the AI Functions section in the AI Hub. 2. Click the "plus AI Function" button. 3. Define the function's purpose such as, "capture user details". 4. Add Parameters: Define the parameters that the function needs to capture, such as first name, last name, and email. Specify if each parameter is required and enable memory to remember the values that were given earlier in the conversation. Map each parameter to a corresponding system field to save the captured data. 5. Generate Function Prompt: Use the "generate function prompt" feature to create a prompt based on the function's description and parameters. Review and customize the prompt to include specific instructions and constraints. 6. Set up a Workflow: Connect the AI Function to a workflow that performs the necessary actions, such as fetching available time slots or creating a CRM contact. Use the AI Function Result node to return the fetched values back to the AI Agent.
**Note**\ Make sure you check the “Required” check to make the value a must for the function to collect. You can also check “Memory” feature which will go over the conversation history to check if the value already exists. if it does it will skip asking for it again and move on to the next parameter. 7. Save the AI Function. 8. Do not forget to add the new function to an "AI agent"


This is how the workflow for the Function looks like:

See the AI Function result step as the output of a function

### **Creating AI Tasks:**
1. Go to the AI Tasks section within the AI Hub. 2. Click the "plus AI Task" button. 3. Provide a name and a detailed task prompt. For example: "Create an engaging follow-up message with the user who became inactive. Analyze the current chat history and determine where the user left the conversation and create the follow-up message based on that". 4. Configure the AI Model: Select an appropriate AI model like GPT-4 Turbo. 5. Save the AI Task. #### Using AI Tasks In the action block, click on AI Actions and then select AI Tasks from the dropdown. Select the AI Task you want to perform and then in the input field, enter the content on which you want to perform the AI Task on, The end result will look like this: This value can then be mapped to a user-field to further use it in other flows. 1. **Activating AI Agents in the Flow Builder:** 1. Open the Flow Builder and navigate to the desired flow. 2. Add an action node and select "AI Actions".
3. Choose "Activate AI Agent" and select the primary AI Agent from the dropdown menu.
4. Optionally, add secondary agents to enrich the primary agent with additional functions. 5. Set an idle timeout to automatically exit the AI Agent node after a period of user inactivity. 6. Save the output payload to a JSON field for later use.
**Tips and Best Practices** * **Detailed Descriptions:** Provide detailed descriptions for AI Agents, AI Functions, and AI Tasks to help the AI understand their roles and responsibilities. * **Specific Instructions:** Include specific instructions and constraints in the agent and function prompts to guide the AI's behavior. * **Error Handling:** Implement error handling in AI Functions to gracefully manage invalid inputs or unexpected issues. * **Testing:** Thoroughly test AI Agents and Functions to ensure they are working as expected. * **Follow-Up Messages:** Use AI Tasks to create engaging follow-up messages that re-engage inactive users and continue the conversation. * **Leverage Memory:** Enable memory in AI Functions to remember user details and provide a more personalized experience. * **Monitor Performance:** Regularly monitor the performance of AI Agents and Functions to identify areas for improvement. #### **Use Case: Appointment Booking:** * Automate the process of scheduling appointments by capturing user details, fetching available time slots, and booking appointments with third-party platforms.
* **Example of "Persona & Role" for the agent** {% hint style="info" %} _The Appointment Booking Agent is responsible for scheduling appointments with users. This agent must capture user details, such as first name, last name, and email, fetch available timeslots, allow the user to select their preferred time, and finalize the appointment booking process. The tone should be professional and friendly, ensuring a smooth and positive user experience throughout the scheduling process._ {% endhint %} * **Example of "Skills"** {% hint style="info" %} \## Skills \### Skill 1: User Detail Capture * Actions: Prompt the user to provide their first name, last name, and email address. * Steps: * Greet the user warmly and introduce the appointment scheduling process. * Ask for the first name and wait for the user's response. * Ask for the last name and wait for the user's response. * Ask for the email address and wait for the user's response. * Validate the email format and ensure all details are captured correctly before proceeding. \### Skill 2: Timeslot Retrieval * Actions: Fetch available timeslots from an external scheduling system. * Steps: * After capturing user details, query the scheduling system for available timeslots. * Ensure that the query is conducted within the relevant date range (e.g., next week). 3\. Handle cases where no slots are available by informing the user and asking if they would like to check a different date. \### Skill 3: Timeslot Selection * Actions: Present the available timeslots to the user for selection. * Steps: * Display a list of available timeslots in a clear and organized manner. * Prompt the user to choose their preferred timeslot by providing the available options. * Wait for the user's selection and validate their choice to ensure it matches one of the presented options. \### Skill 4: Appointment Booking * Actions: Confirm the selected timeslot and complete the appointment booking. * Steps: * Once the user selects a timeslot, summarize the appointment details (date, time, user name, and email). * Confirm the booking with the user, asking for approval to finalize the appointment. * Submit the booking to the scheduling system. * Send a confirmation to the user's email and provide additional instructions if necessary. {% endhint %} * **Example of "Constraints"** {% hint style="info" %} \## Constraints * The agent must only process requests in a single user session and should not store personal data beyond the session. * Ensure that all prompts and responses are clear and user-friendly. * Handle errors in data input gracefully, providing clear guidance on how to correct mistakes (e.g., invalid email format). * If at any step the user decides to cancel, offer an option to exit the booking process politely. * Response times should be quick to maintain user engagement. {% endhint %} #### **Other use cases** * **Customer Support:** Provide instant answers to frequently asked questions and handle common customer inquiries with AI-powered chatbots. * **Lead Generation:** Capture email addresses and phone numbers automatically to grow your contact list and re-engage leads. * **Personalized Recommendations:** Offer personalized product recommendations or content suggestions based on user preferences and behavior. * **Automated Follow-Ups:** Send automated follow-up messages to inactive users to re-engage them and encourage them to complete their desired actions. **Troubleshooting** * **AI Messages System Field:** Check the bot user's AI Messages system field to track the conversation between the user and the AI Agent and identify any issues. * **Live Chat:** Monitor the live chat to see how the AI Agent is interacting with users and identify any areas for improvement. * **Function Calls:** Verify that the correct functions are being called at the appropriate times. If a function is not being triggered, check the AI Agent prompt and ensure it includes clear guidelines on when to call the function. * **Custom Field Values:** Check that the custom field values are being saved correctly. If a value is not being saved, review the AI Function and ensure it is properly configured to capture and store the data. ### FAQ on AI Hub Features and GoChat Platform * **What are the core components of the AI Hub and how do they work together?** * The AI Hub consists of AI Agents, AI Functions, and AI Tasks. AI Agents serve as the primary conversational AI, handling user interactions based on defined personas, skills, and constraints. AI Functions are workflows that perform specific actions (like fetching data or booking appointments) and providing data to the agent. AI Tasks are background operations, such as generating follow-up messages based on chat history. These components work in concert to automate complex processes, as exemplified in the demonstration of scheduling an appointment. The agent handles the conversation, functions retrieve data and execute actions, and tasks ensure continued engagement. * **How do I create an AI Agent, and what are the key settings I need to configure?** * To create an AI Agent, navigate to the AI Hub, select "AI Agents," and click "Create AI Agent." Provide a name and description for the agent. Crucial settings include selecting the AI model (OpenAI is recommended when using AI functions), adjusting parameters like temperature (for response creativity) and the number of chat messages before auto-summarization (for context retention and space-saving). You can define the agent's Persona, skills, and constraints manually or use the "Generate Agent Prompt" feature to automatically create these based on the description. Finally, you need to activate the AI agent inside the flow builder. * **What are AI Functions, and how do I use them to enhance my AI Agent's capabilities?** * AI Functions are workflows that perform specific actions to enhance the AI Agent's capabilities. Create them in the AI Hub under "AI Functions," defining parameters to capture from the user (like first name, last name, email) along with instructions. You can then generate a function prompt that describes what the function needs to do and what the constraints are. These parameters are passed to a linked workflow. For example, the function could capture user details, trigger a workflow to fetch available time slots from a calendar system using these user details, and return the time slots back to the AI Agent to present to the user. Functions can also trigger other subflows to save data or call third-party APIs. * **How do AI Tasks work, and what is an example of how they can be used to improve user engagement?** * AI Tasks are background processes that execute independently, enhancing the user experience. To create an AI Task, go to AI Hub and click "Create AI Task". You then create a task prompt and add the AI Task to the flow builder with a AI Action -> AI Task. A prime example is generating follow-up messages for inactive users. An AI Task can analyze the chat history, determine where the user left off, and craft a personalized, engaging message to re-engage them. For instance, if a user provided their first name but didn't complete the process, the task might generate a message reminding them to provide their last name and email to complete the booking. * **How can I troubleshoot my AI Agent to ensure it is functioning correctly?** * Troubleshooting involves two key methods: checking the "AI messages" system field for the bot user and reviewing the live chat. The "AI messages" field provides a detailed record of the conversation between the user and the AI Agent, including the functions called, the arguments passed, and the AI's replies. The live chat shows the conversation from a user perspective and confirms that the correct AI Agent is being triggered. By examining these logs, you can identify issues such as incorrect function calls, missing data, or prompt-related problems, allowing you to adjust the AI Agent or AI Function accordingly. # Flow builder ## Flow Builder Overview This section will give you an overall idea about how to use the GoChat flow builder. You can open a flow and try side by side when you learn it. **IMPORTANT:** 💁 Please make sure you go through every detail on this page before you start building bots. #### Flow, Sub Flow and Step #### ![flow](../.gitbook/assets/image266.png) #### Flow Type To begin with, you need to create a flow. Currently, GoChat provides you with 11 types of flow: ![flow](../.gitbook/assets/image282.png) #### Sub Flow Type Flow consists of sub flows. There are 3 types of sub flow: Sub Flow | Sub Flow | Usage | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeYVUNIbDcY__u0Yco02TKUGx1_oPQBE3W-HsCdApNW5bxuVQhgFPyZVl3_q2c-bmuTsfoS2AtbI0Mcft_AWm6IOzSIjQTAPgYpVx5mOqUEZ9d4GpKpviqJVBZvn1yJxepqlr2pg7hQrRgzbzgfCZKnfaSo?key=PSyYmLJRgx9v5ZPQakkurQ) | general sub flow, varies in flow type | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdNQWVrCGdkSM9kuXSwOS_LL4t9qLA6zkEpiX8Q3yI87lRANOfttzCfoYImgJw81ccgFqRnC17DVloijDDs4qC-Ji35T1pNeMTpApA_MXKL0qeV5QjvU4JnKA_50X4gHdWforMTQMT1TlxaiYtUhnMWnqo?key=PSyYmLJRgx9v5ZPQakkurQ) | call / trigger background tasks | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdloST7rGGmBiE5OJ1dYRwck_34FGLaR2pkMbOAUXEi4UjZ6EQmWmoaj8yAPioghiB9WsIHQDZvwb5OjbpPSNmMUuS2Hhu-lVzHm8C3apkWIH0CQXt6PYgefc7w2AFnxXcxp8HplQKIAA0Oa1iVrBs7F2mp?key=PSyYmLJRgx9v5ZPQakkurQ) | process repetitive tasks | #### Step Type Sub Flow consists of steps. There are 8 types of steps: Step | Step | Usage | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeNITYHlHXO-2eum1EWb5YT3iqetsWq4nEZbQkhyd1EVXOCHiESxiYQE0RPDNuufiu0uu3jynGyyF3Ocbeo86BrTAW3wHlNXpCWznLGZBYb8lackS9_htdQjleQnKNOv1nyctmx2kYOo7Gh4JOxhU7soA6d?key=PSyYmLJRgx9v5ZPQakkurQ) | Send a message: display information | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeQwcRcAkkeuICToyio3qM5KmKan0Hwy12NgonjITCMSpYyo04-NbDXTbRJcsaK0lAkAH4GVWYjSkC4nwPr5v-gC4lns2txRGCphydYr4as3VeHnMB-xanrSr9iY-PY9dyepOP05kBXtH4GOsNTxcUpZdMV?key=PSyYmLJRgx9v5ZPQakkurQ) | Question: ask question and wait for user input | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdlfV_NJ5gPsWcgsNfphI0SluwMfPdELgukRAENKxKECt-2r79XLD_KB4rLowg4Y7ciNu_ImcCm8Y_uCZO7GyXOk4F75AzCKXn3i-QjsphuCc7b1xMsW4r4JrwhpOwrwI424JK5-gazu2Y2Ff0ubizB_aU?key=PSyYmLJRgx9v5ZPQakkurQ) | Action: process data and tasks via integrations, APIs, notifications... | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfYUSLpeY0ssPCOUU46yGk3l4JKTmDS4ppWJ2Y74wQMaokdSnFK0qfgWC1NS4_-8PKgiXHSAliZ8omjuWh4ePXzTOMLvawMug8b3yPyvdYv0fKtvVTiauNdgGCvoMZt2U23NUKj6omSBISGbcGtWHnTxoXO?key=PSyYmLJRgx9v5ZPQakkurQ) | Condition: go different steps depend on conditions | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXf1Q2qmT3ZCMI7kJzD37-2PEJUaGQRBFPZ2B0DSJ0SAU-R7LxGDzKFpFEnWQ-bM15RH-homP-mkQGMiX9rTVotlh7ze8Id0nH9By2-OaRfRhBEanWqk1uygyixSu4KyS9qu0_LrJ4RSEY3fsC6wOZDECDo?key=PSyYmLJRgx9v5ZPQakkurQ) | Split: go different steps depend on probability | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdd-HqCudRwzBp87L_iDLG5PnkdXFKfS5dceV7czWwAqy71x3RUxg7NzgCaU8KlpSYB_i7s-lRH21ETDMWg-Bp11Zu65qfjZ3Bq8bD7ETOtCacOgMLEW7VqPaEIpqliyqyzbkhPpAU2SY4cvkERFHFZJwM?key=PSyYmLJRgx9v5ZPQakkurQ) | Send Email: send full email instead of short email notification | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXff1gkp_C9CrrFlR5IkjIAPqOKddiAoA5Rz-5fkltMGs5Sn0y7q_FbF_gggX6Vz89KKYw3S1H-3cMqE0Pa9VNwBRdSzegV_-2ewFslOwnnIwHKr4lfmZ43z3i_PWfvfnB0ZX-ez03IN42lQBBG6ipxn-xNg?key=PSyYmLJRgx9v5ZPQakkurQ) | Goto: jump to a step or sub flow rather than using a line connector | | ![step](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdwvj_vi1M6ZBxbhGUiaVGqq6oSbFqSKhzqSOYEc8ZnTdIVpzx62pfvXDU3mHXTjFS-M8gnSpkUK-jjm3fJ0M9lFwGWpH8zQDE2AuHe5JF5k57ohlkWxtDJ0q2BmB_7DSxdl8k-a-VPbrcfoQOI-lYkvg?key=PSyYmLJRgx9v5ZPQakkurQ) | Output: define output for the function flow | Note The differences among different types of flow are Flow Setup, Send Message Step and Question Step. Each channel has its own limitation of message types. For example, you can display a product gallery in Facebook Messenger while the SMS channel doesn't support that. #### Publish Version & Draft Version In GoChat, each flow has a Publish Version and a Draft Version. * Publish Version\ your bot talk to clients using the publish version. * Draft Version\ any editing of steps will be saved automatically to the draft version. you can edit your flow without influencing the bot and test the draft version before you "Publish". #### From Publish Version to Draft Version, 1 way: * click "Edit Flow" on the upper left/right corner of the flow to enter the draft version ![overview](../.gitbook/assets/image191.png) Note You must enter Draft Version before you edit a flow. #### From Draft Version to Publish Version, 3 ways: * click "Publish" to save your draft to a new Publish Version * discard changes and revert to the newest Publish Version * keep draft and switch to Publish Version (by doing this, you can have a look at your publish version and when you click edit and come back, your draft is still here) ![overview](../.gitbook/assets/image338.png) Note Don't worry if you accidentally quit during your editing, the system will keep all your modifications in Draft Version. So when you come back, simply enter Draft Version again and you can see your modifications remain intact. #### Navigation Bar, Sidebar & Flow Builder TIP: You might want to create a flow first, then open the flow side by side when you read the following instruction (Facebook flow used as an example). After entering a flow, this is what you will see:
#### Navigation Bar On the top, there is a navigation bar. From left to right there are: | Part | Usage | | ------------------------- | --------------------------------------------------------- | | "Demo Account" | current workspace, click to go back to GoChat dashboard | | "gochat.hyppo.io Support" | flow type and flow name, click to go back to "All Bots" | | "Main Flow" | current sub flow | | "Preview" | preview the current subflow from the Start Step | | "Build a bot..." | tutorial video widget | | "Joyce" | current user, click for user settings, support and logout | Preview Feature Please note that "Preview" feature is not supported in all channels. Channels support "Preview": Facebook, Telegram, WhatsApp, Line and Viber. For channels without Preview, search "talk to bot" in the documentation. #### Sidebar On the left-hand side, there is a sidebar. From top to bottom there are: | Section | Usage | | ------------ | ------------------------------------------------------------------------------------------------------------------------------------- | | Flow Builder | build subflows here | | Flows | manage all your subflows | | Analytics | bot data analysis | | Live Chat | inbox for all the conversations, make a human reply here | | Bot Users | manage bot user profile. import, export, search or delete bot users | | Automation | manage keywords, sequences, triggers and comments | | Contents | manage custom fields, tags, OTN, personas, user menus and customer feedback | | Tools | manage error logs, draft version tester, bot admins, widgets, multiple language and shortcuts, Facebook Ads, inbound webhooks | | Broadcasts | send/manage broadcasts | | Settings | (some are owner only) manage bot users limit, Facebook greeting text, chat widget customization, ice breakers and authorized websites | Note Features in Automation, Contents, Tools and Settings can be different from channel to channel. In Settings, usually owner can see all the settings like bot user limit while admin and member only see part of them. #### Flow Builder
Apart from those in the above screenshot, there are a couple of more tips for using the flow builder: ![tip](../.gitbook/assets/image205.gif) ![tip](../.gitbook/assets/image374.gif) ![tip](../.gitbook/assets/image271.gif) #### Flow stats To see the flow stats on the sent messages, go to a node and lick on the Metrics section to view the stats of all the nodes. You have to be on the published version of the flow to see the stats on each of the nodes. As you can see in the image below, the message #15 was sent 69 times in the last 30 days by 69 unique users. ![](../.gitbook/assets/image305.png) #### Change Themes Before you start, you can pick your favourite theme by clicking "Change Theme": ![theme](../.gitbook/assets/image198.png) choose one of them and "Apply Change". ![theme](../.gitbook/assets/image106.png) #### Hide Mini-map or Tooltips ![theme](../.gitbook/assets/image28.png) Mini-map is useful when you need to move your workspace in some situations. For example, when you click and drag inside a canvas, you are moving the canvas as a whole instead of everything in the builder: ![tip](../.gitbook/assets/image318.gif) You can hide the mini-map by clicking the "Hide Flow Overview" option. With tooltip, you can see description for every feature you see in the flow builder like this: ![theme](../.gitbook/assets/image273.png) The tooltip includes a title, description, image, video link and documentation link. It is friendly to new users. For users who are already familiar with the system, you can choose to disable the tooltip by clicking the "Hide Flow Tooltips" option. #### Basic Operations to Build Flows #### Edit Step: Click on a step to edit it, "Edit Panel" will show next to the sidebar. ![workspace](../.gitbook/assets/image169.png) Click step name to edit it. You can choose the next step at the bottom of the edit panel or drag connectors from the circle to the tile of another step. #### Connect Steps: ![workspace](../.gitbook/assets/image179.png) Create a new step or choose an existing one to be the next step. For dragging connectors, see below: ![workspace](../.gitbook/assets/image393.gif) ![workspace](../.gitbook/assets/image354.gif) TIP: When you choose an existing next step, a line will be connected from the current step to the next. Too many lines can be messy, get a Goto step to help you organize! In a Goto step, you can nominate the next step without creating a line connector. #### Select Multiple Steps (Move to Canvas/Sub Flow) We've just learned how to move the builder by clicking and dragging. For selecting multiple steps, it's a bit similar. Hold the Shift key then click and drag to cover the steps you would like to select: ![workspace](../.gitbook/assets/image79.gif) Alternatively, ctrl + click them one by one: ![workspace](../.gitbook/assets/image1.gif) The selected step has a green border. After selecting multiple steps, click "Create New Canvas" to organize these steps in a canvas box, or move them to an existing sub flow. To delete multiple steps, hit the "delete" button on your keyboard after choosing several steps: ![workspace](../.gitbook/assets/image30.gif) Delete on Mac On Mac OS computer, hold fn and hit Delete to remove steps. Or use the "Delete Selected button in the editing panel. TIP: The green start point is the entrance of a sub flow. It can't be moved to other sub flows or deleted even you include it in a group of steps. #### Copy and Paste Steps After you select a step or multiple steps, use Ctrl + C to copy and Ctrl + V to paste it to: * the same subflow * different subflows in the same bot/flow * different bots/flows but the same channels (associate custom fields will be created automatically) * different channels (unsupported features will be removed) TIP: Please note that you can only paste ONCE. Copy again for another paste. This is to prevent bulk pasting which can quickly blow up the flow. That's all about it for Flow Builder Overview!! 🎉 Try building your first flow now. 😎 ## Steps ### Send Message Step After creating your first flow, open it, click "Edit Flow", have your bot side by side and here we go! 😆 Let's take Facebook as an example. Other flows share similar processes where the main difference is message type. ![send message](../.gitbook/assets/image128.png) A few simple steps to send out your first message: 1. click the green start point 2. in the edit panel, "Select Next Step" 3. choose "Send Message" step 4. click the "Send Message" step 5. click text type message 6. enter your message 7. "Publish" ![send message](../.gitbook/assets/image399.png) That's it! Let's test! ![send message](../.gitbook/assets/image280.png) Click "Preview" from the navigation bar and "Open the flow in Messenger". Click "Get Started" if it's the fist time you talk to the bot. Preview Feature Please note that "Preview" feature is not supported in all channels. Channels support "Preview": Facebook, Telegram, WhatsApp, Line and Viber. For channels without Preview, search "talk to bot" in the documentation for guidance. ![send message](../.gitbook/assets/image47.png) Congrats! Your bot is working now. 🤖🤖 Let me show you some more details about Send Message step. These are the message type in common for all/some of the Channels. Check by type below: #### Send Text / Variable #### ![workspace](../.gitbook/assets/image102.png) GoChat has integrated with Grammarly to help you get your expression perfect. ![workspace](../.gitbook/assets/image277.png) #### Insert Custom Field Value and Emoji Wherever you see "\", you can insert emojis or variable values to the text. ![send message](../.gitbook/assets/image229.gif) Or simply type "\{{" to call the field list: ![send message](../.gitbook/assets/image423.gif) #### Send Image / Audio / Video / File There are 4 ways in total: ![ecommerce](../.gitbook/assets/image346.png) * upload from your computer (size limited) Media Type Maximum Upload Size * video: 10MB * audio: 5MB * file: 5MB * others(e.g. image) * 2MB #### Use Media from an URL link (RECOMMENDED) You can search pictures online and copy their direct URL links. But this direct link might change. Alternatively, you can upload photos to your server or other third-party photo storages like imgur.com, then get your direct URL links from that. Direct URL link means the link is pointing to a specific photo, not a website, ending with .jpg or .png, etc. Take the link in the above picture for an example. * search from GIFs gallery\ GoChat provides you with a GIFs gallery, you can search what you need here. * from Library\ Library is the place you can see all the photos, GIFs, audios and videos you have uploaded before. So that you don't need to re-upload the same media, just find them in your library. #### Send Card #### ![send message](../.gitbook/assets/image384.png) Card is used to display a serious of information nicely like product information. There are 4 factors in a card, picture, title, subtitle and button. TIP: Please note that to show a card, you must have a title and at least one other factor, picture, subtitle or button. #### Send "For Each" This message type is also showing cards but in a more automatic way. With "For Each", you don't need to type in each card yourself. It automatically displays all items in a JSON variable. Check [Action Step - JSON Operation](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900436581\&usg=AOvVaw2dNv408KLLgM4SU1YHFCpc) if you have no idea about what is JSON variable. ![send message](../.gitbook/assets/image348.png) 1. choose a JSON variable first 2. click "\" or type "\{{" in the text box 3. choose "ITEM" to get a sample item from the JSON variable Value in the JSON variable: ![send message](../.gitbook/assets/image289.png) Value in "ITEM": ![send message](../.gitbook/assets/image219.png) The "Sample data" is to quickly fill in the "JSON Path" field. For example, as shown in the picture, click the "price" row, and "$.price" appears in the "JSON Path" itself. This means that, we are displaying the price of each item here. If there is no sample data prompted, you can fill in the path yourself by typing "$.", which refers to each item in the JSON variable, followed by the key of a value. #### Value Format Moreover, for numbers like percentage and price, for date value and time value, GoChat has different formats listed for you. For example, in the above picture, the price value is "5" and after choosing a "F03" format, the bot will display it as "$5". While the value in the variable is still the number "5" so that you are able to use it in math calculation or condition comparison without malfunction. #### Hidden Keys Great! Now you see how to use the "For Each". Apart from the keys in the JSON variable, there are 3 hidden key you might need: ![send message](../.gitbook/assets/image428.png) Key Name, Description * INDEX: index of the item started from 1 * KEY: key name of the item * VALUE: value of the item = the item itself **INDEX Example** When you have a JSON with a list of JSONs in it, use INDEX for checking the sequence number of an item. Let's add an index number before the item name: ![send message](../.gitbook/assets/image165.png) Testing result: ![send message](../.gitbook/assets/image88.png) **KEY/VALUE Example** When you have a JSON as shown in the following picture instead of a JSON holding a list of JSONs, ![send message](../.gitbook/assets/image403.png) These are what you will get by using the three keys: ![send message](../.gitbook/assets/image180.png) ![send message](../.gitbook/assets/image404.png) Testing result: ![send message](../.gitbook/assets/image40.jpg) #### Send SELECT after "For Each" When you add a button to your "For Each", the button is going to show with every card. Usually, you might want to put a "Buy" or "Select" button here in the case that you are listing some products or options. How does the the bot know that which card did the user select? ![send message](../.gitbook/assets/image325.png) When you select next step for the button, choose "Select": ![send message](../.gitbook/assets/image105.png) Then select a next step as you usually do, like a Send Message Step to show the selected item or Action Step to deal with the data. You can then access the selected item in "SELECT": ![send message](../.gitbook/assets/image326.png) For example, let's add a Send Message step, find the system field "SELECT": ![send message](../.gitbook/assets/image269.png) 1. click the row "item" to get the path "$.item" or type in the path directly 2. in the JSON path, add key name if needed. In this case, let's show the name of the selected item. So add ".name" after the path. ![send message](../.gitbook/assets/image329.png) ![send message](../.gitbook/assets/image120.png) You will see this when you test it: ![send message](../.gitbook/assets/image41.png) #### Send Dynamic Content Dynamic Content helps you send out an API request, to your server or a third-party server, in order to get a response to display. The server can reply differently each time. In this way, your bot is able to display dynamic content to your users. This feature is practical when your bot logic is complex and rely heavily on other servers. For example, you have your own AI algorithm to analyze users' questions and calculate corresponding response on your server, in this case, you can send the question in the API request. And the server can generate a response based on the question. Finally, the server send the response back to GoChat to display to your users. A response message can contain several messages, buttons and quick replies with actions. You can even apply simple actions like add tag directly in the response JSON. * Check [Action Step - External Request](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900441874\&usg=AOvVaw1cYQJxWYVZqjIEHeiJQsIK) for how to send an API request, * and [Response Format](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900442181\&usg=AOvVaw3zfTkLvJGXBaLKmvulAjgK) for message formatting guidance. #### Send Location #### ![send message](../.gitbook/assets/image248.png) To send a location, search it on a map, then right-click it to copy its latitude and longitude values: ![send message](../.gitbook/assets/image52.png) Enter your location name, paste the data and add a label if needed. A label gives additional information like floor or room number. ![send message](../.gitbook/assets/image193.png) #### Send Ecommerce Product Check [Ecommerce](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900443091\&usg=AOvVaw0_FJilkT-6PnEB3bOSsJ1J) for how to setup and use built-in ecommerce system. #### Facebook - Send Message Facebook allows the bot to send texts with 3 buttons and 10 quick replies at most. #### Send Text with Button & Quick Reply ![send message](../.gitbook/assets/image290.png) The difference between button and quick reply on Facebook Messenger: Type Usage button once sent, always in the conversation to be pressed quick reply similar to button, but disappear when used Try to add some buttons, quick replies and test it. You will see their differences. #### Telegram - Send Message Telegram flow is our newly added flow type. It is similar to Facebook flow except for some exclusive features with Facebook. Please check Facebook flow for guidance for now. Text tutorial about Telegram flow will be updated shortly. #### WeChat - Send Message WeChat allows the bot to send texts with 10 buttons at most. Message type with WeChat: ![send message](../.gitbook/assets/image441.png) #### Send Article ![send message](../.gitbook/assets/image345.png) This is how it looks like in the chat: ![send message](../.gitbook/assets/image258.png) #### Send Mini Program You can also send mini-programs that associates with your official account. ![send message](../.gitbook/assets/image135.png) #### WhatsApp - Send Message Message types with WhatsApp: ![send message](../.gitbook/assets/image18.png) Button in WhatsApp is a bit different from that in Facebook. A button in Facebook can be pressed for multiple times while in WhatsApp, only once. #### SMS - Send Message SMS bot can send only text and image. ![send message](../.gitbook/assets/image430.png) #### Voice - Send Message #### Send Text / Audio ![send message](../.gitbook/assets/image387.png) You can have the bot read out the text with a specified language or record your own audio and upload it. For voice bot, you can set a default language at the Green Start Point or set it separately for each send message/question step. GoChat has built a Mini-App called "VoiceMaker" using a third party API which provides you with a better quality of text-to-voice conversion! Download the Mini-App in integration section. The documentation about "VoiceMaker" is in progress. #### Google My Business - Send Message Message types with Google my business flow: ![send message](../.gitbook/assets/image6.png) All types are covered above, please check message type in common for all/some of the channels. Find location type in "Rich Media". ### Question Step ### ![question](../.gitbook/assets/image61.png) #### Set Quick Answers Quick answers are convenient for users to click rather than typing. When you set quick answer: ![question](../.gitbook/assets/image83.png) "Answer Text" is shown to users while "Answer Value" is saved to the variable. TIP: You can set quick answers across all channels. However, some channels display the quick answers as buttons for pressing like Facebook, while some don't such as SMS. For the latter case, you can still set quick answers but at the same time, you will need to prompt that how to trigger the quick answers. #### How to give prompt and set quick answers? In th question box, for example, put "reply 1 for service A, reply 2 for service B", etc. Then in the quick answer, set "Answer Text" to be "1", "2", etc for matching, and "Answer Value" to be "service A", "service B", etc to save user's option. How to Provide Quick Answers * Facebook: quick answers will be displayed as buttons * Telegram: quick answers will be displayed as buttons * WhatsApp: quick answers will show in "Select Option" * SMS: give prompt * Voice: give prompt and use Speech question or DTMF question to ask for keypad/voice input * Google: quick answers will be displayed as buttons #### How does the matching work in quick answers? ![question](../.gitbook/assets/image99.png) Once the user's input contains one of the "Answer Text", the quick answer is matched (non case-sensitive). Plus, the order of those quick answers matters because the bot will check in order. Once a quick answer matched, it will stop the matching. ![question](../.gitbook/assets/image359.png) ![question](../.gitbook/assets/image124.png) ![question](../.gitbook/assets/image344.png) #### Skip Button Add skip button if the question is ok to skip. Also, the label of the skip button is editable. #### No Match #### ![question](../.gitbook/assets/image379.png) "No Match" is a very practical feature because different answer types have different specified patterns. Email address, for example, has to be "xxx@xx.xx". You can put something like "Wrong email, please try again" as your retry message and jump to another step if no match on several times. However, a "xxx@xx.xx" format just filters out wrong email but fake email. To check whether an email is real or not, try Mini-App for using a third-party verification tool. #### No Input Similarly, "No Input" helps you redirect the flow when user input expires. By default, a question expires in 1 hour. Make it shorter if needed. ![question](../.gitbook/assets/image91.png) #### Ask for Image / Audio / Video / File / Record #### ![question](../.gitbook/assets/image285.png) Note: you will need text variables to save the URL links of these 5 types of answers When the user uploads a document, an URL link pointing to the document is saved in the variable rather than the document itself. Because media document can be very large. Later, if you want to send that document in send message step, you will need to choose "Send Media From URL" and type in the variable there. ![question](../.gitbook/assets/image141.png) #### Ask for Choice This is a question type listing limited quick answers and user have to choose only from these quick answers. For example, when choosing property type, list only house, townhouse and apartment as quick answers. Therefore, if the user doesn't click one of these three, a retry message appears. #### Ask for Date / Datetime Note that Except from Facebook Messenger and Google My Business, the rest channel doesn't have a date picker when user makes Date/Datetime input. So you have to prompt users "Please input the Date / Datetime as exactly the format: YYYY-MM-DD / YYYY-MM-DD hh:mm:ss". Any other format won't be recognized successfully. #### Ask for Phone The basic validation for Phone number Question is: * only these 11 characters are allowed: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +. * "+" sign is only allowed in the front of the phone * more than 6 characters #### Question Step in Voice Bot #### ![question](../.gitbook/assets/image237.png) TIP: You can always put a URL link pointing to your mp3 file in the text box (started with "https://" and ended with ".mp3" or ".mav") of a Send Message Step or Question Step. In that way, the bot will play the audio file instead of transferring the text to audio. TIP: You can put the link directly in the text box or store the link in a text variable. You can also combine audio URL with text when you use it. But remember that don't let the URL and text connect to each other, because the system cannot recognize it as an audio URL link. See screenshot below. ![question](../.gitbook/assets/image51.png) #### Voice Bot - Ask for Speech Speech is usually used to get short answers. When the bot asks for speech input, it will listen to what the user says and convert the speech to text with a confidence score. The score is between 0 and 1. The closer to 1, the more confident the speech analysis was. TIP: You might want to add a Condition step to discard any conversion with low confidence. For example, when the confidence score is less than 0.7, ask for re-input. Use "Advanced Settings" to help improve the conversion: ![question](../.gitbook/assets/image156.png) Select correspond speech model and language. "Numbers and Commands" speech mode can help improve the recognition rate when the answer is a string of numbers, etc. Please note that, Twilio charges for using this mode. More importantly, provide the bot with some hints, keywords that might appear in speech (separated by commas and no space). #### Voice Bot - Ask for DTMF (Keypad) DTMF refers to keypad input, including number 0 to 9, \* and #. Usually, it is used to make a main menu for your voice bot, just like what you might hear before "Hi, press 1 for xxx, press 2 for xxx, ..." ![question](../.gitbook/assets/image78.png) "Number of Digits" means how many digits to expect. For example, a credit card number needs 14 or 16 digits while a postcode needs 4 or 6 digits. "Stop Key" is set to "#" by default, but it is also editable. You will need "Stop Key" when you don't know how many digits to expect. Don't forget to mention the "Stop Key" in the question box. 🤖🤖 TIP: "No Input" timeout in Voice Question plays an important role. Often, it will be set to just few seconds while in other channels, the default timeout is 1 hours. #### Voice Bot - Ask for Record #### ![question](../.gitbook/assets/image34.png) Again, same as asking for picture, audio, video or file, you will need a text variable to save the URL link of the record file. Check advanced settings for more details such as "Stop Key" and "Max Record Duration". You will be able to access the record file through the URL link or manually from the "Recordings" section shown as below: ![question](../.gitbook/assets/image9.png) Here you can see all your "Record Question" and "Transfer" recordings with a "Play" button to play the audio. #### Voice Bot - Ask for Transfer The transfer feature is more like an Action rather than a Question. Since actions in the Action step are shared across all the channels, we put transfers in Question steps. ![question](../.gitbook/assets/image126.png) TIP: The transfer number should be in E164 format. e.g. +61412345678 You can record the conversation after transferring for training purposes, etc. Similarly, check the recording from the "Recordings" section from the left sidebar. #### Hang up Calls One thing to mention, if your clients need to come back to the bot after the transferred conversation. There are 2 ways to do so: * the transferred party hang up first * your clients press the star key (need to enable the option in advanced settings) In either way, don't forget to mention it to your clients before the transfer. #### Add Extension to Phone Number Add extension to a phone number by using a hash key. e.g. +61412345678#wwww1234. Each "w" will wait for half a second. Let say I have a voice bot for the number +61412345678, and I put a DTMF question after the Start point of the main flow. The extension "1234" will be considered as the input for this DTMF question. In this way, you are routing the calls automatically. #### Transfer to Multiple Numbers You can put multiple numbers in the "Transfer To Phone Number" field, separated by ONLY commas. e.g. +61412345678,+61412345679#wwww1234,+61412345670 The bot will call these 3 numbers simultaneously, the first person who answers the call get this transfer, the rest call stops ringing. Your phone number provider will only charge you for one call because only one number is transferred successfully. #### Voice Bot - Ask for Payment The payment feature is more like an Action rather than a Question. ![question](../.gitbook/assets/image274.png) ![question](../.gitbook/assets/image168.png) #### PCI Mode (Twilio) For Twilio users, you will need to enable the PCI mode in your Twilio account to capture a payment either in test or live mode. Search "Voice Settings" from your account, ![question](../.gitbook/assets/image298.png) click the "Enable" button: ![question](../.gitbook/assets/image297.png) #### Edit Prompts All prompts are already set in English. Feel free to change it if needed like changing to another language. There are 4 pieces of information to gather for a card. 1. credit card number 2. expiration date 3. CVV 4. postcode (if needed, enable the option in advanced settings). Each information has 3 speeches to set, asking, timeout and invalid: ![question](../.gitbook/assets/image90.png) #### Payment Connector To get a "Payment Connector", which is "Unique connector ID", you will need to access your phone number provider and payment service provider. Twilio and Stripe, for example, go [twilio.com](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900461274\&usg=AOvVaw17_kSCYM3UtDjT_-ti0XNS) [(opens new window)](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900461577\&usg=AOvVaw0b4AB7aEaMgp1HDGPVMkhs) , follow step 1 to 4 in the following 2 pictures: ![question](../.gitbook/assets/image356.png) ![question](../.gitbook/assets/image98.png) ![question](../.gitbook/assets/image369.png) Install, name a "UNIQUE NAME" yourself and click "Connect with Stripe". This "UNIQUE NAME" is then your "Unique connector ID", copy it back to GoChat. ![question](../.gitbook/assets/image177.png) TIP: Note that for "MODE", choose "test" when you are testing the payment process and choose "live" when you are ready to accept real payment. #### Charge Amount Put a direct number like "99.99" or a number variable here. #### Response ![question](../.gitbook/assets/image261.png) You will need a JSON variable to hold the payment result. This is a response example including some card details, confirmation code and payment result. #### Payment Fail You can deal with the situation via the "Payment Fail" option. For example, send "Something went wrong" and goto the Payment Step again. #### One Time Token You can choose to capture a payment right now or later. * If you decide to charge right away: give a value more than 0 in the "Charge Amount" box * If you wanted to get the payment later put a "0" in the "Charge Amount" box. In this way, you will get a token for future capture. Note There are 2 types of token, one-time token and reusable token. With a one-time token, you can charge the client once. While with a reusable token, you can charge the client for multiple times. Under the situation that you set the charge amount to "0", if you enable the "One Time Token" option in advanced settings, you will get a one-time token. Otherwise you get a reusable token. By different combinations of charge amount and "One Time Token" option, you will get different payment results: Charge Amount One Time Token What Will Happen Payment Result 0 Enabled get one-time token ![question](../.gitbook/assets/image390.png) \> 0, e.g. 5 Enabled charge $5 ![question](../.gitbook/assets/image380.png) 0 Disabled get reusable token ![question](../.gitbook/assets/image53.png) \> 0, e.g. 5 Disabled charge $5 ![question](../.gitbook/assets/image391.png) That means, whenever you set a charge amount greater than 0, it doesn't matter whether you enable the One Time Token option or not, you will charge your client right away and get a payment confirmation code. The code starts with "ch\_" if you are using Twilio. On the other hand, an one-time token starts with "tok\_" if you are using Twilio. And a reusable token refers to customer's ID, starting with "cus\_" if you are using Stripe. #### How to Charge with Token Check the documentation of how to create a charge with your payment service provider. Let's take Stipe as an example, to make a payment with a reusable token. ![question](../.gitbook/assets/image117.png) In the example, a post request is sent to Stripe with a testing API key and a charge amount, currency and the reusable token, i.e. the customer ID. ![question](../.gitbook/assets/image97.png) After hitting the test button, this is the response if succeed: ![question](../.gitbook/assets/image221.png) In the response you can see there is an id started with "ch\_", which is the payment confirmation code. That means, you've successfully made a payment. #### Description "Description" is submitted along with the payment details. For example, you can put “Payment of $20.52 submitted from Phone Number (xxx)-xxx-xxxx” to create a record to show which call created the payment. #### A Credit Card for Testing Use the following card details for testing if needed: Credit card number: 4242 4242 4242 4242 Expiry date (MM/YY): 12 25 (pick a date in the future) Zip code: 94105 CVC security code: 333 ### Action Step - Variable Operation GoChat provides you with various built-in operations for variable modification. There are 6 types of variable in GoChat: | Type | Storage | Example | Operation | | -------- | ---------------------------- | --------------------------- | ------------------------------------------------------------------------- | | Text | letters, words, sentences... | Hi, GoChat. | cutting, change case, encode, decode... | | Number | number | 123.45 | + - x ÷, mod, power, log, root, round... | | Boolean | either "yes" or "no" | yes | assign | | Date | date | 2021-03-30 | format, add months/weeks/days | | DateTime | date and time | 2021-03-30 16:52:00 | format, add months/weeks/days/hours/minutes | | JSON | a series of variables | {"name":"jack", "age":"10"} | load, get, update, remove, count, sum, average, sort, shuffle, reverse... | ![variable](../.gitbook/assets/image293.png) Click "Basic Actions" in the Action step and here are the "Set Variable Value" and "Clear Variable Value". #### Clear Custom Field / Clear JSON To clear text, number, boolean, date, datetime variable, please use the Clear Custom Field action. To clear JSON variable, please use the Remove All Items operation in the JSON Operation. #### input value "input value" operation is used to assign value to a variable. This operation works for any variable type. TIP: "input value" for text variable can be used to connect several text variables. See the below picture for where to put original value and operated value. ![variable](../.gitbook/assets/image181.png) #### Math Formula ![condition](../.gitbook/assets/image101.png) With this operation, you can now do formula calculation directly in the Action Step - "Set Variable Value" and Condition Step - "Value". Math operations and function supported: +, -, \*, e, pi, PI, abs(), min(), max(), ceil(), floor(), log(), pow(), round(), sqrt(), sin(), cos(), tan() Please note that If the formula is invalid, the system will return 0 to number variable and empty to text variable. #### Set Text Variable #### trim text | Description | e.g. Before | e.g. After | | -------------------------------------- | ----------- | ---------- | | remove spaces before or after the text | " abc" | "abc" | ![variable](../.gitbook/assets/image256.png) #### sub string | Description | e.g. Before | e.g. After | | -------------------- | ------------- | ---------- | | get part of the text | "Hi, GoChat!" | "GoChat" | ![variable](../.gitbook/assets/image226.png) Note Index starts from 0. Every character counts including space and punctuation. ![variable](../.gitbook/assets/image371.png) #### replace string / replace string case sensitive | Description | e.g. Before | e.g. After | | ------------------------ | ------------- | ---------------- | | replace part of the text | "Hi, GoChat!" | "Hello, GoChat!" | ![variable](../.gitbook/assets/image358.png) Note In case sensitive situation, you have to put exactly "Hi" rather than "hi", "HI" or "hI". ![variable](../.gitbook/assets/image337.png) #### to lower / upper case | Type | e.g. Before | e.g. After | | ------------- | ------------- | ------------- | | to lower case | "Hi, GoChat!" | "hi, GoChat!" | | to upper case | "Hi, GoChat!" | "HI, GoChat!" | ![variable](../.gitbook/assets/image252.png) #### generate random text | Description | e.g. Before | e.g. After | | ----------- | ---------------------- | ---------------------- | | as the name | "code: XXXX-####-xxxx" | "code: UBWT-3657-lkzb" | ![variable](../.gitbook/assets/image208.png) This feature is useful when you need to generate one-time verification code or reference code. #### url encode / decode | Type | e.g. Before | e.g. After | | ------ | ----------------- | ----------------- | | encode | "Hi, GoChat!" | "Hi%2C%20GoChat!" | | decode | "Hi%2C%20GoChat!" | "Hi, GoChat!" | "Hi%2C%20GoChat!" "Hi, GoChat!" ![variable](../.gitbook/assets/image334.png) #### base64 encode / decode | Description | e.g. Before | e.g. After | | ----------- | ------------------ | ------------------ | | encode | "Hi, GoChat!" | "SGksIFVDaGF0IQ==" | | decode | "SGksIFVDaGF0IQ==" | "Hi, GoChat!" | ![variable](../.gitbook/assets/image152.png) #### to URL friendly slug | Description | e.g. Before | e.g. After | | ----------------------------------------------------- | ----------------- | ---------------- | | replace spaces with hyphens and remove the rest signs | "it's a good day" | "its-a-good-day" | ![variable](../.gitbook/assets/image315.png) #### get text before/after ... | Type | e.g. Before | e.g. After | | ------------------------------------------ | ----------------------------- | ----------------------- | | get text before another text | name: GoChat, city: Melbourne | name | | get text before last occur of another text | name: GoChat, city: Melbourne | name: GoChat, city | | get text after another text | name: GoChat, city: Melbourne | GoChat, city: Melbourne | | get text after last occur of another text | name: GoChat, city: Melbourne | Melbourne | ![variable](../.gitbook/assets/image146.png) #### Set Number Variable #### get text length | Description | e.g. Before | e.g. After | | ----------- | ----------- | ---------- | | as the name | 500.59 | 6 | ![variable](../.gitbook/assets/image143.png) #### generate random number | Description | e.g. Before | e.g. After | | ----------- | ----------- | ---------- | | as the name | n/a | 56 | ![variable](../.gitbook/assets/image432.png) #### add / subtract / multiply / divide / modulus / power / natural logarithm / square root | Description | e.g. Before | e.g. After | | ----------- | ----------- | ---------- | | as the name | 7 | 8 | ![variable](../.gitbook/assets/image435.png) TIP in "natural logarithm", when you are calculating log2(8) = ? put 8 as "Value" and 2 as "Number". #### round | Description | e.g. Before | e.g. After | | ----------- | ----------- | ---------- | | as the name | 7.8693 | 7.87 | ![variable](../.gitbook/assets/image204.png) #### floor / ceil | Type | e.g. Before | e.g. After | | ----- | ----------- | ---------- | | floor | 6.55 | 6 | | ceil | 6.55 | 7 | ![variable](../.gitbook/assets/image431.png) #### Set DateTime Variable #### from formatted text | Description | e.g. Before | e.g. After | | -------------------------------------- | ----------------------- | ------------------- | | get DataTime value from formatted text | 00:00:00 30th Aug, 2020 | 2020-08-30 00:00:00 | ![variable](../.gitbook/assets/image27.png) #### add minutes / hours / days / weeks / months | Description | e.g. Before | e.g. After | | ----------- | ------------------- | ------------------- | | as the name | 2021-01-01 00:00:00 | 2021-01-01 00:01:00 | ![variable](../.gitbook/assets/image203.png) ### Action Step - JSON Operation JSON is also a type of variable. It is used to store and manage a series of variables including normal varialbe and JSON variable. For example, this is a JSON storing a customer's detail: ![json](../.gitbook/assets/image201.png) Check this [tutorial video](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900514912\&usg=AOvVaw2QPMiYKbc4v5wWdydwksLA) [(opens new window)](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900515224\&usg=AOvVaw3hQ-iNnKaWmopOOfQzDzzN) about how to write JSON variable. ![json](../.gitbook/assets/image56.png) The "JSON Operation" is sitting in the "Basic Actions" list of the Action step. TIP: Various examples have been already embedded in the operation. Select an operation and use the "Examples" button to explore it! ![json](../.gitbook/assets/image385.png) For example, how to insert an item to a JSON variable: ![json](../.gitbook/assets/image287.png) ### Action Step - Delete bot user ![](../.gitbook/assets/image308.png) You can delete a bot users. This is specially useful to keep your bot users limits controlled. It is possible to broadcast a flow manually when you are close to the limit. ### Action Step - External Request With external requests, you can call APIs from other third parties or your own server to request data, submit data and etc. ![external request](../.gitbook/assets/image131.png) In an Action step, find "External Request" in "Advance Actions" and click "Add your request" then start editing it: ![external request](../.gitbook/assets/image224.png) 1. choose a request type such as GET, POST, etc 2. paste your request URL / endpoint 3. adjust "URL parameters", "Headers", "Body" or "Authorization" section if needed. e.g. setup API key 4. click "Test" and area 5 will show in the "Response" section with a response code 5. click on "Response Headers" to expand the header for more details and the received data is in blue 6. choose which part of the data you need by clicking the circle on the left-side accordingly 7. after clicking area 6, the JSON path for the selected data is automatically shown here. $ means the whole JSON. 8. choose which custom field to store the data. You can create a new field here by typing in a field name and clicking it in the drop-down. Click the "Add" button to add to the mapping list 9. finally, the mapping shows in area 9. Add as many mapping as needed and click "Save". Testing Value Make sure you provide testing data for any one of the fields/variables in the settings before you use the Test button. #### URL Params #### ![external request](../.gitbook/assets/image362.png) In the above screenshot, we can see that there is a URL parameter in the endpoint called "user\_name". Remember to copy the endpoint down and provide a testing value. Alternatively, you can use the URL Params sections for the same result. #### Headers #### ![external request](../.gitbook/assets/image375.png) Same as URL Params, put your key name first, then insert the variable and provide a testing value. #### Authorization #### ![external request](../.gitbook/assets/image32.png) Alternatively, put the token in the Authorization section. It's going to be less error-prone (sometimes people just forgot the "Bear " in front of the token). Moreover, for Basic Auth, simply put your username and password value and the system will do the base64 encoding for you. #### Body To include a file itself in the parameters, use multipart/form-data: ![external request](../.gitbook/assets/image66.png) x-www-for-urlencoded works just like URL Params or Headers section. Instead of listing all the payloads in x-www-form-urlencoded, you can also paste the example payload in raw JSON: ![external request](../.gitbook/assets/image264.png) On the left-hand side, Body Content, paste or write your JSON first, when you insert a variable, the Test body content shows on the right side immediately. It's to specify a testing JSON value. Click on Copy from body content to copy the whole JSON structure. All the variables will be replaced by \{{variable\_name\}}. Remove the placeholder and put your testing values. #### Testing Once you are ready, click on the Test button next to the URL endpoint or in the Response section. ![external request](../.gitbook/assets/image401.png) Besides the tips about how to map data above, you might also want to save the values in the response header for later use. Simply expand the header, click on a value in the header and the JSON path to it shows automatically there. ### Action Step - Send Notification This action allows your bot to send notification through various channels, including * Email * Slack * SMS * Phone Call ![notification](../.gitbook/assets/image217.png) It's all in the "Notification" of your Action step. #### Email Notification To send an email notification, you will need to setup your email integration first. Check [how to setup email integration](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900520677\&usg=AOvVaw1P0FgdNL6sGMZx2WoBKx7y)? ![notification](../.gitbook/assets/image161.png) Unlike "Send Email" step, email notification only supports text message type. Check "Send Email" step in "Email Integration" page if you need more message types like images, buttons, files, etc. Put the sender's address at "Email Profile" and the receiver's address at "To Email". #### Slack Notification Similarly, to send a slack notification, you will need to setup your slack integration first. Check [how to setup slack ingegration](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900521523\&usg=AOvVaw1hwwROhgcEMw3W1SZlXi0R)? ![slack](../.gitbook/assets/image38.png) In the pop-up window, 1. choose a Webhook 2. choose a default channel or name another one 3. pick a message type, add as many as needed 4. for example, "Section" type, put your message at area 4 and add photo or field value if needed 5. use the "Test" button to send the message for test and adjust accordingly 6. once finished, click "Save". #### SMS Notification Setup a sender number before you make a SMS notification. Check how to [add phone number](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900522651\&usg=AOvVaw0USrQlctH2m3Q6w0LQZSo9)? ![notification](../.gitbook/assets/image190.png) You can use the "generate random text" operation with text variable to get a random security code and send out for verification purpose shown in the pictures. ![notification](../.gitbook/assets/image147.png) Choose a sender and receiver, put message and here you go! #### Make Phone Call Same as SMS notification, a phone number is needed to make a phone call. Check how to [add phone number](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900523136\&usg=AOvVaw3zymTGghWNlQOW3bcptx1C)? Moreover, you must make a voice flow connected to this phone number otherwise your voice bot don't know what to say. ![notification](../.gitbook/assets/image200.png) #### Ref Payload Ref payload is used to passing on a message to the voice bot. For example, set the payload to "support" here in the notification action and in your voice flow: ![notification](../.gitbook/assets/image173.png) Goto the Start Step in your Main Flow and save the ref payload in a custom field. TIP You are allow to pass on a JSON variable in the ref payload but base64 encode and decode are needed before and after this. See base64 operations in Set Custom Field. ### Condition Step With Condition step, you can go to different steps/sub flows depends on conditions. ![condition](../.gitbook/assets/image377.png) In your Condition step, click on "+ Add Condition Group" to set at least one condition group. "Otherwise" group is always there. You can make as many condition groups as you need. The matching start from the top to the bottom, once a group matched, the system goes to a named step. When it fails to match all condition group, the "Otherwise" group will take over it. So it's always a good practice to name a step in the "Otherwise" group even it is very unlikely to be used. ![condition](../.gitbook/assets/image163.png) Another important thing to know is the difference between "All conditions" and "Any conditions". It is sitting at the upper right corner of each condition group. You can list more than 1 condition in a condition group. When you do, it matters whether you choose "All" or "Any". "All Condition" means to get this group matched, you will need to have all the conditions matched in the group. ![condition](../.gitbook/assets/image245.png) However, to get a group with "Any Condition" matched, you only need to have one of the conditions matched. ![condition](../.gitbook/assets/image319.png) #### Tag & Sequence Condition #### ![condition](../.gitbook/assets/image333.png) For tag and sequence condition, you can choose "in" or "not in" from the "Operator". Choosing multiple tags/sequences is allowed. #### Text Variable Condition #### ![condition](../.gitbook/assets/image312.png) These are all the operators for text condition. For "has any value" and "is empty" of all variable types, when you clear a variable, the variable becomes empty. Thus, "has any value" is false and "is empty" is true for this variable. #### Number Variable Condition #### ![condition](../.gitbook/assets/image107.png) These are all the operators for number condition. #### DataTime Variable Condition #### ![condition](../.gitbook/assets/image172.png)![condition](../.gitbook/assets/image250.png) These are all the operators for DateTime condition. Note that you will need to put "value" always as the correct format "yyyy-MM-dd HH:mm:ss" no matter which displayed format you choose for that variable. Please note that "before/after" is different from "time before/after". The former compare the whole datetime value while the latter only compare the time value. #### JSON Variable Condition #### ![condition](../.gitbook/assets/image25.png) These are all the operators for JSON condition. Note The very last 3 operators, "has item matched with ...", require the JSON to be a list of variables, not a list of JSON. In other words, if your JSON is storing a list of normal variables, these 3 operators work. They won't work for a JSON storing a list of JSON. #### Custom Input Custom input is built for compare values in JSON variable. Search "custom input" in the if field: ![condition](../.gitbook/assets/image415.png) Pick a value from a JSON, then you can compare it as you use the text variable condition. #### Math Formula #### ![condition](../.gitbook/assets/image101.png) With this operation, you can now do formula calculation directly in the Action Step - "Set Variable Value" and Condition Step - "Value". Math operations and function supported: +, -, \*, e, pi, PI, abs(), min(), max(), ceil(), floor(), log(), pow(), round(), sqrt(), sin(), cos(), tan() Please note that If the formula is invalid, the system will return 0 to number variable and empty to text variable. ### Split Step With Split step, you can go to different steps/flows depends on probability. Split step can be used to build many interesting functions, like * changing speeches rather than same responses all the time * testing your new functions with just a small group of clients to get feedback * or making a fun lottery! ![split](../.gitbook/assets/image278.png) In your Split step, 1. click "+ New Variation", add more than 2 variations 2. change variation title if needed 3. adjust weights as you want * directly put percentage numbers like 30 and 70 then you will get 30% and 70% * alternatively, put weights like 1 and 2 and let the system calculates the percentages 33% and 67% for you 4. select next steps for each variation 5. save the picked variation for later use if needed #### Usage Examples Changing Speeches: ![split](../.gitbook/assets/image210.png) Testing new Functions & Get Feedback: ![split](../.gitbook/assets/image218.png) Fun Lottery: ![split](../.gitbook/assets/image220.png) ### Goto Step "Goto Step" helps you jump to another step in the current subflow or jump to the start point of another subflow. ![goto](../.gitbook/assets/image114.png) Create new subflow directly, or choose an existing one. You can only jump to a step in the current subflow. ![goto](../.gitbook/assets/image70.png) Goto Step is going to make your flow look more organized and clear to understand. Before using Goto: ![goto](../.gitbook/assets/image103.png) After using Goto: ![goto](../.gitbook/assets/image411.png) ## Canvas Canvas helps with step organization. We've learned that to move the workspace, click and drag the workspace. For selecting multiple steps, it's a bit similar. Hold the Shift key then click and drag to cover the steps you would like to select: ![workspace](../.gitbook/assets/image64.png) Alternatively, ctrl + click them one by one: ![workspace](../.gitbook/assets/image87.png) TIP If the edit panel didn't show, ctrl + click one of the green steps twice to de-select it and re-select it again. The panel should show. After selecting multiple steps, click "Create New Canvas" to organize these steps in a canvas box. ![canvas](../.gitbook/assets/image212.png) Click the title of the canvas to edit canvas's title or add a description. Minimize the canvas by clicking the "-" button on the left side of the canvas title. Note You will need to select at least 2 steps to create a canvas or move them to other sub flows. So if you have only 1 step to move or put in a canvas, try adding a temporary step to help and discard it after that. Finally, to add and remove steps from an existing canvas, simply select a step or multiple steps, then drag them into or out of the canvas: ![canvas](../.gitbook/assets/image202.png) When you move steps into the canvas, the background color of the canvas changes, release steps when it turns grey from white. ## Sub Flow Same as "Canvas", "Sub Flow" can also help with step organization. "Canvas" organizes steps in a specific subflow while "Sub Flow" organizes steps in the whole chatbot/flow. #### Create Sub Flow #### ![sub flow](../.gitbook/assets/image283.png) IGo "Flows" from the sidebar, click "+ New Sub Flow", choose a flow type, give a name and save. Flow Type Description Normal Subflow Varies in channels, basic subflow Workflow work at the backend without influencing the front end task Function Flow perform repetitive tasks ![sub flow](../.gitbook/assets/image196.png) Click on the subflow to enter and start editing it. For more operations, click on the 3-dots icon. The Sub Flow Ns is a unique subflow ID in the chatbot. Folders are used to organize subflows. #### Move Steps to Sub Flow To move a step or multiple steps to another subflow, select the steps first, then you can either * use the Move to Subflow button in the editing pannel, or * copy and paste them To select multiple steps, hold the Shift key, click and drag to cover the steps. ![workspace](../.gitbook/assets/image64.png) Alternatively, hold ctrl key and click steps one by one: ![workspace](../.gitbook/assets/image87.png) After selecting multiple steps, editing panel shows. "Select sub flow", then click "Move to sub flow". Note You will need to select at least 2 steps to create a canvas or move them to other sub flows. So if you have only 1 step to move or put in a canvas, try adding a temporary step to help and discard it after that. ![sub flow](../.gitbook/assets/image37.png) Note If you find yourself unable to click "Move to sub flow" after choosing a sub flow, perhaps you included the green Start Step in your selection. Because the green start point of any subflow can't be moved to other subflows. You can solve this issue by de-selecting the green start point. To copy and paste, use Ctrl + C to copy the selected steps, then go to the destination subflow, use Ctrl + V to paste there. #### Call Sub Flow After creating subflows, you can then call a subflow via: * Goto Step * Keyword * Sequence * Broadcast * Facebook Widget * Comment Growth Tool * Triggers * Live Chat * Menu Items * Inbound Webhooks * [API call](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900535682\&usg=AOvVaw0LB3Aczb0OuehzDhNHkNmF) ## Workflow A workflow can be considered as a backend flow where you can automate tasks such as adding or removing tags, set custom field variables, do external API calls. This way the conversation you have with the subscriber will not be affected by needing to wait to apply all those actions and the experience is as smooth as possible for that end-user. #### Create Workflow To create a workflow just go to the flow overview by selecting Flows from the left-hand menu. Then press the button + New Sub Flow ![title](../.gitbook/assets/image72.png) Select the workflow flow type then give it a name. Once done press the button Create to start creating your workflow. Once you create your flow and you end up in the flow builder you will notice that you will have access to fewer blocks than when selecting a regular or function flow. Available blocks are: * Action * Condition * Split * Send Email As mentioned this flow is meant to create a backend flow that you can trigger from any other flow inside your chatbot to handle system tasks like adding tags, set custom fields, but also sending emails. ![title](../.gitbook/assets/image246.png) #### Workflow Example Let’s take an example of how a workflow can be used. A user signs up with an email and or phone number and you want to sync this information with your CRM platform of choice. So soon as you grabbed the credentials from the user you can make an API call using the external request block inside of the action module. You would also want to tag the user inside the chatbot for completing the onboarding step. After done we send an email notification to an admin that a new lead has been created to follow up on. A workflow can then look something like this; ![title](../.gitbook/assets/image187.png) If you were to incorporate this into the flow that has the actual conversation it might become an issue as the conversation could be on hold for several seconds or more to finish all these system processes. And you might lose the user as he or she thinks the conversation is done. #### Trigger Workflow It is very simple to trigger the above workflow inside of any other flow that you build. Just insert an action block, go to advanced actions, then choose trigger workflow at the bottom ![title](../.gitbook/assets/image353.png) You can then select any workflow you created. This workflow will then be processed in the backend while the conversation with the user will not be affected and continue without any delay. ## Function Flow A function flow is a fantastic way of preventing you to create repetitive flows over and over again. Think of when you need ask for emails or phone numbers. With a function flow you will be able to send the user to that one flow, then once completed the user can continue exactly from the point they left off in the previous flow. #### Create Function Flow To create a function flow go to Flows from your left-hand menu, then press the button + New Sub Flow. Select the Function flow type and name your flow. Once done press the button Create and you will be taken to the flow builder. ![title](../.gitbook/assets/image267.png) #### Function Flow Example Once inside the flow builder and wanting to insert a new block you will see that you have all the blocks at your disposal just like in a regular flow, and one extra called Output. ![title](../.gitbook/assets/image373.png) This output is what makes this function flow so unique as it gives you the ability to send the user back to the previous flow (if you like) exactly where he or she left off. Let’s create an example where we ask the user for an email and add an output module to it; ![title](../.gitbook/assets/image63.png) As you can see a simple flow but with the benefit this is the only function of the flow, asking for an email. #### Call Function Flow After this flow is finished you can return the user to the previous flow to continue the conversation there if you like. Let us show you how that could look like; ![title](../.gitbook/assets/image162.png) There are many use cases for function flows so you can get as creative as you like. #### Multiple Outputs Multiple Output Steps are supported in your Function Flow. When you call a Function Flow with multiple outputs, the titles of those outputs will show in the Goto Step and you can handle it accordingly. ![title](../.gitbook/assets/image134.png) ## Live Chat Besides being able to create chatbot automation you can also follow up with your subscribers through our live chat inbox. We have one available for every channel. You can access the live chat in two ways: 1. Through the main dashboard overview 2. Each individual chatbot channel #### How to access live chat through the main dashboard When at your main dashboard overview you will have a tab on the top named Live Chat. ![title](../.gitbook/assets/image29.png) The biggest advantage of this overview is that you can see all the channels you have built chatbots on. So going to live chat from this main dashboard is very easy. Just select the chatbot and the live chat will appear. #### How to access live chat through a chatbot channel If you are within any of your channels you can also access the live chat from that channel. Just choose Live Chat and the live chat will open up displaying all of your subscribers inside that chatbot channel. ![title](../.gitbook/assets/image75.png) #### How to use Live chat Once you select any of your subscribers you will then get to see the live chat in action. Many options and information are present so let us walk you through them. ![title](../.gitbook/assets/image360.png) #### Section 1 displays subscribers(bot users) who interacted with the chatbot * Click on Inbox to switch between Inbox and Done. When you finish a conversation, move the users to Done. * Use the Search bar to search a conversation by user name. * Click on a user to view conversation detail and user profile. #### Section 2 shows the chat your subscriber has with your chatbot * On the top of it, click the <= icon to hide Section 1, the user list area. * Right next to it is the subscriber's profile photo and full name. * In the upper-right corner, click on the tick icon to move the subscriber to Done. * And the 3-dots icon offers a Hide message from bot option and Manage Shortcuts option. Hide message from bot lists messages sent only by the user and agent, helping you get a clearer look at the conversation so that agents don't need to go through too many messages. Shortcuts help agents make quicker responses to the user's query. You can also manage your shortcuts in Tools - Shortcuts. ![title](../.gitbook/assets/image255.png) * Hover your mouse on a message sent by the bot, click on the little v icon to resend the message or jump to this step in the flow, in case you want to edit anything. #### Section 3 allows agents to reply to your subscribers * Write a reply in the blank area. * Type a slash and keyword to search for a shortcut. Use up and down keys to go through shortcuts, hit the enter key to get the pre-written content. * On the right side, \ icon is used to call a variable, e.g. First Name of the user. You might also want to call it quicker by typing to left curly braces \{{ and searching a field name.
* On the bottom of it, the most left-hand side icon is used to change persona. The default icon refers to the default persona, the chatbot itself. Add persona via Contents - Personas. * Switch between Reply and Note to change reply mode. When you are in Reply mode, the reply area is in white. The content will be sent to your subscriber directly. When you are in Note mode, the reply area is in yellow. The content will be displayed in the conversation area but in yellow and these notes won't be sent to your users. They are for internal reference only. * the final 4 icons in the bottom-right corner are for sending emoji faces, media (image, gif, audio, video & file) and subflows. The last icon is to send the message/note. You can hit the enter key instead. #### Section 4 displays the profile of the subscriber #### Section 5 shows notes, tags, subscribed sequences, OTN topics and all custom user fields * Add or remove tags from this overview directly. Very useful when it comes to getting subscribers into lead funnels and such. * For OTN topics and sequences you can only remove them from the user. * The same goes for the user fields, you can view, adjust the values or delete them entirely. #### Sending subflows to users After you finished a talk with a subscriber you might want to send them to a subflow. This is easily done by pressing the icon. A popup window will then appear where you can select or search for your flow. ![title](../.gitbook/assets/image10.png) Once you select your flow press the blue button named Send Sub Flow and the flow will be sent. NOTE: Do make sure you have disabled live chat mode before sending the subflow. Otherwise the chatbot will not be able to send the messages inside the flow. ![title](../.gitbook/assets/image176.png) TIP Whenever agents reply in section 3, you will see the Pause Automation area automatically starts a 30 minutes count down. This means that, the chatbot will stop responding during the time. Agents can add on more time if needed. When time is up, the bot starts to reply again. ## Bot Users (also called just Users) People who opt-in to your chatbot by interacting with it are considered bot users. These become contacts inside of your chatbot channel and during the course of a single or multiple conversations, the chatbot will be able to gather information about them to give you more insights into your audience. You can go to your bot users by going to the corresponding section in the left-hand menu once you have logged into one of your chatbots. ![title](../.gitbook/assets/image58.png) From here you will see a list with a complete overview of all users that have interacted with and therefore opted into your chatbot. #### Filter bot users based on conditions Once on this overview, you can also quickly segment your users by using the filter option. Once pressed you will be able to use any condition/filter you like. ![title](../.gitbook/assets/image249.png) This gives you the ability to quickly see what tags someone has, or what values a custom user fields are. An example of a filter could be that you want to know who amongst the bot users has given its email. Another example could be when a user finishes the initial onboarding flow you tag them as such and you want to be able to see who did this. #### User information Once pressing a certain bot user a popup will appear and it will show all the collected bot user details so far. ![title](../.gitbook/assets/image376.png) You will see the following on the left side: * Name * Gender * Language * Timezone * Local time Below the profile image, you will have the ability to either delete the user or download the user data. This will help you become GDPR compliant as users might request this from you. You will also see the specific channel user id and some date and time information like subscribed, last interaction and such. If we go with the right side of the user information you will see tabs for: * Notes * User tags * Subscribed Sequences * OTN Topics * Custom User fields Only you press one of the tabs you will be able to view the data collected. For tags, you will have the most options at your disposal. ![title](../.gitbook/assets/image414.png) You will be able to add tags directly to the user but also remove them as well. For the topics Subscribed Sequences, OTN Topics you will be able to only remove them from the user. For Custom User Fields you can either remove or change its value. #### Importing or creating new users For the SMS and voice channels, it is also possible to import or create users manually. In the top right, you will have the buttons to do so. ![title](../.gitbook/assets/image93.png) Creating a new user means adding a single user manually whereas Import means you can do this in bulk by means of a CSV file. #### Delete bot users manually ![](../.gitbook/assets/image420.png) # Fields & variables TIP Before the detailed introduction of each step, let's take a look at what is field(variable) in GoChat. It might take you a moment but this is essential to know more about the system. Field, aka variable, is a container to hold a value. Classification Description system field and custom field system field is created by the system with pre-defined variable name and type, while custom field is defined by yourself bot field and user field bot field is shared in the whole bot, while each user has his/her own set of user fields text field, number field, boolean field, date field, datetime field and JSON field see variable type ### User Field User field belongs to users. For example, each user has their own name and email address. So "name" and "email" are user fields. ### Bot Field Bot field belongs to the bot. For example, a restaurant bot holds an address and contact number of the restaurant. So "restaurant\_address" and "restaurant\_contact" should be created as bot fields. Because you don't want to manage different addresses or contacts of your restaurant for every user. ### System Field System field is created by the system with pre-defined variable name and variable type. There are system bot field and system user field: Some system fields only exist in the specific channel. Check the table below for how to edit system field: | Field Name | Field Type | Variable Type | Description | How to Edit | | -------------------------------------- | ---------- | ------------- | ----------------------------------------------------------- | -------------------------------------------------- | | User Ns | user field | text | user identification in GoChat | non-editable | | User Id\* | user field | text | user identification from the channel | non-editable | | First Name | user field | text | profile info | in Question Step/Action Step | | Last Name | user field | text | profile info | in Question Step/Action Step | | User Name | user field | text | profile info | in Action Step | | Gender | user field | text | profile info | in Action Step | | Email | user field | text | profile info | in Question Step/Action Step | | Phone | user field | text | profile info | in Question Step/Action Step | | Profile Image | user field | text | profile info | in Question Step | | Locale | user field | text | profile info | non-editable | | Timezone | user field | text | profile info | non-editable | | Language | user field | text | profile info | in Action Step | | Subscribed | user field | datetime | subscribed time | non-editable | | Last Text Input | user field | text | user's last input | edited by system | | Last Interaction | user field | datetime | last action time | edited by system | | Last Button Title | user field | text | last button pressed | edited by system | | Flow Ns | bot field | text | flow(bot) identification in GoChat | non-editable | | Sub Flow Ns | bot field | text | sub flow identification in GoChat | non-editable | | Page Name | bot field | text | connected Facebook page name | non-editable | | Page Id | bot field | text | connected Facebook page id | non-editable | | Page User Name | bot field | text | username of the page in Facebook | non-editable | | Last FB Comment | user field | text | user's last comment text in the Facebook page | edit by system | | Last FB Comment Post Id | user field | text | post id of where user put the last comment | edit by system | | Last FB Comment total tagged users | user field | number | tagged users amount in last comment | edit by system | | Last FB Comment total new tagged users | user field | number | tagged but haven't subscribed(to bot) users amount | edit by system | | Last FB Comment is existing users | user field | number | before this comment, is he/she an existing user? yes=1,no=0 | edit by system | | Live Chat Url | user field | text | (for agent) visit to talk to user in live chat | edit by system | | NOW | user field | datetime | current time in user's timezone\* | edited by system | | TODAY | user field | date | current date in user's timezone\* | edited by system | | BOT\_CURRENT\_TIME | bot field | datetime | current datetime in workspace's timezone | edited by system | | ITEM | user field | array (JSON) | each item in a JSON | in "For Each" message | | SELECT | user field | array (JSON) | selected item | in "Select" new step | | SHOP | bot field | array (JSON) | store information | in Ecommerce Integration | | CART | user field | array (JSON) | user shopping cart | in Action Step | | ORDER | user field | array (JSON) | user's last order | edited by system | | User | user field | array (JSON) | user's profile | edited by system according to other profile values | | DialogFlow | user field | array (JSON) | DialogFlow response | edited by DialogFlow agent | \*Note If the channel doesn't support timezone in user's profile, or, the channel supports but the user don't have a timezone value, workspace timezone will be used instead. ### User Id in Different Channels: | Channel | Meaning | Example Value | | --------- | --------------------------------- | ------------------------------------ | | Facebook | Unique Id in your Facebook page | 6288386817841812 | | Instagram | Unique Id in your Instagram bot | 6570462892993643 | | Telegram | Unique Id in your Telegram bot | 1173717756 | | Slack | Unique Id in your Slack workspace | U017MKNENH | | WeChat | Unique Id in your WeChat account | oNzS3wpEjnA3tXmOcNxpqtAnBwWg | | WhatsApp | User's phone number without + | 61412345678 | | SMS | User's phone number | +61412345678 | | Voice | User's phone number | +61412345678 | | Google | Conversation Id from Google | 8095938e-90cf-4347-ab94-9224308672b0 | | Line | Unique Id in your Line bot | Ub02c77c69c59c5be5597d58ce2701ebe | | Viber | Unique Id in your Viber bot | mdY9hOWdeQC6J/Sl19Qh8A== | | Vk | Unique Id in your Vk bot | 705862439 | Note The unique id from the channel is only unique in your Facebook page, Telegram bot, Slack workspace or WeChat account, not the unique id in the whole Facebook, Slack, etc. ### Variable Type There are 6 types of variable in GoChat: | Type | Storage | Example | Operations Supported | | ------------ | ------------------------------------ | --------------------------- | ------------------------------------------------------------------------- | | Text | letters, words, sentences... | Hi, GoChat. | cutting, change case, encode, decode... | | Number | numbers | 123.45 | + - x ÷, mod, power, log, root, round... | | Boolean | either "1" or "0", for true or false | 1 | assign | | Date | date | 2021-03-30 | format, add months/weeks/days | | DateTime | date and time | 2022-01-01T12:00:00+10:00 | format, add months/weeks/days/hours/minutes | | JSON (array) | a series of variables | {"name":"Jack", "age":"20"} | load, get, update, remove, count, sum, average, sort, shuffle, reverse... | #### Boolean Value When these values stored in the field, the boolean return false, otherwise it goes true: * empty * null * 'false' * false * 'no' * 0 ### Create Custom Field Wow, now you are a master 👨‍🎓 of field! Let's try it out! 😎😎 You can create variables in 2 ways: | Place | Type Supported | | --------------------------------------------------------------------------------- | ---------------------- | | in Contents section | user field & bot field | | anywhere you need to map result to variable, e.g. Question step, Integration, etc | user field only | #### Create Custom Field in Contents Section ![question](../.gitbook/assets/image328.png) 1. go "Contents" from the left sidebar 2. select User Fields or Bot Fields 3. use folder to organize your fields if needed ![question](../.gitbook/assets/image121.png) Click the blue "+ New User/Bot Field" button on the right side to create a field. "Field Name" is a must. You can use any character to separate words like underline or space. We suggest you keep the field name as concise as possible, to avoid any possible display issue. After that, pick a variable type. Add default value or description if needed. (default value is for bot fields only) Folders can be used to organize variables. Trust me, you will need it when your flow goes big. 🧐 #### Create Custom Field in Question and Action Step To create new fields in for example, the question step: ![question](../.gitbook/assets/image26.png) Type in a new variable name in the "Enter Field Name" box and click it in the drop-down list. Select correspond variable type and here you go. ![question](../.gitbook/assets/image186.png) Another example, create in an integration: ![question](../.gitbook/assets/image185.png) # Google My Business The whole process will be: 1. connect Google account 2. create agent, build flow & test 3. verify agent 4. launch chatbot 5. go live ## Connect Google Account ![google](../.gitbook/assets/image80.png) Follow steps 1, 2 and 3 to connect to your Google account. Note Please note that this Google account must have access to the business (either owner or manager). For agency, you will need to be invited to be the manager of your client's business. ![google](../.gitbook/assets/image175.png) After the connection, in the above screenshot: 1. click "Sync Locations" to pull all the businesses that associate with this Google account, whether they are verified or not. 2. create agent then create flow 3. scan the QR code or visit the URL link to test the bot in Google Map ## Create Agent Click "Create Agent", fill in the profile information including: ![google](../.gitbook/assets/image13.png) 1. phone number 2. website address (same as your business website address) 3. privacy policy URL 4. timezone 5. logo 6. entry points (local, non-local, both local and non-local) 7. welcome message 8. offline message TIP If you get an error saying that fails to create an agent because the location is not verified, try to click cancel and refresh the page. The "Create Flow" button will show. ## Local or Non-Local Type Agent Verification Process Entry Points Local Automatically Google search & Google map Non-Local Manual Process Google search, Google map, site links, answer card, website buttons etc ## Build Flow & Test the Bot When your agent is created, click "Create Flow" to start building your bot. Check "Flow Builder" documentation for how-tos. ## Verify Agent IMPORTANT Build and test everything before you request an agent verification. Because once verified, it's very difficult to change the agent information. You will need to contact Google yourself. Before you send the request, check this: 1. Did I choose what suit my business best, local or non-local? 2. Am I happy with all agent information like logo, contact phone, etc? 3. Do I have a contact email that shares the same domain as my website? ![google](../.gitbook/assets/image286.png) Click the button next to the "Open Flow" button, then click "Verify Agent". ![google](../.gitbook/assets/image108.png) Provide a business website, contact person name and a contact email that share the same domain as the brand website. For a local business, if your business is already a verified business, your agent can be verified automatically and immediately. You will see the green "Verified" label. Thereafter, you can launch your chatbot. ![google](../.gitbook/assets/image426.png) While for a non-local business, after submitting the request, you will receive 2 emails from Google. One email asks you to reply for approving GoChat to help with the bot automation in a specified format (security key needed). Another email will give you the security key. It will take you a few days (up to 7 days) to get your agent verified. ## Launch Agent ![google](../.gitbook/assets/image303.png) When your agent gets verified, click "Launch Agent" and a chat button will show with your business after 4-6 hours. You will see the green "Launched" label. ## Unlaunch Agent If you wanted to stop the bot automation, click the green "Active" button under status. And to stop showing the bot with your business, you need to unlaunch your agent. ![google](../.gitbook/assets/image335.png) Click "Unlaunch Agent" and again, you will need to wait for 4-6 hours to see the "Chat" button disappear. By then the labels will look like this: ![google](../.gitbook/assets/image31.png) To launch it again, just click on "Launch Agent" again. ## Talk to Google Bot Before you launch your bot, goto \*Google section on your GoChat dashboard. Visit the Test Url or scan the QR code to talk to the bot. After your bot launched, Google your business name in a webpage. Click on the CHAT button to start the conversation: ![google](../.gitbook/assets/image336.png) Or search your business name in Google Map. Click on the Message button to start the conversation: # Instagram Bot Firstly, you need an Instagram business account. To change from personal account to business account, follow steps 1, 2 and 3 in the following screenshot and choose "Business": ![ins](../.gitbook/assets/image211.png) Then connect your Instagram business account with your Facebook page. A Facebook page is a must, if you don't have one, create a new page.
Go to the "Settings" of your Facebook page, then "Instagram", "Connect Account".
The next step is to turn on the "Allow access to messages" in your Instagram app, see steps 1 to 5 in the following screenshot: Menu - Settings - Privacy - Messages - Allow access to messages ![ins](../.gitbook/assets/image23.png) Finally, in GoChat, let's connect your Instagram with GoChat. Go "Facebook" and "Reconnect" (Yes, Facebook, not Instagram):
Continue as yourself or click "Edit Settings" if you've previously linked GoChat to your Facebook.
IMPORTANT: In the above screenshot, select ALL the Instagram Business Accounts and Facebook Pages that you want to use with GoChat, not just for the current workspace. Give all permissions and after the connection, you are able to see your Instagram flow in both "Facebook" and "Instagram":
## Talk to Instagram Bot Instagram doesn't support Preview feature, so to talk to your Instagram bot: 1. Search your account name on Instagram or goto the Instagram section on GoChat dashboard, click on the URL link below the bot name to visit your Instagram page 2. follow the account and click Message to start the conversation. ![](../.gitbook/assets/image296.png) # Omnichannel bot Omnichannel gives you the ability to create 1 single bot and connect it to all channels supported in omnichannel. Currently, there are 8 different channels but as we keep adding more you will be able to connect these as well. So where you first needed 8 chatbots to each connect to their own channel you can now do the same with just 1 chatbot! Unlike separate channels like Facebook, WhatsApp, Telegram and so on, you have 1 omnichannel per workspace. This might be subject to change in the future but keep this in mind for now when connecting your channels. ## How to create a chatbot in omnichannel From the left-hand menu press omnichannel. You will then have two options to create your omnichannel chatbot. ![title](../.gitbook/assets/image355.png) 1- You can create a completely new chatbot. If you are starting with an empty workspace where you don’t have any chatbots yet, this will be the most likely option you will choose. 2- If you already created a chatbot into a channel and want to use this same chatbot inside of your omnichannel, then you can choose the option “Convert Existing Chatbot”. This will also have the big advantage of importing the bot users you already have into the omnichannel chatbot. Once you have chosen any of your preferred option you will continue to the next step. If you selected the “create new bot” then you will be taken to the template store where you can select any of the available templates, or select the option “Blank Template”. This option lets you start from scratch and you can build the chatbot to your own liking. Once you made your choice you will be taken to the window where you are able to name your chatbot, along with adding a description. ![](../.gitbook/assets/image332.png) Once you are done press the green button named “create bot” and you will be able to connect the channels. ## How to connect channels to omnichannel Once your omnichannel chatbot has been created, head back to the main dashboard to connect the channels you like the omnichannel to manage with this chatbot. ![title](../.gitbook/assets/image154.png) If you did not connect any channel yet to your workspace then it will take you to that specific channel to do so. Once you have added them you will be able to link them to this omnichannel chatbot. You can unlink them at any time by pressing the button on the right-hand side. ![title](../.gitbook/assets/image119.png) ## How to create an omnichannel flow Now that you have created the chatbot and connected your channels you are ready to create your chatbot. Now every single feature inside the flow builder will be available to you but do note that certain channels may not be able to use them. ## Use conditions to determine where the user is coming from We have a condition you can use to determine which channel a user is coming from. Just go to creating a condition, then select the “channel” option. ![title](../.gitbook/assets/image340.png) Once selected you will be able to choose from the available channels in omnichannel. ![title](../.gitbook/assets/image77.png) Once you set up this condition you can direct the user to specific channel features. For example cards might be available to Messenger but not to Telegram. It does not show the same way. So using this condition you can send a customized response for Telegram users. ## How to determine which channels support which features? Every block when hovering over it will show the available channels by displaying the icons of those channels at the top. You can also reference the same icons when inserting a node into the flow builder ![title](../.gitbook/assets/image171.png) # SMS & Voice Bot ## Pick Providers As follow are the providers we currently work with. Different providers support different bots. Choose your provider according to your needs. Create an account with them and pick your number. ![phone number providers](../.gitbook/assets/image413.png) ![provider](../.gitbook/assets/image440.png) GoChat has put links for you to jump to their official websites. You can either access them in the according channel (see screenshot above) or on the "Integration" page (see screenshot below). ![provider](../.gitbook/assets/image22.png) Follow the steps in the above screenshots to connect to the provider and add numbers. ## Sign Up & Get Numbers Take Twilio as an example. On their website, sign up, login in, then you will get to your dashboard: ![twilio](../.gitbook/assets/image309.png) Click "Get a Trail Number". ![twilio number](../.gitbook/assets/image311.png) In the pop-up window, the number is shown on the upper left side, click "Choose this Number" or "Search for a different number". Then you have your own number! ## Connect to Provider ![twilio id](../.gitbook/assets/image410.png) In your provider dashboard, click the little button on the right side to copy your "ACCOUNT SID" and "AUTH TOKEN" value back to GoChat: ![twilio id](../.gitbook/assets/image438.png) 1. put your copied values in corresponding fields. 2. click "Save". 3. click "Add Phone Number" if you are building an SMS or Voice bot, otherwise, "Add WhatsApp Number". * More information * [Twilio Docs (opens new window)](https://www.google.com/url?q=https://www.twilio.com/docs\&sa=D\&source=editors\&ust=1740386900555088\&usg=AOvVaw3BVVXae6VbaEiCazSvdzxG) * [360Dialog Docs(opens new window)](https://www.google.com/url?q=https://docs.360dialog.com/\&sa=D\&source=editors\&ust=1740386900555372\&usg=AOvVaw1gB40_twqTb-YHRsqtUOD-) * [SignalWire Docs(opens new window)](https://www.google.com/url?q=https://docs.signalwire.com/topics/relay/%23relay-documentation-access-keys-tokens\&sa=D\&source=editors\&ust=1740386900555587\&usg=AOvVaw0QVbVBr495QDz9Jw-_7Bx4) * [Message Media Docs(opens new window)](https://www.google.com/url?q=https://developers.messagemedia.com/\&sa=D\&source=editors\&ust=1740386900555819\&usg=AOvVaw2O6JkYgRNapQFDK4OFTUmV) ## Add Numbers Click "Add Number" in area 3 in the above picture after connecting your provider with GoChat. ![twilio find number](../.gitbook/assets/image8.png) Click "Find Number", the system will search all the numbers that are under your provider account. Click "Add" to add one of the numbers. Thereafter, you are able to see all your connected numbers under the "Phone Numbers" page in "Integration". ![twilio find number](../.gitbook/assets/image324.png) Add new numbers from the drop-down list as below: ("Buy Number" is disabled at the moment) ![add number](../.gitbook/assets/image96.png) TIP If you would like to disconnect the WhatsApp / Voice / SMS flow with your number, or create a new flow for that number, copy the number and click "Release Number". Then your flow will be disconnected but stay safe in your "All Bots". Add the number again to create a new flow with it. After adding phone numbers: ![phone number](../.gitbook/assets/image166.png) 1. use the plus button to create new a flow. 2. button 2 is for "Open Flow" of this phone number. ## Talk to WhatsApp/SMS/Voice Bot * WhatsApp - add the phone number as a new contact and send messages to it * Voice - call the phone number * SMS - send SMS messages to the phone number # Telegram Bot On your phone, visit [https://t.me/BotFather (opens new window)](https://www.google.com/url?q=https://t.me/BotFather\&sa=D\&source=editors\&ust=1740386900604969\&usg=AOvVaw0ddHs4DMm5Lms1gJeiNwB9) from a browser. Click "SEND MESSAGE" and you will jump to the Telegram application. Click "Start" at the bottom to talk to @BotFather. ![telegram](../.gitbook/assets/image347.png) Send "/newbot", then a username for your bot. You will get a token like this: ![telegram](../.gitbook/assets/image240.png) Copy the token and go back to GoChat. ![telegram](../.gitbook/assets/image206.png) In GoChat, click "Add New Telegram Bot" and put your token in the pop-up window. Finally, click "Create Flow" and there you go! ![telegram](../.gitbook/assets/image215.png) Flip the status to stop/start the automation and click the red x to remove the connection (your flow will still be in "All Bots") # Webchat Channel With the webchat widget, you will be able to add a chatbot to any website without the dependency of any other channel. This will help you unlock the power of conversational marketing without the downsides or restrictions other channels might have. ## How to access the webchat widget To access the webchat widget you need to create a omni-Channel chatbot. Please note web chat is only available under Omni-Channel. If you haven’t create omni channel, you can create the “Set up omni channel” button to create the omni channel as per screenshot below: ![](../.gitbook/assets/image133.png) If you create the omni channel, give it a name, and then you will see the screenshot below: ![](../.gitbook/assets/image118.png) You can create new bot or converting existing bot into omni channel. After you create the omni channel, you will be able to find the webchat Widget from the left side bar. ![](../.gitbook/assets/image342.png) ## WebChat Widget Setting Once you have located your widget you can press the pencil icon on the right of it to edit and customize the webchat widget to your liking. Once pressed you will enter the main overview of available settings; ![](../.gitbook/assets/image158.png) #### Chat Bubble With the chat bubble, you are able to select your preferred bubble icon. You will see that reflecting directly on the preview in the bottom right corner;![](../.gitbook/assets/image247.png) You can also choose between having the icon only or combining it with text from the top options of this screen. ![](../.gitbook/assets/image39.png) #### Conversation button With the conversation button, you can create your own call to action (CTA’s) buttons to allow users to start, continue or start a new conversation; ![](../.gitbook/assets/image412.png) #### Welcome message You can add a welcome headline and tagline to get people to entice people to press on your webchat widget. ![](../.gitbook/assets/image392.png) #### Out of office message With the out of office message you will be able to add a notification to your widget. You will be able to set the reply message as well;![](../.gitbook/assets/image109.png) #### Pre Chat Form With this setting, you can capture essential data before the chat even starts and save this to any system or custom user field available. Please note Pre Chat Form don’t works with embed & full page mode. You need to use floating or pop up style. ![](../.gitbook/assets/image123.png) First of all you will have the form Header where you can state the purpose of this form. After you will be able to insert a field form by pressing the button + Add Field. You will then be able to select any of the following field types; ![](../.gitbook/assets/image257.png) After you selected your type you will be able to edit it by pressing the edit button; ![](../.gitbook/assets/image222.png) Once you are editing any of the fields you will have several options to choose from. Let’s take an email type field as an example; ![](../.gitbook/assets/image260.png) First of all, you can select the system or custom user field you want to save the value given by the user to. Then you will be able to set the name of the form field label. Inside the placeholder, you will be able to give an example of the format you would like to receive the email in. The hint section will allow you to give additional information about this field type. The last two options will allow you to determine if the field is required and what width you want the field to be. As a result, it will then look like this; ![](../.gitbook/assets/image76.png) Once you have fully edited the field to your liking you can press the button done at the top of this field to save the changes. Lastly below the fields you will have an additional option to allow the user to write a message prior to entering the chatbot; ![](../.gitbook/assets/image233.png) This will look like the following on the live view for the user; ![](../.gitbook/assets/image434.png) This message will be saved in the system field called \{{last text input\}}. #### Default Start Flow If the pre-chat form is not enabled then you will be to set a default starting flow of your own choosing; ![](../.gitbook/assets/image253.png) Once pressed you will be able to select any of the flows you have created beforehand; ![](../.gitbook/assets/image48.png) #### Skip the conversation button In the web chat, you can set up and then skip the need to click the button to initiate the conversation. In order to do that, you need: * make sure you don’t select other channels in the web chat widget. * make sure the default start flow is connected. You can find your connected channel settings here: Open Image 2023-03-28 at 9.43.48 am.jpg Also make sure the start flow is connected to any of your flow. Open Image 2023-03-28 at 9.45.40 am.jpg After you have made the changes, make sure you apply the changes, and then install the code, and test on your website. Also you can’t have the pre-chat form enabled in order for this to work. You shouldn’t need to click the button to initiate the conversation now. #### Greeting Messages You can set up different greeting messages on different page of your website. It will show up for the first time user, Open The power of open AI 2023-05-01 at 9.06.31 am.jpg ![](../.gitbook/assets/image372.jpg) And you can find the greeting message settings below: Open GoChat 2023-05-01 at 9.49.47 am.jpg ![](../.gitbook/assets/image244.jpg) You can set up which page or pages you want to trigger the greeting message, also you can set up the sender name & profile. ### Settings Inside the settings tab you will have the following options to customize; * Language * Notification Sound * Features * Whitelist Domain Let’s take a deeper look at each individual setting #### Language With the language setting you can change the display language of a few sections inside the widget; ![](../.gitbook/assets/image21.png) Just select the language on the left-hand side and you will see the changes reflected in the preview on the right instantly. #### Notification sound With this option, you will be able to set up your sound for new message notifications your users will hear when in conversation with your webchat widget. ![](../.gitbook/assets/image17.png) You can choose out of 21 sounds or select the no sound instead if you prefer. #### Features With this option you can enable or disable certain features inside your widget; ![](../.gitbook/assets/image276.png) You will have access to the following options; * Allow Emoji Picker -› let users pick from pre-set emojis * Allow Upload Attachments -› let users upload documents, images and or videos * Allow users to end chat -› this option will allow the user to close the chat conversation. * Allow popup Chat Window -› this allows users to change the chat widget into a pop up which results in a bigger display of the chat * Allow to Continue Chat in Mobile -› Users can scan a qr code to continue the conversation on their phone. Smooth experience if they start on a computer and want to continue the conversation with your business while being in the road * Enable Text Typing Effect → This will allow the response to show up word by word, if this is disabled, then the response will show up at once immediately. #### Whitelist domain In order to display the widget on your website, you will need to whitelist your domain. You only have to add your root domain and all subdomains that you may have will automatically be recognized; Please note only one root domain supported in the omni channel. ![](../.gitbook/assets/image433.png) ### Channels The webchat widget allows you to seamlessly redirect users to multiple platforms such as WhatsApp, Facebook Messenger, Instagram, Telegram, and more. This feature ensures that users can connect with you through their preferred channels, enhancing their overall experience. #### How It Works When a user visits your webchat widget for the first time, they will be presented with a Get Started button, along with various channel options. These channels are integrated via Omni Channels. If a platform like WhatsApp is linked to an Omni channel, and the user clicks on the WhatsApp icon instead of the Get Started button, they will be automatically redirected to that platform. This functionality is specific to Omni channels, allowing for a smooth transition between different communication platforms. #### Where to Find It To enable this feature, follow these steps: 1. Navigate to Webchat Widget Settings: Access the settings menu for your webchat widget. 2. Locate the Channels Option: You will find an option labelled Channels in the settings. ![](../.gitbook/assets/image395.png) 3. Activate the Desired Channels: Simply toggle on the channels you want to enable. Once activated, these channels will appear in the webchat widget, ready to redirect users as needed ![](../.gitbook/assets/image137.png) For Example: We have linked a page with GoChat for the testing purpose: ![](../.gitbook/assets/image46.png) Also, we have a testing website where you can see that three channels are enabled, and the user can select any of the channels. ![](../.gitbook/assets/image2.png) What happens when you click any channel: Users who click the Messenger Channel will be redirected to the Facebook page. ![](../.gitbook/assets/image113.png) ### Appearance With these options, you are able to customize your webchat to match your brand colors and preferences; ![](../.gitbook/assets/image189.png) You have the following options to choose from; * Theme * Font * Colors * Start Chat Button #### Theme With themes you are able to customize the appearance of your webchat widget with pre-set values; ![](../.gitbook/assets/image36.png) You have the following themes at your disposal: * Standard * Flat * Facebook * WhatsApp * WeChat The great thing about these themes is that they give a look and feel that users are already familiar with like when using Messenger of WhatsApp. These themes will create a similar chat experience directly on the spot. ![](../.gitbook/assets/image127.png) ![](../.gitbook/assets/image227.png) As you can see the experience makes it so that a user will feel right at home to start a conversation with your business because the experience is so similar. #### Font With fonts you can totally change the appearance of the webchat widget by matching it to your own brand, or to create a really unique experience. ![](../.gitbook/assets/image363.png) Currently you can choose out of 25 fonts to really make the webchat widget your own personal experience. #### Color With this option you can change the color palette of your webchat widget ![](../.gitbook/assets/image155.png) You can customize the following sections: * Widget Color * Bubble Icon & Text color * Start Chat Button Color * Header Background Color * Body Background Color #### Start Chat Button With this option you can change the border radius of the button “start conversation”; ![](../.gitbook/assets/image382.png) You can also choose the option custom to add your own radius instead. It will help you keep things in sync with your own website buttons for example. ![](../.gitbook/assets/image57.png) ### Display Style The display style option will give you multiple ways of using the webchat on your website. Let’s take a look at the different options; ![](../.gitbook/assets/image42.png) We have 5 main sections you can customize: * Style * Design * Install code * Set Custom User ID * Custom CSS #### Style You have 4 different styles to choose from as to how you would like to use the webchat channel on your website. * Floating Modal -› which will give you the live chat icon on the bottom on your page * Full Page -› allowing you to embed the chat widget as a full page instead * Embed Chat Window -› allows you to display the chat window anywhere on your page * Popup Modal -› Allows you to pop up a window with the conversation with your chatbot. * Anything on your page can be the trigger as long as you apply a class to it. The best part of it is that, for the same website, you can actually install different style of web chat on different pages. Check this video for more details: ![](../.gitbook/assets/image45.png) #### Design With the design tab, you will be able to set the conversation widget settings of the style of widget that you selected. Below is an example of embed chat window option; ![](../.gitbook/assets/image300.png) #### Install code The install code will generate your script of the desired style of chat widget you want to put live on your page; ![](../.gitbook/assets/image138.png) The installation code will differ depending on the style of the widget that you selected. Below is an example of the embed chat window; ![](../.gitbook/assets/image243.png) #### Set Custom User ID Chat now allows its users to pass bot user information from their website directly into the omnichannel bot via setting a custom user ID. This feature will enable users to send specific flows to guest users vs users who have given their information as well as be able to fetch chat history and other user specific flows which was not possible before. Access “Set Custom User ID” Feature Inside the omnibot, click on “Webchat Widget Settings” then click on “Display Style” tabs and then “Set Custom User ID” ![](../.gitbook/assets/image150.png) The setup will look like the following: ![](../.gitbook/assets/image12.png) Special Key The special key is a set of strings that GoChat uses to decrypt the hash you send to it from your website. This is important as it allows GoChat to verify that the user is indeed created from your website and is authorized and authentic. Identifier Hash Identifier hash is a set of string composed of the user ID you want to set which is then encrypted to string using SHA256 algorithm with HMAC enabled. This hash is the unique signature that GoChat then verifies to confirm and authorize that the request is being made from your website. This hash needs to be created from the backend of your website. You will have to send this value in its encrypted form to GoChat otherwise the request will be denied. A sample code written in PHP for such an encryption can be found below: $identifier\_hash = hash\_hmac('sha256', $user\_id, 'b02612a8bdf5e736c41ce2002181d124'); Snippet Code The code snippet for this will have to be pasted in the same area where you put the code snippet for the bot itself i.e in the header section of your website. The snippet code contains the payload for the user details, along with mandatory fields of user\_id and identifier hash. \ \ window.addEventListener("chatbot:ready", function () {\ \ window.$chatbot.setUser("{user\\\_id}", {\ \ name: "full name",\ \ email: "user@email.com",\ \ identifier\\\_hash: "{identifier\\\_hash}"\ \ });\ \ });\ Here, you can enter custom details for users such as name and email, as well as you can set the user\_id. Note: The {user\_id} and {indentifier\_hash} variables need to be replaced with the variables where the values you want to set can be mapped. Instructions 1. Copy the snippet code into the header of your website, the same place where you place the snippet code for the bot itself. 2. Replace the {user\_id} variable with the custom user\_id you want to set for the user. The value for this will most likely have to be fetched from your server or website’s backend. 3. Using the same user\_id, create the identifier hash from your server or website’s backend using SHA256 algorithm with HMAC enabled. 4. Copy both to the snippet code, then publish it live to your website. You will then be able to create users with custom user IDs. ![](../.gitbook/assets/image14.png) #### Custom CSS You can add your own custom CSS to customerize the web chat interface. You can find the webchat widget CSS selectors here: These CSS Selectors can be used to further customize the chat widget iframe CSS Selectors Function mr-1 targets the heading text on top beside the logo text-xs targets the reply status text below the heading text custom\_chat\_header targets the background section of the heading message-content targets the text in conversation bubbles on the chatbot side chat-bubble targets the text in conversation bubbles on the user side bot-widget-bubble targets the chat bubble showing up on the bottom corner of the website text-slate-700 targets the divider line and text that shows the date section of a conversation agent targets the reply box from chatbot and live chat agents side of the conversation user targets the reply box from the user’s side of the conversation chat-message--input targets the box section where you type your message bg-white targets the background behind the chatboxes button-wrap .icon-button\[type="submit"] svg targets the submit icon ### Advanced Section There are many customizations you can do with the webchat button. Some are a bit more advanced hence why we are going to be putting them down in this section instead. #### Installing multiple widget types and different starting flows on your website With the webchat widget, you are able to install as many types as you wish on any of your pages inside your domain. Once you generated your desired widget type you can add a ref parameter to it. This allows you to start any flow of your preference with ease. **Create your ref URL** The way to do this is you can create any kind of ref URL inside the tool section; ![](../.gitbook/assets/image151.png) Once you have created your ref URL you will have also connected it to your flow of preference. You can now use this ref URL by copying the ref parameter; ![](../.gitbook/assets/image314.png) **Adding the ref parameter to your webchat installation code.** Now that you have created your ref URL and copied the ref parameter it is time to add it to your webchat installation script. The way to do that is very easy; ![](../.gitbook/assets/image19.png) If you have pasted in your webchat installation script the only thing you will need to do is by adding a question mark after .js, and add ref=, then add your copied ref parameter from the ref URL you created. This will override the existing default starting flow and with this, you will be able to start your preferred flow instead. It opens up the way to use the same widget on different pages but with different starting flows. Use cases for this could be; * A landing page requires a specified sales flow * Customer support starts with a support flow But it gets even better! Since you are using the ref URL parameter you are also able to add payloads to the widget as well. Payloads help you add specific pieces of data directly to the user’s custom fields without the user even needing to give them to you. Example could be you want to know from which section of the website the user is coming from. Let’s say he or she came from a landing page, you can then add this inside the widget as a payload to be saved to the user profile. **Adding payloads to the webchat widget** In order to add a payload we need to return to the ref URL we used inside the webchat widget. Once there you can add up to 10 payloads to be used directly to the user's profile; ![](../.gitbook/assets/image331.png) Let’s take the example of adding the source the user came from, so the page on your website. On the first payload, line let’s add the custom user field “traffic\_source” ![](../.gitbook/assets/image306.png) Once done do not forget to press the Save button in the top right corner. When returning to your webchat installation script you can now add your preferred data to the ref parameter. Let’s say you have added this widget to your landing page. The traffic source can then be the name of your landing page or whatever works for you. It could then look something like this; ![](../.gitbook/assets/image145.png) To add a payload you go with 2 Hyphens and then your value so in this case, it is “--ebook-7figure-income” Once a visitor interacts with this webchat widget on that page you will see that this value will then be added to their user profile; ![](../.gitbook/assets/image265.png) As mentioned you will be able to save up to 10 different kinds of payloads this way. #### Pre-fill user data for the web chat user If you already have the user’s information like name or email, etc, you can pass that information directly to the web chat user. Also you can pass extra parameters directly to the web chat user’s user custom field. **Passing user information** You can use add this script to pass the user information to the web chat user. window.addEventListener("chatbot:ready", function () { window.$chatbot.setUser("XXXX", { email: "YYYYYY", name: "ZZZZ", avatar\_url: "https://res.cloudinary.com/gmdigital/image/upload/v1618453871/profile/3636079236501557.jpg" }); }); You will need to make sure the userID XXXX is unique for each user. **Passing extra parameters to web chat user** If you want to pass the extra parameters to the web chat user, you can using the code below window.addEventListener("chatbot:ready", function () { window.$chatbot.setCustomAttributes({ user\_fields: { provider: "XXXX", issue\_title: "YYYY" } }); }); Please make sure the name of the user custom field is the same name you have in your GoChat Chatbot. In the example above, the name “provider” & “issue\_title”, we have the exact same name in our chatbot. ![](../.gitbook/assets/image16.png) *** # Set up if you want to migrate from another platform ## Set up ### Prerequisites for set up If you are migrating from another platform, the migration process is very simple (you are minutes away to star using GoChat) * Admin access to your Meta Business Manager account * WhatsApp Business Account configured with an active phone number and an active billing card ### Instructions step by step **Step 1: Remove the current Partner if you see one** Login to Facebook configuration where the WABA is and remove the Partner that is associated
#### Step 3: Delete Whatsapp phone in the Whatsapp manager Go to the whatsapp manager
Delete the phone number from the Whatsapp Business Account created by the third party platform
#### Step 3: In GoChat login in Facebook in the Whatsapp API channel Follow the steps from Step 1 described in [whatsapp-cloud.md](whatsapp-cloud.md "mention") # Set up a new phone from zero ## Set up ### Prerequisites for set up Before you start using the WhatsApp Business API, you will need the following: * A Facebook account. * Admin access to your Meta Business Manager account. If you don’t have a Meta Business Manager account, you can create one during the embedded sign-up process. Additionally, the Meta Business account must not be restricted (you can check here if there are any restrictions on your Meta Business account). * A credit card (Mastercard/Visa – no American Express!). * A phone number not associated with any WhatsApp or WhatsApp Business account. (if you already have WhatsApp Business see **Step 2** and choose the option _"Connect your existing WhatsApp Business App"_) * This phone number must be able to receive SMS or calls. * If you already have a WhatsApp account, there are two options: * The phone number is already associated with WhatsApp API because you already use your WhatsApp api on another platform and you want to migrate to GoChat * follow this [whatsapp-cloud-1.md](whatsapp-cloud-1.md "mention") * The phone number is already associated to a normal end-user WhatsApp: * completely delete the WhatsApp account: [https://faq.whatsapp.com/2138577903196467/?cms\_platform=android](https://faq.whatsapp.com/2138577903196467/?cms_platform=android) * The phone number is already in WhatsApp Business * follow the instructions (in **Step 2** you will be able to choose the option _"Connect your existing WhatsApp Business App"_) ### Instructions step by step #### Step 1: Login in Facebook To start the process, log in to the GoChat platform, navigate to the "dashboard," click on "WhatsApp Cloud" in the left sidebar, and then click the "Connect WhatsApp Cloud" button. ![](../../.gitbook/assets/image351.png) In the pop-up window, log in to your Facebook account or select the account you are already logged into in your browser. ![](../../.gitbook/assets/image199.png) #### Step 2: Select or Create a Meta Business Manager Account * You can select an existing Meta Business Manager account where you have admin permissions or create a new one. * To create a new account, prepare the following details: * Legal business name * Business phone number * Business website * Business email address * Country * Business address * City * State/Province/Region Note: Newly created business managers will initially be “unverified.” It’s highly recommended to verify your business manager as soon as possible. Follow these instructions to complete the verification. Select the options that best suit your case
#### Step 3: Create a WhatsApp Business Profile (if you don't have one already) ![](../../.gitbook/assets/image242.png) 1. Enter your WhatsApp Business Account (WABA) name. 2. This information is not visible to your audience. 3. Enter your display name for the WhatsApp Business profile. 4. Display Name Requirements: 5. Meta must review and approve the name. 6. It should match external branding sources (e.g., website or marketing materials). 7. It must align with WhatsApp’s business and commerce policies and their Display Name Guidelines. 8. Choose a business category from the list. 9. Add a business description (editable anytime, even after verification). #### Step 4: Verify Your WhatsApp Business Number * Enter the phone number you wish to use as your WhatsApp Business number. This number cannot already be connected to any WhatsApp service. * In case you are syncing a number that is already used in another platform (like Botmaker), you must delete the current partner attached to the WABA where the number is.
* Choose a verification method: * SMS * Voice Call ![](../../.gitbook/assets/image327.png) Once verified, you'll see a confirmation screen. Click Finish to return to the GoChat platform. ![](../../.gitbook/assets/image170.png) ![](../../.gitbook/assets/image281.png) #### Step 5: Finalize Registration in GoChat 1. On the GoChat dashboard, click Synchronize Numbers to register the phone number. ![](../../.gitbook/assets/image231.png) 2. Registered numbers will appear in the platform. By default, the status is Paused. Change the status to Active. ![](../../.gitbook/assets/image251.png) 3. If the status in the WhatsApp Manager under Phone Numbers shows as Pending, go back to GoChat, click Settings, and register the number there. After completing registration, the status will change to Connected. ![](../../.gitbook/assets/image184.png) ![](../../.gitbook/assets/image230.png) TIP: Click on "Health Check" to very that is everything okey! [#health-check](whatsapp-cloud.md#health-check "mention") ![](../../.gitbook/assets/image225.png) Your bot is now ready for testing! #### Step 6: Test Your Connection 1. After connecting the WhatsApp number, create a simple flow by clicking Create Flow. ![](../../.gitbook/assets/image417.png) 2. Publish the flow and send a message from your personal WhatsApp number to the WhatsApp Cloud API number. 3. If the bot responds, the connection is successful. Next, go to Content > Message Templates and click Synchronize. If no errors occur, the message templates are working properly. * You can also create a new template directly in GoChat. ![](../../.gitbook/assets/image398.png) #### Step 7: Set Up Billing Before sending message templates or activating your bot, connect a valid credit card in WhatsApp Manager’s Billing Section. * Note: If your business manager account is unverified, it is recommended to complete the verification to avoid risks of restriction.
#### Step 8: Advanced Configuration ![](../../.gitbook/assets/image317.png) GoChat provides additional settings for managing the WhatsApp API: * Health Check * Business Verification Status * Payment Method Verification * Phone Numbers * Message Templates * Catalog * Two-Factor Authentication * Unregister Number Once the setup and testing are complete, your WhatsApp Cloud API will be fully functional! ## Settings GoChat offer a few settings that can help you manage your WhatsApp API easily, if you click the 3 dots in the WhatsApp Cloud, and you will find the settings below: ![](../../.gitbook/assets/image130.png) * Health Check * Business Verification Status * Check payment method * Phone numbers * Message Templates * Catalog * Two Factor Authentication * De-Register number ### Business verification process of BM (Optional) If you have not completed the Business Verification process, you will be limited to associating with only two phone numbers and can have a maximum of 250 conversations per day. If this limit is exceeded, the account will be automatically canceled after 15 days. However, during this period, you can still test the service. Once your business has been verified, you can associate WABA with up to 20 phone numbers and the conversation limit will increase to 1000 per day. ![](../../.gitbook/assets/image291.png) ### Check payment method The first thing when you you do is to connect a valid credit card to your WABA numbers. If you haven’t connect to a valid card, and start sending WhatsApp template message, you will see the error below: \[ { "error\_code": 141006, "error\_description": "There is an error with the payment method.", "possible\_solution": "There was an error with your payment method. Please add a new payment method to the account." } ] Just just need to connect a valid credit card with your waba numbers. You will need go to meta business manager and find WhatsApp account. ![](../../.gitbook/assets/image350.png) And click “Payment Settings” You can set your payment at [https://business.facebook.com/billing\_hub/payment\_methods](https://www.google.com/url?q=https://business.facebook.com/billing_hub/payment_methods\&sa=D\&source=editors\&ust=1740386900567848\&usg=AOvVaw2YTKB__Wdn9SfJF7cey7J6) and see WhatsApp Payment Method. ![](../../.gitbook/assets/image84.png) ### Health Check If you click the health check, you will see the screenshot below: ![](../../.gitbook/assets/image194.png) This will give you an overview of your phone number status, WABA status, Meta Business account status. ### Phone numbers A WhatsApp Business Account (WABA) needs a valid phone number that is dedicated to using the WhatsApp Business Platform. This guide introduces how to choose phone numbers, add them to your account, and related sending limitations. Once you click this option, you will be redirect to “phone numbers” in your WhatsApp manager, and the status of your phone number will falls into below categories: Status is classified as follows: * Connected: Sender functions normally. * Flagged: This status occurs when the sender quality rating reaches a low (red) state. During this state, you cannot upgrade the messaging limit tier. If the quality rating improves to either a medium or high state within 7 days from the day the sender status was moved to Flagged, the status changes to Connected. If the quality rating does not improve, the sender status returns to Connected, but the messaging limit decreases to the next lower tier. The lowest tier for verified businesses is Tier 1. * Restricted: This status occurs when the sender reaches the messaging limit. During the Restricted phase, you cannot send any outbound (notification) messages until the 24-hour window is reset. You can only respond to messages that end users initiate. * Pending: You can click “registrate numbers” to connect your phone numbers. ### Add a phone number to a WABA Currently, each Verified Meta Business Manager can have up to 20 phone numbers, regardless of the number of WABAs. If you would like to add a new number, please add it through the embedded signup process. #### Change display name Each phone number has its display name, and this name should be related to your company name or brand name. The display name will be reviewed by Meta. You can go to [Meta](https://www.google.com/url?q=https://business.facebook.com/wa/manage/phone-numbers\&sa=D\&source=editors\&ust=1740386900570167\&usg=AOvVaw2ItIus32PcOJJtXFA3LCVX) to change the name. #### Delete phone number from a WABA For complete removal, please follow the steps below: 1. In the Business Manager, go to your Business Settings page. 2. Go to Settings > Business Settings > WhatsApp Accounts > WhatsApp Manager > Phone Numbers. 3. From the WhatsApp Manager, find the phone number that you wish to delete. Click on the trash icon under Delete in the upper right. Some points: * Only a business admin for the WhatsApp Business Account can delete a phone number. * A number can not be deleted if the business has sent paid messages within the last 30 days using that number. * Once a number has been deleted from the WhatsApp Business Platform, it can be used again in the WhatsApp app, or may be registered again in the WhatsApp Business Platform. Note that different rules apply to deleted phones that had been banned by the WhatsApp Business Platform. # Customer feedback (facebook) A fantastic way inside the chatbot to collect feedback is to use GoChat’s native module for this. It will allow you to gather not only feedback but also allows you to know when a user is not satisfied with the product or service you provide, which you can then proactively contact to resolve any issues there might be. Note: This is only available inside the Messenger channel. ### Creating and managing Customer Feedback Topics To create a new customer feedback topic you can go to Contents, then select the Customer Feedback Topics tab. From here you will see an overview of all your created topics and it allows you to manage them or create a new one. ![title](../../.gitbook/assets/image310.png) If you like to create a new topic you only have to press the top right button named + New Feedback Topic. Once done a pop-up window will appear where you can set everything up. ![title](../../.gitbook/assets/image164.png) As you can see you can fully customize this to your own liking so let’s walk through the options. With option 1 you can give the topic a name as it will appear inside the topic overview. Below that you will be able to adjust your Question title. This will show up as the question. By default, there is a question inside but you can adjust it if you like. You can also set the type. You have the following choices; * Customer satisfaction score * Net promoter score * Customer effort score * Free input form The next step is to select your score label. You will have the following options; ![title](../../.gitbook/assets/image69.png) Next up are the score options that you will be able to choose from; * One to five (numbers) * Five stars * Five emojis ![title](../../.gitbook/assets/image207.png) You will also be able to enable or disable free form input. Once enabled the user will be able to give additional feedback outside the rating. ![title](../../.gitbook/assets/image422.png) Below that you will be able to point to your privacy policy which is mandatory. And lastly, you will be able to set the customer feedback to expire anywhere between 1-7 days. Once done you can press save. You will be taken back to the main overview and you will be able to manage the customer feedback topic you just created from there. ![title](../../.gitbook/assets/image357.png) On the right you will have two icons. The first one will show you advanced analytics on the topic you selected, while the pencil icon allows you to edit it to your liking. Below you will find an example of the analytics you can expect; ![title](../../.gitbook/assets/image71.png) ### How to send a customer feedback topic This is easily done inside of the flow builder. Just go to any flow you want to set up for this. From here create a send message block, then select Customer Feedback. You will then be able to add a title and subtitle and press the button named rate experience. ![title](../../.gitbook/assets/image339.png) You will then be able to give the button a title, select the topic you want to use and save the responses to a user field. Once done press save you will be able to send this customer feedback to any user that enters the flow and this block. ![title](../../.gitbook/assets/image436.png) ## Tools ### Error Logs Error logs can help you troubleshoot bugs that can happen inside your chatbot. It can save you a lot of time trying to figure this out yourself otherwise. To access the error log you can go to Tools from the left-hand menu, then select the first tab called Error logs. From here you will have a complete overview of all errors that have happened in the chatbot. ![title](../../.gitbook/assets/image405.png) From here you can see the date of the error, the kind of error, which user it affected, which sub flow it happened in along with the node that has the error, and more information. If you press on the node of the error message it will take you directly to the point where the issue was registered at. This will speed up troubleshooting immensely and save you hours you otherwise would waste in trying to find the bug. ### Testers To help you with testing your flows before they go live you can invite testers inside your chatbot. This will help you troubleshoot any potential problems that are happening in your flows. So to clarify a tester can view a flow that is not yet published. Assume you have a published onboarding flow that is accessible to the public, but you made changes in the backend which are not yet published. You will be able to let testers preview those flows. To invite a tester they will need to be a subscriber to your chatbot. #### Invite and manage testers To invite a tester to your chatbot just go to Tools from your left-hand menu, then select the Testers tab. ![title](../../.gitbook/assets/image50.png) To create a new tester just press the button in the top right corner named + New Tester. From here you will be able to type in the name of the person you would like to be a tester inside your chatbot. Again do note that this person you want to appoint as a tester needs to be an active subscriber of that chatbot. ![title](../../.gitbook/assets/image307.png) Once done you will return to the main overview for the testers where you can also manage them from. ![title](../../.gitbook/assets/image197.png) You will see the users who are invited by you as a tester and if you want to delete them you can press the trashbin icon to the right of each user to do so. #### How to send testers flows To send testers the flows in the draft version you can do so in a few ways. You can share a link to the particular flow, or let them type a keyword that will trigger the flow. Another way to let testers view content regular users cannot is by using the condition inside the flow builder for it. Just go to any flow and insert a condition block. From here search for the condition named is tester. ![title](../../.gitbook/assets/image320.png) This way you will be able to send a tester to one part of the flow you want to be tested and a regular user can just follow the flow already fully published. ### Admins Besides the regular members, you can invite to your workspace you can also invite admins to your chatbot only. With a condition you can set up admin menus for them they can access like getting a report or wanting to get some insights into the chatbot. #### Invite and manage admins To invite an admin go to Tools from the left-hand menu and select the Admins tab on top. From here you will get to the main overview. ![title](../../.gitbook/assets/image122.png) To add a new admin the user you want to invite needs to be a subscriber to your chatbot. If they are then press the button on the top-right corner named + New Admin. From here a pop-up window will appear where you can search for and add a new admin. ![title](../../.gitbook/assets/image3.png) Just type in the name of the person you want to have as an admin and press the plus sign to have them added as an admin. Once you press the plus sign you will return to the main menu where you can manage all admins. ![title](../../.gitbook/assets/image396.png) At the right of each admin, you have the option to delete them if you like. #### How to set up an admin flow Now that you have appointed an admin you can set up admin specific flows for them. This is ideal if you want to give a business owner some insights as to what is going on inside the chatbot but don’t want to give access to the backend of that chatbot. Just go to any flow you like and insert a condition block. From here search for the condition Is Admin. If the condition is set to yes you can send the admin to the admin mode where you can set up access to whatever you like. An example could be; ![title](../../.gitbook/assets/image313.png) It is a great way for business owners to get access to certain features on the front end while not having to worry about them having access in the backend. ### Widgets ### ![widget](../../.gitbook/assets/image159.png) For Facebook bots, you can set some widgets to quickly start talking to the bot. To setup: 1. go "Tools" from the left sidebar 2. click "Widgets" 3. "+ New Widget" #### Messenger Ref URL Widget #### ![widget](../../.gitbook/assets/image397.png) 1. put a widget name 2. choose a sub flow the link goes to (leave 3 and 4 blank if no reference is needed) 3. put a parameter name 4. assign a custom user field What does the Ref parameter do? For instance, you make a messenger ref URL to your main flow, so that by visiting this URL, your users can start talking to your bot. However, you would like to gather more information from the link, like where did your users get the link? In this case, you can put "source" in area 3 and a variable to store the source at area 4 in the above picture. Later, add a source name in your link according to where do you put it. This is how you get extra information from the link. After filling in all the information, click "Save" and click the pencil to edit this widget, you will see a unique URL generated for this widget: ![widget](../../.gitbook/assets/image85.png) So here, by visiting any of the following links, your users can start talking to your bot: example link value in variable "source" https://m.me/102942588321862?ref=source https://m.me/102942588321862?ref=source--advertisement advertisement https://m.me/102942588321862?ref=source--shared\_by\_users shared\_by\_users https://m.me/102942588321862?ref=source--promoted\_by\_sales promoted\_by\_sales Yes, you might notice that by adding "--xxx" after the link, the value "xxx" will be transferred to the bot. #### QR Code Widget URL links are convenient to click via electronic way while QR codes are more suitable for on-site use. By scanning a QR code, your users can start talking to your bot. ![widget](../../.gitbook/assets/image182.png) To setup: 1. give a widget name 2. select a sub flow 3. upload your logo image 4. adjust image size if needed 5. adjust color if needed 6. adjust dot scale if needed 7. click "Generate" to get an image on the right. Repeat step 4, 5 and 6 to get a final image 8. download your QR code, print it and put it in your store, restaurant, office, etc #### Customer Chat Widget This widget is to be embedded on your website, so that your website can have a bot serving users as gochat.hyppo.io do: ![widget](../../.gitbook/assets/image364.png) To setup: 1. give a widget name 2. select a sub flow 3. adjust theme color if needed 4. adjust greeting message which will be shown above the "Continue as xx" button (see in the previous picture). 5. select a display type 6. adjust the delay if the second or the third display type is selected 7. for payload, see explanation in [Messenger Ref URL](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900695286\&usg=AOvVaw1aQpaywgi3IvU4QvlSw3Wa) above. Click "Save" after finishing all the settings, again, click the pencil to edit this widget and you will see this button: ![widget](../../.gitbook/assets/image81.png) Click it. ![widget](../../.gitbook/assets/image388.png) Add the websites that you want to put this bot at. Then install the snippet by copying and pasting the code. Perfect! 😎 You got a bot on your website now. ### Multiple Languages With GoChat you have the ability to provide a multiple language chatbot experience. It is very easy to set up as well. #### How to add a new language To add a new language just go to Tools from the left-hand menu, then select the Multiple languages tab. ![title](../../.gitbook/assets/image316.png) From here just press the button in the top-right corner named + New language. Once pressed a popup window will appear where you can select a new language. ### Inbound Webhooks Inbound webhook is a powerful tool to receive data from anywhere to the chatbot through a POST request. With inbound webhooks, your bot can even start a conversation with a bot user who never talked to it before. For example, when a client fills in their contact information on your website, you send the data to an inbound webhook of a chatbot, say an SMS bot. The SMS bot can then send a confirmation message to the client's phone number. If that webhook is built in a Voice bot, the bot can even call the client right away! Limitation Each bot has up to 5 inbound webhooks. #### Create Inbound Webhook It's available in almost all channels, in your flow builder, go Tools - Inbound Webhooks: ![inbound webhook](../../.gitbook/assets/image188.png) Click on New Inbound Webhook, give a name and click Save: ![inbound webhook](../../.gitbook/assets/image408.png) You will see the editing interface like this: ![inbound webhook](../../.gitbook/assets/image100.png) #### Webhook Address This area shows you where to send the data and the method, which is POST. Each inbound webhook has a unique URL in the whole GoChat system. #### Example of Received JSON This area shows an example JSON for reference. It describes the structure of the data in the JSON we received later. We need it to find the values for both \*\*user identification \*\* and data to save. There are 2 ways to get an example JSON: 1. manually type/paste it here 2. listen to a real-time data from a live test #### Values to Identify a User Whenever the webhook receives data, it first checks the paths you specify here to see whether it can find an existing user in the chatbot. If the user is not in the system, the chatbot will create a new profile. That's how the chatbot initiates a conversation without talking to the user before. However, some channels don't allow the chatbot to start the conversation first due to privacy and spam issues. For example, your SMS bot can send messages as long as you have the recipient's phone number, while your Facebook Messenger chatbot cannot send messages to a Facebook user who never talked to your bot before. **Process for User Identification** This is the process of how the system identifies a user: 1. check user\_ns * if there is a valid user\_ns, user found. * if not, next step 2. check phone / email * if we can find a user by the phone or email, user found. * if not, next step 3. verify phone * no user matched in the system, is the phone a valid number? * if yes, user profile created. * if not, webhook won't be processed #### Mapping Area The mapping list shows which value should be stored in which custom field. When you get a sample JSON in the above area, click on Preview Payload to get a mapping tool. #### Webhook Logs #### ![inbound webhook](../../.gitbook/assets/image241.png) Every single request is saved in Logs. Click on a record to see the received JSON data. #### Demo: Booking Confirmation A perfect tool to test your inbound webhook is already built-in everywhere! Simple get a chatbot (whatever channel), test it in an Action Step. Open another GoChat webpage side by side, keep the inbound webhook editing on Page 1 and select an external request on Page 2: ![inbound webhook](../../.gitbook/assets/image367.png) Follow steps 1 to 8 in the following screenshot: ![inbound webhook](../../.gitbook/assets/image421.png) Provide the data that need to be sent to the chatbot and click Test, you must get a "webhook inactive" error since we haven't activated it yet. It's fine, click on Done on Page 1, and you will see the data saved: ![inbound webhook](../../.gitbook/assets/image149.png) Scroll down a bit, follow steps 1, 2, 3 to tell the system, where is the phone and email values in the JSON: ![inbound webhook](../../.gitbook/assets/image301.png) Finally, map the rest data to the chatbot: ![inbound webhook](../../.gitbook/assets/image288.png) Save your inbound webhook editing: ![inbound webhook](../../.gitbook/assets/image4.png) Enter the subflow, let's send a message to the bot user: ![inbound webhook](../../.gitbook/assets/image62.png) Publish the flow and let's do a live test in the external request again: ![inbound webhook](../../.gitbook/assets/image55.png) We can see that this time it run without error because we activated the webhook and used a real phone number. Go to Logs and we can see a new user profile is created successfully. On the user side: ![inbound webhook](../../.gitbook/assets/image94.png) ### Broadcasts Use this feature to broadcast messages to your users! Just a few settings needed. ![broadcast](../../.gitbook/assets/image68.png) Go "Broadcasts" from the left sidebar, then click "+ New Broadcast". ![broadcast](../../.gitbook/assets/image416.png) To setup: 1. give a broadcast title (for yourself, not users) 2. select a sub flow 3. add conditions to filter who will receive this broadcast message ![broadcast](../../.gitbook/assets/image139.png) TIP to send to all users, try this condition "If User Id has any value". ![broadcast](../../.gitbook/assets/image322.png) Filling in the rest settings like message type and time to send then click "Save". ([Which message type should I choose?](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900701613\&usg=AOvVaw1AzHdzn6YTEN9ByTloot7v)) If you choose "Now" for the schedule, the message will be sent once you click "Save". If not, you can cancel the broadcast anytime before it sent. ![broadcast](../../.gitbook/assets/image183.png) Here is also where you check broadcast history and data. *** # Admins Besides the regular members, you can also invite admins to your chatbot only. With a condition you can set up admin menus for them they can access like getting a report or wanting to get some insights into the chatbot. #### Invite and manage admins To invite an admin go to Tools from the left-hand menu and select the Admins tab on top. From here you will get to the main overview. ![title](../.gitbook/assets/image122.png) To add a new admin the user you want to invite needs to be a subscriber to your chatbot. If they are then press the button on the top-right corner named + New Admin. From here a pop-up window will appear where you can search for and add a new admin. ![title](../.gitbook/assets/image3.png) Just type in the name of the person you want to have as an admin and press the plus sign to have them added as an admin. Once you press the plus sign you will return to the main menu where you can manage all admins. ![title](../.gitbook/assets/image396.png) At the right of each admin, you have the option to delete them if you like. #### How to set up an admin flow Now that you have appointed an admin you can set up admin specific flows for them. This is ideal if you want to give a business owner some insights as to what is going on inside the chatbot but don’t want to give access to the backend of that chatbot. Just go to any flow you like and insert a condition block. From here search for the condition Is Admin. If the condition is set to yes you can send the admin to the admin mode where you can set up access to whatever you like. An example could be; ![title](../.gitbook/assets/image313.png) It is a great way for business owners to get access to certain features on the front end while not having to worry about them having access in the backend. # Error Logs Error logs can help you troubleshoot bugs that can happen inside your chatbot. It can save you a lot of time trying to figure this out yourself otherwise. To access the error log you can go to Tools from the left-hand menu, then select the first tab called Error logs. From here you will have a complete overview of all errors that have happened in the chatbot. ![title](../.gitbook/assets/image405.png) From here you can see the date of the error, the kind of error, which user it affected, which sub flow it happened in along with the node that has the error, and more information. If you press on the node of the error message it will take you directly to the point where the issue was registered at. This will speed up troubleshooting immensely and save you hours you otherwise would waste in trying to find the bug. ### Admins Besides the regular members, you can invite to your workspace you can also invite admins to your chatbot only. With a condition you can set up admin menus for them they can access like getting a report or wanting to get some insights into the chatbot. #### Invite and manage admins To invite an admin go to Tools from the left-hand menu and select the Admins tab on top. From here you will get to the main overview. ![title](../.gitbook/assets/image122.png) To add a new admin the user you want to invite needs to be a subscriber to your chatbot. If they are then press the button on the top-right corner named + New Admin. From here a pop-up window will appear where you can search for and add a new admin. ![title](../.gitbook/assets/image3.png) Just type in the name of the person you want to have as an admin and press the plus sign to have them added as an admin. Once you press the plus sign you will return to the main menu where you can manage all admins. ![title](../.gitbook/assets/image396.png) At the right of each admin, you have the option to delete them if you like. #### How to set up an admin flow Now that you have appointed an admin you can set up admin specific flows for them. This is ideal if you want to give a business owner some insights as to what is going on inside the chatbot but don’t want to give access to the backend of that chatbot. Just go to any flow you like and insert a condition block. From here search for the condition Is Admin. If the condition is set to yes you can send the admin to the admin mode where you can set up access to whatever you like. An example could be; ![title](../.gitbook/assets/image313.png) It is a great way for business owners to get access to certain features on the front end while not having to worry about them having access in the backend. ### Widgets ### ![widget](../.gitbook/assets/image159.png) For Facebook bots, you can set some widgets to quickly start talking to the bot. To setup: 1. go "Tools" from the left sidebar 2. click "Widgets" 3. "+ New Widget" #### Messenger Ref URL Widget #### ![widget](../.gitbook/assets/image397.png) 1. put a widget name 2. choose a sub flow the link goes to (leave 3 and 4 blank if no reference is needed) 3. put a parameter name 4. assign a custom user field What does the Ref parameter do? For instance, you make a messenger ref URL to your main flow, so that by visiting this URL, your users can start talking to your bot. However, you would like to gather more information from the link, like where did your users get the link? In this case, you can put "source" in area 3 and a variable to store the source at area 4 in the above picture. Later, add a source name in your link according to where do you put it. This is how you get extra information from the link. After filling in all the information, click "Save" and click the pencil to edit this widget, you will see a unique URL generated for this widget: ![widget](../.gitbook/assets/image85.png) So here, by visiting any of the following links, your users can start talking to your bot: example link value in variable "source" https://m.me/102942588321862?ref=source https://m.me/102942588321862?ref=source--advertisement advertisement https://m.me/102942588321862?ref=source--shared\_by\_users shared\_by\_users https://m.me/102942588321862?ref=source--promoted\_by\_sales promoted\_by\_sales Yes, you might notice that by adding "--xxx" after the link, the value "xxx" will be transferred to the bot. #### QR Code Widget URL links are convenient to click via electronic way while QR codes are more suitable for on-site use. By scanning a QR code, your users can start talking to your bot. ![widget](../.gitbook/assets/image182.png) To setup: 1. give a widget name 2. select a sub flow 3. upload your logo image 4. adjust image size if needed 5. adjust color if needed 6. adjust dot scale if needed 7. click "Generate" to get an image on the right. Repeat step 4, 5 and 6 to get a final image 8. download your QR code, print it and put it in your store, restaurant, office, etc #### Customer Chat Widget This widget is to be embedded on your website, so that your website can have a bot serving users as gochat.hyppo.io do: ![widget](../.gitbook/assets/image364.png) To setup: 1. give a widget name 2. select a sub flow 3. adjust theme color if needed 4. adjust greeting message which will be shown above the "Continue as xx" button (see in the previous picture). 5. select a display type 6. adjust the delay if the second or the third display type is selected 7. for payload, see explanation in [Messenger Ref URL](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900695286\&usg=AOvVaw1aQpaywgi3IvU4QvlSw3Wa) above. Click "Save" after finishing all the settings, again, click the pencil to edit this widget and you will see this button: ![widget](../.gitbook/assets/image81.png) Click it. ![widget](../.gitbook/assets/image388.png) Add the websites that you want to put this bot at. Then install the snippet by copying and pasting the code. Perfect! 😎 You got a bot on your website now. ### Multiple Languages With GoChat you have the ability to provide a multiple language chatbot experience. It is very easy to set up as well. #### How to add a new language To add a new language just go to Tools from the left-hand menu, then select the Multiple languages tab. ![title](../.gitbook/assets/image316.png) From here just press the button in the top-right corner named + New language. Once pressed a popup window will appear where you can select a new language. ### Inbound Webhooks Inbound webhook is a powerful tool to receive data from anywhere to the chatbot through a POST request. With inbound webhooks, your bot can even start a conversation with a bot user who never talked to it before. For example, when a client fills in their contact information on your website, you send the data to an inbound webhook of a chatbot, say an SMS bot. The SMS bot can then send a confirmation message to the client's phone number. If that webhook is built in a Voice bot, the bot can even call the client right away! Limitation Each bot has up to 5 inbound webhooks. #### Create Inbound Webhook It's available in almost all channels, in your flow builder, go Tools - Inbound Webhooks: ![inbound webhook](../.gitbook/assets/image188.png) Click on New Inbound Webhook, give a name and click Save: ![inbound webhook](../.gitbook/assets/image408.png) You will see the editing interface like this: ![inbound webhook](../.gitbook/assets/image100.png) #### Webhook Address This area shows you where to send the data and the method, which is POST. Each inbound webhook has a unique URL in the whole GoChat system. #### Example of Received JSON This area shows an example JSON for reference. It describes the structure of the data in the JSON we received later. We need it to find the values for both \*\*user identification \*\* and data to save. There are 2 ways to get an example JSON: 1. manually type/paste it here 2. listen to a real-time data from a live test #### Values to Identify a User Whenever the webhook receives data, it first checks the paths you specify here to see whether it can find an existing user in the chatbot. If the user is not in the system, the chatbot will create a new profile. That's how the chatbot initiates a conversation without talking to the user before. However, some channels don't allow the chatbot to start the conversation first due to privacy and spam issues. For example, your SMS bot can send messages as long as you have the recipient's phone number, while your Facebook Messenger chatbot cannot send messages to a Facebook user who never talked to your bot before. **Process for User Identification** This is the process of how the system identifies a user: 1. check user\_ns * if there is a valid user\_ns, user found. * if not, next step 2. check phone / email * if we can find a user by the phone or email, user found. * if not, next step 3. verify phone * no user matched in the system, is the phone a valid number? * if yes, user profile created. * if not, webhook won't be processed #### Mapping Area The mapping list shows which value should be stored in which custom field. When you get a sample JSON in the above area, click on Preview Payload to get a mapping tool. #### Webhook Logs #### ![inbound webhook](../.gitbook/assets/image241.png) Every single request is saved in Logs. Click on a record to see the received JSON data. #### Demo: Booking Confirmation A perfect tool to test your inbound webhook is already built-in everywhere! Simple get a chatbot (whatever channel), test it in an Action Step. Open another GoChat webpage side by side, keep the inbound webhook editing on Page 1 and select an external request on Page 2: ![inbound webhook](../.gitbook/assets/image367.png) Follow steps 1 to 8 in the following screenshot: ![inbound webhook](../.gitbook/assets/image421.png) Provide the data that need to be sent to the chatbot and click Test, you must get a "webhook inactive" error since we haven't activated it yet. It's fine, click on Done on Page 1, and you will see the data saved: ![inbound webhook](../.gitbook/assets/image149.png) Scroll down a bit, follow steps 1, 2, 3 to tell the system, where is the phone and email values in the JSON: ![inbound webhook](../.gitbook/assets/image301.png) Finally, map the rest data to the chatbot: ![inbound webhook](../.gitbook/assets/image288.png) Save your inbound webhook editing: ![inbound webhook](../.gitbook/assets/image4.png) Enter the subflow, let's send a message to the bot user: ![inbound webhook](../.gitbook/assets/image62.png) Publish the flow and let's do a live test in the external request again: ![inbound webhook](../.gitbook/assets/image55.png) We can see that this time it run without error because we activated the webhook and used a real phone number. Go to Logs and we can see a new user profile is created successfully. On the user side: ![inbound webhook](../.gitbook/assets/image94.png) ### Broadcasts Use this feature to broadcast messages to your users! Just a few settings needed. ![broadcast](../.gitbook/assets/image68.png) Go "Broadcasts" from the left sidebar, then click "+ New Broadcast". ![broadcast](../.gitbook/assets/image416.png) To setup: 1. give a broadcast title (for yourself, not users) 2. select a sub flow 3. add conditions to filter who will receive this broadcast message ![broadcast](../.gitbook/assets/image139.png) TIP to send to all users, try this condition "If User Id has any value". ![broadcast](../.gitbook/assets/image322.png) Filling in the rest settings like message type and time to send then click "Save". ([Which message type should I choose?](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900701613\&usg=AOvVaw1AzHdzn6YTEN9ByTloot7v)) If you choose "Now" for the schedule, the message will be sent once you click "Save". If not, you can cancel the broadcast anytime before it sent. ![broadcast](../.gitbook/assets/image183.png) Here is also where you check broadcast history and data. *** # Inbound Webhooks Inbound webhook is a powerful tool to receive data from anywhere to the chatbot through a POST request. With inbound webhooks, your bot can even start a conversation with a bot user who never talked to it before. For example, when a client fills in their contact information on your website, you send the data to an inbound webhook of a chatbot, say an SMS bot. The SMS bot can then send a confirmation message to the client's phone number. If that webhook is built in a Voice bot, the bot can even call the client right away! Limitation Each bot has up to 5 inbound webhooks. #### Create Inbound Webhook It's available in almost all channels, in your flow builder, go Tools - Inbound Webhooks: ![inbound webhook](../.gitbook/assets/image188.png) Click on New Inbound Webhook, give a name and click Save: ![inbound webhook](../.gitbook/assets/image408.png) You will see the editing interface like this: ![inbound webhook](../.gitbook/assets/image100.png) #### Webhook Address This area shows you where to send the data and the method, which is POST. Each inbound webhook has a unique URL in the whole GoChat system. #### Example of Received JSON This area shows an example JSON for reference. It describes the structure of the data in the JSON we received later. We need it to find the values for both \*\*user identification \*\* and data to save. There are 2 ways to get an example JSON: 1. manually type/paste it here 2. listen to a real-time data from a live test #### Values to Identify a User Whenever the webhook receives data, it first checks the paths you specify here to see whether it can find an existing user in the chatbot. If the user is not in the system, the chatbot will create a new profile. That's how the chatbot initiates a conversation without talking to the user before. However, some channels don't allow the chatbot to start the conversation first due to privacy and spam issues. For example, your SMS bot can send messages as long as you have the recipient's phone number, while your Facebook Messenger chatbot cannot send messages to a Facebook user who never talked to your bot before. **Process for User Identification** This is the process of how the system identifies a user: 1. check user\_ns * if there is a valid user\_ns, user found. * if not, next step 2. check phone / email * if we can find a user by the phone or email, user found. * if not, next step 3. verify phone * no user matched in the system, is the phone a valid number? * if yes, user profile created. * if not, webhook won't be processed #### Mapping Area The mapping list shows which value should be stored in which custom field. When you get a sample JSON in the above area, click on Preview Payload to get a mapping tool. #### Webhook Logs #### ![inbound webhook](../.gitbook/assets/image241.png) Every single request is saved in Logs. Click on a record to see the received JSON data. #### Demo: Booking Confirmation A perfect tool to test your inbound webhook is already built-in everywhere! Simple get a chatbot (whatever channel), test it in an Action Step. Open another GoChat webpage side by side, keep the inbound webhook editing on Page 1 and select an external request on Page 2: ![inbound webhook](../.gitbook/assets/image367.png) Follow steps 1 to 8 in the following screenshot: ![inbound webhook](../.gitbook/assets/image421.png) Provide the data that need to be sent to the chatbot and click Test, you must get a "webhook inactive" error since we haven't activated it yet. It's fine, click on Done on Page 1, and you will see the data saved: ![inbound webhook](../.gitbook/assets/image149.png) Scroll down a bit, follow steps 1, 2, 3 to tell the system, where is the phone and email values in the JSON: ![inbound webhook](../.gitbook/assets/image301.png) Finally, map the rest data to the chatbot: ![inbound webhook](../.gitbook/assets/image288.png) Save your inbound webhook editing: ![inbound webhook](../.gitbook/assets/image4.png) Enter the subflow, let's send a message to the bot user: ![inbound webhook](../.gitbook/assets/image62.png) Publish the flow and let's do a live test in the external request again: ![inbound webhook](../.gitbook/assets/image55.png) We can see that this time it run without error because we activated the webhook and used a real phone number. Go to Logs and we can see a new user profile is created successfully. On the user side: ![inbound webhook](../.gitbook/assets/image94.png) # Multiple Languages With GoChat you have the ability to provide a multiple language chatbot experience. It is very easy to set up as well. #### How to add a new language To add a new language just go to Tools from the left-hand menu, then select the Multiple languages tab. ![title](../.gitbook/assets/image316.png) From here just press the button in the top-right corner named + New language. Once pressed a popup window will appear where you can select a new language. # Testers To help you with testing your flows before they go live you can invite testers inside your chatbot. This will help you troubleshoot any potential problems that are happening in your flows. To clarify, a tester can view a flow that is not yet published. Assume you have a published onboarding flow that is accessible to the public, but you made changes in the backend that are not yet published. You will be able to let testers preview those flows. To invite a tester they will need to be a subscriber to your chatbot. #### Invite and manage testers To invite a tester to your chatbot just go to Tools from your left-hand menu, then select the Testers tab. ![title](../.gitbook/assets/image50.png) To create a new tester just press the button in the top right corner named + New Tester. From here you will be able to type in the name of the person you would like to be a tester inside your chatbot. Again do note that this person you want to appoint as a tester needs to be an active subscriber of that chatbot. ![title](../.gitbook/assets/image307.png) Once done you will return to the main overview for the testers where you can also manage them from. ![title](../.gitbook/assets/image197.png) You will see the users who are invited by you as a tester and if you want to delete them you can press the trashbin icon to the right of each user to do so. #### How to send testers flows To send testers the flows in the draft version you can do so in a few ways. You can share a link to the particular flow, or let them type a keyword that will trigger the flow. Another way to let testers view content regular users cannot is by using the condition inside the flow builder for it. Just go to any flow and insert a condition block. From here search for the condition named is tester. ![title](../.gitbook/assets/image320.png) This way you will be able to send a tester to one part of the flow you want to be tested and a regular user can just follow the flow already fully published. # Widgets ### ![widget](../.gitbook/assets/image159.png) For Facebook bots, you can set some widgets to quickly start talking to the bot. To setup: 1. go "Tools" from the left sidebar 2. click "Widgets" 3. "+ New Widget" #### Messenger Ref URL Widget #### ![widget](../.gitbook/assets/image397.png) 1. put a widget name 2. choose a sub flow the link goes to (leave 3 and 4 blank if no reference is needed) 3. put a parameter name 4. assign a custom user field What does the Ref parameter do? For instance, you make a messenger ref URL to your main flow, so that by visiting this URL, your users can start talking to your bot. However, you would like to gather more information from the link, like where did your users get the link? In this case, you can put "source" in area 3 and a variable to store the source at area 4 in the above picture. Later, add a source name in your link according to where do you put it. This is how you get extra information from the link. After filling in all the information, click "Save" and click the pencil to edit this widget, you will see a unique URL generated for this widget: ![widget](../.gitbook/assets/image85.png) So here, by visiting any of the following links, your users can start talking to your bot: Example link\ Value in variable "source"\ https://m.me/102942588321862?ref=source\ https://m.me/102942588321862?ref=source--advertisement\ https://m.me/102942588321862?ref=source--shared\_by\_users\ https://m.me/102942588321862?ref=source--promoted\_by\_sales\ \ Yes, you'll notice that by adding "--xxx" after the link, the value "xxx" gets passed to the bot. #### QR Code Widget URL links are convenient to click via electronic way while QR codes are more suitable for on-site use. By scanning a QR code, your users can start talking to your bot. ![widget](../.gitbook/assets/image182.png) To setup: 1. give a widget name 2. select a sub flow 3. upload your logo image 4. adjust image size if needed 5. adjust color if needed 6. adjust dot scale if needed 7. click "Generate" to get an image on the right. Repeat step 4, 5 and 6 to get a final image 8. download your QR code, print it and put it in your store, restaurant, office, etc #### Customer Chat Widget This widget is to be embedded on your website, so that your website can have a bot serving users as gochat.hyppo.io do: ![widget](../.gitbook/assets/image364.png) To setup: 1. give a widget name 2. select a sub flow 3. adjust theme color if needed 4. adjust greeting message which will be shown above the "Continue as xx" button (see in the previous picture). 5. select a display type 6. adjust the delay if the second or the third display type is selected 7. for payload, see explanation in [Messenger Ref URL](https://www.google.com/url?q=http://gochat.gohyppo.io\&sa=D\&source=editors\&ust=1740386900695286\&usg=AOvVaw1aQpaywgi3IvU4QvlSw3Wa) above. Click "Save" after finishing all the settings, again, click the pencil to edit this widget and you will see this button: ![widget](../.gitbook/assets/image81.png) Click it. ![widget](../.gitbook/assets/image388.png) Add the websites that you want to put this bot at. Then install the snippet by copying and pasting the code. Perfect! 😎 You got a bot on your website now. --- description: >- Below you will find the default platform limits. some can be increased according to a connected paid addon. --- # Platform default limits | Topic | Limit | | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | | Max execution time | 40 seconds | | Max Step Points | 80 points | | Default timeout for external request | 15 seconds | | Default timeout for OpenAI action | 30 seconds | | Max Total Nodes | 2000 | | Smart Delays | 100 per user per 24 hours | | Max Inbound Webhooks Requests | 500 per 24 hours | | Max OpenAI Embeddings | 500 | | GoChat API Requests | 1000 per hour | | Googlesheet filter limit | Up till 5000th entry | | Googlesheet API limit | 3 requests per second | | Broadcast error rate limits | No more than 100 errors within 5 mins | | Chat history across all channels(send from user) | 4 months | | Chat history across all channels(send from bot) | 3 months | | Max file upload size limits | 10MB | | Media file size storage limits | 100MB(free plan); 1GB(paid plan) | | WhatsApp Media File Expire date | For meta cloud api, it’s 30 days by default; If you have connected S3 storage in the integration, the expire date is the same as the chat history. | | Total Date/Time triggers | 50 per bot |