How I Build a Conversational AI App in Less Than 40 Hours with Dasha.AI

How I Build a Conversational AI App in Less Than 40 Hours with Dasha.AI

My last hackathon in 2021. Submitted for Dasha.AI's hackathon, 3rd place winner!

Conversational AI such as chatbots have been around for a while now. Using machine learning technologies and natural language processing, they can imitate and engage in human interactions.

The goal of a conversational AI to be able to speak with a human as naturally as possible without any intervention. It should be able to provide satisfactory conversation experiences and help reduce repetitive tasks in a business, such as answering FAQs.

In this article, allow me to share what my team and I build for Dasha.AI's hackathon, a conversational-AI-as-a-service platform that allows human-like text or voice conversation features into apps.

Inspiration

Due to COVID-19, there are many things to consider when travelling to another country, such as the entry and exit requirements, and the risk level. The travel restrictions in every country can change abruptly, and we know how difficult it is to stay updated to plan your travels.

Hence, we decided to build FlightDash, a Dasha.AI-powered app with a friendly chatbot called Dash to help you easily retrieve the latest travel data and flight offers.

FlightDash Logo.png

What it does

At FlightDash, you will be conversing with Dash, the chatbot to ask any inquiries regarding COVID-19 travel restrictions, latest COVID data, entry/exit requirements, risk level and flight availability. You just need to ask, and then Dash will simply answer. With its superior conversational AI, Dash can handle any non-scripted human questions and serve you with utmost care and efficiency.

login.png

Login to start talking to Dash

console

Phase 1: when Dash lives in console only

How we built it

The Conversational AI

FlightDash is built with Dasha.AI’s technology in order to have human-like conversations with the user. We build a Dasha app and use the Dasha Script Language (DSL) to build dialogs and transitions as the conversation progresses.

The script is structured like a finite state machine with nodes as states, where the first state would be the root node, and it will transition to other nodes based on conditions. These conditions would usually be defined as a certain type of intent or data that the AI detects in the message when the user replies, and how the AI detects these will be based on the training data we provide in data.json.

state machine

FlightDash’s State Machine Diagram

To learn more about finite state machines, feel free to read this article.

This means we just have to focus on providing good training data and designing the flow of the state machine while Dasha’s technology will do all the hard work for us (i.e., building the NLP model) which was neat.

The Information: APIs

For the latest COVID-19 data, we use NovelCOVID API and Amadeus’ COVID-19 Travel Restrictions API to determine the number of cases, entry/exit requirements as well as the disease risk level for a given country.

COIVDAPI.png

Get Latest COVID data for a specific country by NovelCOVID API

For the flight data, we Amadeus’ Flight Offers Search API to search available flights based on provided dates, passengers and other miscellaneous information.

image.png

Amadeus Flight Offers Search API

Challenges we ran into

1. Finding Free-to-use APIs

The first challenge was searching for flights and travel APIs that are free for us to use in the working demo. Fortunately for us, Amadeus Self-Service APIs were free up to about 2000 API calls. For COVID-19 data APIs, there were a lot that were not quite what we are looking for. After spending some time searching, we eventually found NovelCOVID’s API and were happy with it.

2. Understanding Dasha and DashaScript

Understanding how to use a new technology like Dasha and its DashaScript was one of the challenges our team had to face in this short hackathon. For example, we encountered an error in the beginning, which were troubling due to our limited knowledge on the product.

e.g.:error dasha.ArgumentError: 3 INVALID_ARGUMENT: Unable to prepare config: Unable to train custom intents…

We learned that it is because the entity name cannot have white spaces.

3. Client for FlightDash

Another roadblock we encountered when building our app is integrating the chatbot to a client. The Dasha documentation did not include a tutorial on how to integrate the output data from the server to a client. Hence, even after we finished our chatbot, we spent a lot of time digging for resources and code examples on the Dasha GitHub to figure out how to do so.

In the end, we settled on a workaround which uses the client-side speech recognition to record the conversation and have it displayed on the browser. It is not perfect because this means the conversation can be recorded differently than what it is, but nevertheless, we were happy to have a working GUI.

Human asks Dash for Flight Availability

client_flight availability.png

Human asks Dash for COVID Data and Flight Availability

client_covid data and flight ava.png

Human asks Dash for travel restrictions and info

client-travel-restrictions.png

Human asks Dash for entry requirements

client-entry requirements.png

4. Limited Time for 3 Deliverables

The three deliverables (video demo, blog post and working prototype) were difficult to complete within the time limit of this hackathon. We spent a lot of time on making the app, as we wanted to incorporate everything we envisioned into the working demo.

We overcome this challenge by allocation our tasks efficiently to each team member. Instead of putting all our eggs (team members) into 1 basket (task), we have a person finishing up the code, while another person starts writing the blog and so on.

We continued updating each other on our tasks, and if there’s anything we need from each other. For instance, when writing the blog, I would need demo screenshots from my teammate who’s working on finalizing the app. This way, we are collaborating and progressing on all our deliverables at the same time.

Accomplishments that we’re proud of

In less than 40 hours, we managed to build a fully functional demo of FlightDash, complete with both a client and a backend. With little video editing experience and lack of time, we are also proud to complete our video demo and all deliverables on time.

Check out the video demo below.

What we learned

We learned a lot about the amazing capabilities of Dasha.AI and how to build our first conversational-AI-as-a-service app. We also learned about various useful APIs to retrieve COVID-related or travel information.

image.png

What we learned and new technologies used

What’s next for FlightDash

In FlightDash’s future, we envisioned our chatbot Dash to have a travel recommender AI, where it can suggest great places to visit based on the user’s current destination and COVID-19 restrictions/risk level.

Currently, Dash can only list available flights given the provided information. We hope to make it into a full-fledged flight booking engine so that it can issue tickets for flights, hotels, etc. At the same time, we want to further work on Dash’s human-like interaction capabilities by including more digression logic and more variety of questions that it can answer.

We also would like Dash to be able to plan/suggest itineraries based on intent of travel and length of stay. For example, if a user is going to Bali for leisure, Dash can suggest hotels and tourists attractions to visit. It would even generate a sample itinerary that the user can refer to when planning their trip.

image.png

Summary of what we plan for FlightDash

The possibilities for FlightDash and Dash are endless. It is up to us humans to make them into reality so that Dash can be the efficient and human-like chatbot we need.

Submitted for the Dasha.AI Hackathon. 3rd place overall winner. Thanks for reading, cheers!

Did you find this article valuable?

Support Articles by Victoria Lo by becoming a sponsor. Any amount is appreciated!