A few weeks ago, oneUp attended a hackathon where we won a prize with the creation of a Flight Delay Insurance Chatbot.
Status.im is a mobile chat client and browser that connects to the Ethereum blockchain. It lets you use decentralized applications (Dapps) and chatbots and has integrated payment capabilities. Status recently organized a hackathon to let developers experiment with the newly released alpha version and showcase their skills.
Etherisc is a new kind of company that builds decentralized insurance products on the Ethereum blockchain. Since establishment, they have won several prizes for their decentralized insurance applications. For the Status hackathon oneUp collaborated with Etherisc to make the existing FlightDelay DAPP accessible via a chatbot. This is what made us win a prize.
In cooperation with Etherisc, we set the goal to convert the FlightDelay app into a pure chatbot called Flightbot. Since there already was a web-based version at fdd.etherisc.com we decided to make all the interaction happen within the conversation. This was mainly decided to explore the capabilities of status to integrate an app into a conversation as natural as possible. The user needs to feel like he is talking to an assistant that guides him through the process to apply for a policy. Based on the received answers the necessary parameters are set, like the departure and arrival airport and the premium a user is willing to pay. After all the information is collected a transaction is made in Status that lets the user create a policy by signing with their digital signature.
No API calls
Shortly into the hackathon, we realized that a Status chatbot doesn’t allow you to talk to an outside source like an API to collect information. This posed a problem since we need a flight number to apply for a policy in the Etherisc FlightDelay smart contract. This discovery led us to believe that the application was impossible to replicate within a chatbot.
After some discussion, we realized that Status supports the new Whisper V5 protocol of Ethereum. This is a decentralized communication layer that is still in a very experimental phase. It is part of what some people call the ‘holy trinity’ (Ethereum, Swarm & Whisper) of the Ethereum ecosystem which enables a fully decentralized web. We speculated on the possibility of using Whisper to communicate with our API.
Since we like a challenge at oneUp, we set out to build a proxy that let us talk to our flights API from within the bot script. This proved to be a challenging process that caused lots of frustration since there was almost no documentation on Whisper v5 at that time. Days of trial, error, losing hope and shouting at screens went by. But we finally managed to sent our first message from the bot to the API.
Shortly after, we were able to talk back to the bot. And serve the user with a list of flights to pick from. A video of our demo is available on youtube: https://youtu.be/NYCGlLEtaXM.
We managed to get the Whisper proxy working. But a number of Whisper nodes are still to low for this communication layer to be reliable enough. Sometimes we got an instant reaction and sometimes our call for flight data seemed to disappear into thin air. This is a simple problem that will probably disappear when the network matures and more nodes join.