Posted on

Chatfuel Or Manychat alternative?

Ok, yes, this is a promo. But in the last weeks, I’ve been talking to lots of our users and many of them asked for an explanation of our Bot Architect core features and best practices for designing bots that bring value. So, here’s a brief update on what we already have in the platform and what we plan to build soon. 

Visual chatbot builder

This is something that Manychat did much better than Chatfuel. But then we took it even further with more block types and the concept of bot skills. Bot events let you pass control between various skills effortlessly, providing great user experience.

Dialogflow direct integration

No need to use JSON APIs or external services like Janis. We connect your existing Dialogflow agent through developer token and you can use your intents to drive bot skills and trigger blocks in visual flow builder.

E-commerce chatbots

Some of you have already used our Integrator tool to get product galleries and category listings from your WooCommerce store in Chatfuel bots. In Bot Architect you can have those as native building blocks for your conversation, making bot ordering and e-commerce even better.Learn more

Bot variables and data

Do extensive math and take decisions based on your calculations. Fetch data from external integrations through JSON API. We’re still working on adding more powerful data processing (like introducing arrays and objects), but you already can do quite a lot!Learn more

Timers and delays

Both Chatfuel and Manychat are great in sending drip campaigns, but building these campaigns for the right conversational interaction can be an issue. We solve this with timers – now any skill can be triggered with a set delay (or even at a set date/time) and have any complexity that you need.Learn more

More chatbot features

We’ve just started our journey with Bot Architect, and we do our best to build a great tool for every chatbot developer. We’re constantly adding nice features and new integrations, and we have a great support team to help you with onboarding and getting most from your experience!

Visual Chatbot Builder

Stop building bots. Build conversations instead! It’s really easy. Pull the block from the toolbar, then pull a couple more, connect them with lines and season with some data processing and integrations – Voila! Your bot is ready and you can test it immediately. But when your users start to communicate, things tend to get a bit more complicated. “Hey, there’s a dead-end here, we need to add some quick replies”, “Look, these two intents can get mixed”, “Ok, we need one more button to make a reservation” – your bot can quickly turn into something unmanageable, and your overall business objectives fade behind blocks, buttons, replies, and integrations. We’ve decided to put the conversational design on top, so building bots in Architect is really easy and straightforward. Instead of managing the bot as a whole, you can teach him some small skills – short conversation flows that fulfill a specific action or provide a user with some specific value. These flows are then triggered by events – and you can use almost anything as an event. Some examples are: (1) user pressed a button – that’s an event, (2) user said something that was recognized as natural language intent – that’s an event too, (3) timer was triggered – event again, and so on and so forth. Here’s an example of a skill that is handling subscriptions and unsubscriptions to bot updates.

The conversation builder is based on the concept of “events” that drive bot interaction with end-users.

Simple skill to control bot subscriptions and unsubscribes.

Note how “Subscribe me!” and “Unsubscribe!” buttons are sending events that are being caught by CATCH blocks to trigger certain mini-flows. Good news is that once you’ve defined flow for a certain event, you can trigger it from anywhere in the bot by sending this event with a SEND block – for example, if you have “Unsubscribe” button hidden deep in another skill or connected to NLP intent (more on that in a moment). Using the flow builder is quite straightforward, and we have a short description of block types for your reference, feel free to check it.

Dialogflow direct integration

Understand natural language input from bot usersWe started Activechat.ai as a service to help integrate Chatfuel to Dialogflow for better natural language understanding. Lots of people are using it now, and in Bot Architect we moved that integration to the next level. Now you can have your Dialogflow agent connected to your bot just by pasting developer access token, and all your intents will be immediately available in your bot as events, and entities and contexts – as variables. Even more – we’ll create skills for each of your intents, and all you’ll have to do is add some content to that skills to make your Dialogflow bot shine. There are two approaches to chatbot development. One is decision tree based – this is used by Chatfuel, Manychat and other similar platforms where users can control conversation by pressing buttons and providing quick replies. Another is free-form natural language interaction and is used by platforms like Dialogflow, Wit.ai etc. We managed to combine best of both worlds, so that in Activechat Bot Architect you can easily sketch decision-based conversation flow and then enrich it with natural language intents. The reason for this is that we firmly believe in the future of natural language interaction between computers and humans, and we also realize how difficult can complex bot design in Dialogflow be. Integrations, timed events and data processing are pain in the neck in Dialogflow, and hopefully we can make developer’s life a bit more easy here. 

Janis.ai is great. But we are better in contexts and entities, and you don’t have to pay extra!

Dialogflow intents as events in Bot Architect

All you have to do to extract intents from user’s freeform input is pass that input to NLP block. Here’s a simple example with “default” event that is triggered every time your user sends message to the bot. $_last_user_input is a system variable, storing last message received from your user.

Sending user input to Dialogflow to extract intents. Note incoming contexts: “ordering” and “usa”.

Working with entities is easy too – when any of your Dialogflow NLP intents triggers an event inside your bot, these intent’s entities are being passed as bot variables $_nlp_entity_<name> and you can use them in your bot logic. Need contexts? Sure – just check $_nlp_contexts for the list of outgoing contexts from Dialogflow intent or set incoming contexts in NLP block settings. Read more about NLP in Activechat.

Native e-commerce chatbots integration

Sell products and services directly in the botHalf of requests that we have for chatbot development is for e-commerce shops. If you are using Chatfuel or Manychat, adding product gallery requires lots of manual work and the updates are hard to implement. Searching through your products also requires manual integration and extensive use of JSON API – but now it’s in the past due to direct e-commerce integration that you can have in our Bot Architect. Currently we support WooCommerce CMS, and 3Dcart and Shopify are on the way. We have two two types of blocks for e-commerce – CATEGORIES and PRODUCTS. These are automatically populated with content from your CMS and do not require manual updates or complex searches. CATEGORIES block will display a list of categories (or sub-categories) in your shop as native Messenger gallery, and PRODUCTS will do the same to products in a certain category. 

Now you can have product gallery or build categories tree in a click of a mouse!

E-commerce blocks display products and categories from your online store

You can customize these blocks with buttons that will trigger other blocks or skills. For example, “Order now” button can lead to a “Add to cart” skill, and “Show similar” will trigger a skill showing more products that fit certain search criteria. Here’s how it will look in your chatbot conversation – and you can design a great chatbot shopping experience in just a couple of minutes!

Your complete online shop in a chatbot

Working with data and variables

Process user’s input and make decisionsAny chatbot is only as good as the value that it’s providing to the end users. And to provide that value it’s often necessary to do some numbers crunching or solve some other programming tasks. We simplify that by providing visual tools for data processing and manipulating. Currently we support only simple variables, and advanced data processing with arrays and objects is already in the works. Need more processing power? Just use our external JSON API tool and integrate with your own script running at your premises. You can store almost any data that you obtain from chatbot user in bot variables. These variables can be used to manipulate that data (for example, do some maths) or make decisions in the conversation flow. Some examples are below.

Complex programming made simple and visual – with no developer background required

Divide $number by 3 and check ranges
Check if user input contains “yes” or “no”

System variables are used to access certain data about your bot users or events, and here are some of them. You can find complete list in our manuals.

$_first_name – user’s first name

$_last_name – user’s last name

$_locale – user’s locale

$_timezone – user’s timezone

$_random – random value (0..1)

$_year – current year

$_month – current month (1..12)

$_date – current date (1..31)

$_day – current day (1..7)JSON API plugin can be used to fetch data from external sources. Just put external script address and parameters, and get values that the script sends you back in bot variables. 

Call external JSON APIs when necessary

Timers and delays

Send drip campaigns or just ping silent usersWorst thing that can happen to a chatbot is stalled conversation. Bots that bring value™ should be engaging and entertaining, and if the user is stuck somewhere in the flow there should be a way to re-engage her – that’s good both for the user and for your business goals. Sending mass broadcasts manually is time-consuming and can look spammy, but having a pre-designed schedule for bot interactions is a great tool to build long-term relationship with your customer. In Activechat’s Bot Architect you have three types of TIMER blocks. One is for ever-green timers that send events at regular intervals (be it minutes, days or months). You can CATCH these events to trigger certain skills within your bot, feeding fresh content to your users. Another is “WAIT FOR” block – it’s used to pause a flow for a certain amount of time, for example to check if the user has paid for her order in E-commerce shop. And third block is “WAIT UNTIL” – it can be used to wait until certain time or date. This one is great for time-bound announcements, product updates etc.

Remind your users to complete their purchases or drip content to engage and entertain them

Simple skill to check for order payment after 3 hours
Example of drip campaign that will be sent every 2 days with an option to stop it

Don’t forget to pay attention to conversational design – having powerful instruments like the ones that you have in Activechat Bot Architect can lead to unnecessary conflicts. Imagine two timers working independently, for example, or a single event being CAUGHT in multiple skills.

Do you want more?

We have some nice extras

Multiple communication channels

Currently Bot Architect supports Facebook Messenger, Telegram and Twilio (SMS) integrations. Viber, WhatsApp and Slack are in the works, and we’ll be adding Amazon Alexa, Google Home, Intercom and site chat widget soon!  

Mass broadcasts

Schedule a mass broadcast and trigger specific bot skill at a set time or immediately for all users in your chatbot.  

Courtesy waiting time

Sometimes bot users send message to your bot and then immediately start typing again. For example:

Bot: Hi, how can I help you?
User: Hi! Are you online?
User: I’d like to make a reservation…
Bot: There is no help for “Are you online”, sorry – FAIL!

In Bot Architect you can set delay time in LISTEN block, and your bot will wait for a couple of seconds to check if the user starts typing again. If she does – the bot will wait until another message is received and concatenate all user input in one long message to process.