Roger Swannell

Tag: chatbot (page 1 of 2)

BHF Shop Bot

I wanted to build a shopping Chatbot for the British Heart Foundation.

Charity shops run on three engines; stock donations, volunteer helpers, and customers to buy things. So I wanted the bot to be able to offer something for all three aspects

Find a shop

The ‘Find a shop’ flow is about helping the user find a shop nearby to donate unwanted items to.

The bot asks for the users location and then queries the Google Places API for places that match the preset search term of “British Heart Foundation”. The results are displayed to the user as a set of three cards showing the nearest three BHF shops.

It relies on the information in Google Places being correct, which it isn’t always, and interestingly, the Google Places API only returns results of places that are open, which may work well if you’re looking for a place to eat right now but if you search for charity shops on a Saturday evening you get no results. If I was doing it again I’d want to host the shops location and opening times somewhere like a Google Sheet so that the bot can provide more useful info about which shops are nearby, their opening times and what kinds of things they want to be donated.

Another useful feature might be using Google Maps to show the route from the user to the shop they select.

Search our eBay store

The ‘Search our eBay store’ is about allowing the user to find out if the BHF eBay store has any of what they are looking for, and it was the most complicated and fun to build.

As it is a simple search it relies on the user knowing what they are looking for (which I think most people using eBay do). It doesn’t provide any kind of recommendations.

The eBay API’s are very comprehensive and there are multiple API’s available to accomplish different things. I used the ‘’ API as I could specify that only results for the British Heart Foundation store are returned.

The first part of the flow is about finding out what the user wants to search for and calling the API to return matching items.

The data that comes back includes a count of how many results there are. We can use this later but for now it’s useful to tell the user how many items we’ve got matching the search term to set their expectations about how helpful the next few steps will be in them finding what they are looking for.

Sometimes there are no matches to the search term and so the count is 0. This gives us something specific to filter on and means we can ask the user if they want to search again. If they say no then the flow ends there.

If there five or fewer results then the item name, image, and url on eBay are displayed in a set of cards. I chose to limit the number of cards to five to reduce the amount of sideways scrolling the user has to do. If there are more than five results (and we know this because of the count we used earlier) then the bot asks if the user would like to see more results. If they say yes then another set of five cards is displayed. This is repeated again meaning the maximum number is items that the user sees in the flow is fifteen, but there is no reason it couldn’t be expanded to continue to show as many items as there are in the search results.

Unfortunately the API specifies that only 140px thumbnail images are available, which means they don’t look great when displayed at a larger size (like when using messenger.com on a laptop).

I haven’t looked at the other ebay API’s but maybe the next step is to look at allowing the user to login to their eBay account and bid on an item.

Talk to a person

The ‘Talk to a person’ flow is essentially a simple ‘Contact Us’ form (but I couldn’t call it ‘contact us’ as from the user’s point of view they have already contacted us by engaging with the bot.

It asks the user what their query is about, what they’d like to say, and their email address. Using the Freshdesk API, these details are used to create a ticket in Freshdesk.

Asking what the query is about is a way to automate the triaging of the ticket in Freshdesk. It’s a little annoying having to collect the email address when you already have a means of communicating with the user but it’s required for creating a ticket in Freshdesk and gives a way for the customer service agent to reply to the user. I might look into the Freshdesk API a bit more and see if it’s possible to pull the replies into the chat.

As a first iteration it works ok, and it was a good distraction on a Saturday night.

Using location in chatbots

Using location in a chatbot can be really useful in providing information and services, but getting the coordinates into the chatbot isn’t as smooth and easy as perhaps we’d like.

Getting the user’s location starts with gaining permission for the device to send its longitude and latitude coordinates to the chatbot.

But if location is switched off, Messenger needs to ask for location to be switched on.

Clicking the button in Messenger triggers the device to seek permission to allow Messenger to access location.

But that doesn’t always work.

Once location is switched on Messenger can get the long/lat coordinates.

And then Messenger can pass the coordinates to the chatbot.

Once all those steps have been taken the chatbot can finally use the precise location to provide whatever information or services to the user.

Given how complicated getting that location is for the user we should question whether getting the precise longitude and latitude coordinates is the best option for obtaining the user’s location. If the chatbot only needs to know the region the user is in then simply asking the user could be a better option.

Customer service chatbot using Freshdesk API

Having built a chatbot that uses the eBay API, and with the idea of a customer service chatbot floating around, I decided to see if I could build a chatbot that uses the Freshdesk API to pull content from the Help Articles into a chat flow to answer queries from customers.

The bot introduces itself as any good bot should, and then asks the customer how it can help.

The buttons that the bot displays are dynamically populated by querying the results from the Freshdesk API to find out what top level categories are available in the Help Articles section on Freshdesk.

When the customer selects the appropriate category the bot dynamically creates buttons again from what is returned by querying the sub-categories in Freshdesk.

And when the customer selects a button the bot will calls the content of the Help Article and displays it in the flow.

The bot then checks if that Help Article is what the customer is looking for. If the customer selects Yes the bot tells the customer that it’s glad and ends the conversation. If the customer selects No, the bot allows the customer to contact a human by raising a ticket in Freshdesk.

The bot is very simple, partly because there aren’t very many Help Articles to pull from, but it demonstrates that using the Freshdesk API to populate the buttons on the fly can work and means that the content only needs to be maintained in Freshdesk and not within the chatbot.

Building skills for building chatbots

Our events team wanted to build a Chatbot as part of the fundraising raising events acquisition journey.

They used the bot society simulator to design the flows and had intended to pay an agency to build the bot. Instead, I spent a couple of hours with one of the team to teach her the basics of building a Chatbot. She picked it up really quickly and built most of the bot in the first day.

Things I learned:
Digital transformation requires giving people the opportunities and space to develop new digital skills. This is more productive and efficient in the long run as it reduces reliance on external (and often costly) resources.

About using bot simulators specifically, beware of falling into the trap of thinking of the Chatbot as a visual interface like a webpage. Chatbots are conversational interfaces and need to be designed more as a two-way interaction then the kind of one-way passive interactions we usually have with screens.

Building something like a Chatbot yourself means you have a greater understanding of how it works, which will be a big help in iterating and improving the bot, puts the organisation in greater control of this and future Chatbots, and gives the team member another skill to go on their CV.

Thinking about a Bucks Mind Guide Chatbot

Buckinghamshire Mind is a local mental health charity that supports people across Buckinghamshire. Last year they created the Bucks Mind Guide, a fantastic resource with helpful links to all kinds of services that can support people with mental health problems.

Bucks Mind Guide Website

So, in my bid to make a chatbot for everything, I started thinking about how I could take the masses of information in the guide and convert it into a conversational experience and build a chatbot. My first thought was that because there was so many options for users to ask about and the bot to provide answers for, it couldn’t use button like most of my other bots and would need to recognise keywords and respond accordingly. I considered using Dialogflow (I used used it a while ago when it was API.AI) to handle picking up the keywords, and may still do so later, but to keep it simple I started with using Labels to pick up the keyword entered by the user and jump to the section of the flow that could provide an answer related to that keyword.

Bucks Mind Guide Chatbot

Now, I just need to add to the number of keywords the bot can respond to, and make the messages more friendly.

Using Cleo, the chatbot that helps you understand your spending

Cleo is an application that connects to your bank account and then provides a Facebook Messenger chatbot for you to get simple information from your account such as current balance. 


As is the point with all chatbots, using Cleo means you can check your balance, find out how much you’ve spent and if you’ve been paid without having to come out of Messenger and open your banking app, try to log-in, realise you can’t remember your customer number, etc., etc.

As Cleo says on it’s website, managing your daily finances should be easy than the banks make it. So, type natural language questions such as ‘How much have I spent at Tesco this week?’ and Cleo will tell you how much, ask Cleo if your wages have been paid and it will tell when your wages were last paid in and how much it was, ask Cleo ‘Where do I spend the most?’ and it will reply with a ranked list of how much you’ve spent this month in each category.

What do I think about it?

Needless to say, but I think Cleo is completely awesome. It is so much easier to use than the app provided by my bank (which I don’t use very much because it doesn’t do very much but will be using even less now). It does a really good job of simple things like balance enquiries, but it also provides insights that are actually useful.

How could it be better?

It could connect to PayPal. It doesn’t currently do this and that is the one big downside to getting a good grip on all of your daily finances.

It could access your account to enable you to perform simple transactions such as paying money to people (which could become a group chat between you, the person you are paying, and Cleo). I realise this is most likely against the terms and conditions of my bank account, and I get the security reasons why Cleo doesn’t do it at the moment but as biometric authentication gets better it’s definitely something I’d like to see.

Summary

I’ve been using it for a couple of hours and already have a better understanding of my finances than my bank ever provided me with. Everyone should use Cleo.

Olderposts

Copyright © 2018 Roger Swannell

Up ↑