My Laracon EU Conference Chatbot Recap
#chatbots,laravelFor my book and video-course about building chatbots in PHP I created the Laracon EU conference chatbot. In this article, I will give you all the insights into this project.
On the 12th of July this year, I released my first ebook/video-course called Build Chatbots with PHP. In the last chapter, you can follow me as I create a chatbot for a real client: The Laracon EU conference chatbot. A chatbot that was made to provide information about the Laracon EU conference on Facebook and Telegram. This article is about my learnings of this projects.
People Want It To Be Real
About nine years ago, I started looking into programming, and since then I see coding learning resources quite regularly. The one thing about them that bothers me the most is when they use abstract problems and solutions. I'm sure many of you have started learning OOP with something similar to the famous car example.
<?php
class Car {
public $brand;
function __construct($brand){
$this->brand = $brand;
}
public function accelerate($number){
echo "going $number miles per hour";
}
public function getBrand() {
return $this->brand;
}
}
?>
I hate this example, and it couldn't be far from reality. When was the last time you had to deal with a car object with an accelerate
method? My point here is, those examples should be as concrete as possible so that they are easy to capture.
And I see the same with projects in learning resources. They are too abstract. This is why I wanted my project to be as real as possible. Gladly, I found in Shawn and the Laracon EU team a great partner. So when people buy my book and go through the last chapter, they are learning about a real project that still exists. They can go to Twitter or Facebook and try it out, and they can read about my learnings here in this article.
Don't Fuck Up the First Impression
This is a rule that fits for many things but is especially true with chatbots. Chatbots have a conversational interface. This means you can use them with messages and UI elements like buttons or galleries. When there is a problem with a feature, users can't just reload the page or use the others features in the meantime as they could do on a website. Inside a chatbot, you are probably stuck, and the user will leave.
I faced a similar problem with the Laracon EU chatbot during the conference. Of course, everything was working the months before the conference. But when it started, there was a problem with the Facebook version of the bot. As if it wasn't annoying enough, the problem only encountered on some phones. I couldn't reproduce the error on my phone, because everything was working there.
I wasn't able to find the bug during the conference, and I had to live with this situation.
Chatbots Work Great With Events
One thing I liked about this chatbot is the notification system. During a conference, there many things the organizers what to inform the attendees about. This could be a change in the schedule, a welcome message for the next day or an emergency notice. Usually, organizers can spread this information only on stage themselves, or via emails.
Since it is more likely attendees check the messengers, instead of their emails, chatbots are a new and easy way to reach more of your attendees. For the Laracon EU chatbot, I built a little backend, so that the organizers easily could send out notifications to all subscribers.
It's Hard to Provide the Same Features on Different Messengers
This chatbot was provided for Facebook Messenger and Telegram. These are two of the most used messengers in Europe. They are both typical messengers, but there are still some differences in their feature set.
For the Laracon EU chatbot, I built a feature that lets users pick their favorite talks to create their own personal schedule. The chatbot could then remind them of the beginning of one of their chosen talks. To create this schedule, the bot needs to show all of the given talks to the user. This was working quite well on Facebook Messenger where you can use so-called webviews to include custom features yourself. Here I created checkboxes for all talks, and the user could just select the interesting ones.
On Telegram, this was not possible. Still, I wanted to provide this feature there as well. So I came up with a custom solution with Telegram Keyboards. Keyboards let you create custom button inputs. The only problem is that the user can always only select one item. I then needed to save this value and provide the keyboard again, until the user picked all his favorite talks.
The solution was nice, and it worked quite well. Still, the experience wasn't as good as for Facebook Messenger.
Numbers Don't Lie
Last, I want to share some numbers with you. Again, this is something concrete, personal and real.
- Unique Users: During the conference that bot had 333 unique users, which is about half of all attendees.
- Subscriptions: 180 people subscribed to notifications on the bot.
- Unsubscribers: 7 people unsubscribed during the conference.
- Overall Messages: The chatbot received 6613 messages.
- Fallback Messages: Everytime the chatbot didn't understand a user's message, a fallback message was replied. It send 1570 fallback messages.
- Survey: After the conference, there was a survey where users gave the bot an average score of 3 of 5 points.
I'm not satisfied with the high number of fallback messages, which is about every fourth message. This is much too high and something I need to work on. Also, the score from the survey could have been a little bit better. It shows that there is still room to grow.
On the other side, I'm pleased with the total number of unique and subscribed users
. It showed that there was significant interest in the chatbot and that people subscribed to notifications. It also taught me that chatbots are a great addition to events like a conference.
What's Next
Right now I don't have any plans with this chatbot. Next year, we will decide if there will be a new version of the chatbot for Laracon EU 2020. If other conferences are interested in having a chatbot as well, we can talk about that as well :-)