In Hawaii, when your friend tells you about an upcoming event that you want to attend, you respond with, "Shoots! We go!" Of course, you always have that one friend that never pays attention to the details.
That's where the ShootsWeGo bot steps in and becomes the "friend" to help fill in those gaps. It doesn't look to replace, just compliment and encourage to experience new things.
What it does
ShootsWeGo bot is a community driven Facebook Messenger bot empowering users to post, share, and encourage their friends and family to explore what the community has to offer. Users are able to post new events, share it and even request to get reminders via email or text. It uses Amazon Lex to help keep the conversations on topic and guide the user to what they need.
How we built it
ShootsWeGo is built on AWS platform using the following services:
- Amazon Lex
- Amazon Lambda
- Amazon DynamoDB
- Amazon SES (email)
- Amazon SNS (text messaging)
- Facebook Messenger
- Facebook Graph API (users)
With over a billion Facebook users, Messenger is the perfect platform to provide the inputs needed for Amazon Lex.
Challenges we ran into
Given we've never used the Amazon Lex service before. There were a few challenges.
The main challenge was getting the utterances tuned right for the intents. It was disappointing that it wasn't really suited for creating conversational bots from the start. Maybe with more time, but without a clear understanding on how the utterance training worked, it didn't perform the way we thought it would. Sometimes one utterance would kick off another intent or how the confirmation would take the answer of "maybe" and later count it as a "yes".
Another challenge was trying to get the intent to switch without having to prompt the user to type the utterance. You can switch, but it's like you're trying to elicit an answer from the user which doesn't make it as natural as we would prefer. For example, you would have to ask them a confirmation of, "Do you want me to remind you?" and they are limited to answering "yes". Only then, it can start off the remind intent by prompting for info.
We also tried to setup RSVP intent, but our slot data would come back as null after it was set. This was cleared on our end though an attempt to try elicit the data again. This is still unresolved and we posted on the AWS forums for help. Someone has reached out for request IDs to debug, but we haven't heard back in about two weeks. It does seem that we weren't the only ones to experience this problem.
We also experienced quite a bit of trouble just setting up a Facebook account for our bot. With Facebook's strict restrictions, it took a couple attempts to get an account setup. This definitely slowed the progress.
Accomplishments that we're proud of
Even with the challenges and working full-time jobs, we were able to produce a working bot. Although, we would have wanted to put more into it, it was still a great learning experience overall.
What we learned
This was the first time utilizing Amazon Lex and Facebook Messenger, and working through the challenges, we learned a lot utilizing those services. We also did some research into Amazon Polly which we would have wanted to incorporate into the bot, but didn't have enough time to dedicate to it.
What's next for ShootsWeGo
Additional features we wanted to add:
- More natural-language conversations, better user interactions
- Location based event recognition
- Private event creation, invite, RSVP capabilities
- Incorporate Amazon Polly
- Provide suggestions based on interests