Table of contents
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.
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.
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.
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.
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.
For the flight data, we Amadeus’ Flight Offers Search API to search available flights based on provided dates, passengers and other miscellaneous information.
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.
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
Human asks Dash for COVID Data and Flight Availability
Human asks Dash for travel restrictions and info
Human asks Dash for entry requirements
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.
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.
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!