A chatbot, like several human customer support rep, wants knowledge about your enterprise and merchandise with a purpose to reply to clients with the right info. What’s an environment friendly strategy to hook up your knowledge to a chat software with out important knowledge engineering? On this weblog, I’ll reveal how one can construct a Facebook Messenger chatbot to assist customers discover trip leases utilizing CSV data on Airbnb rentals.
Providers Used
We’ll use the next providers to implement our chatbot:
Loading the Airbnb Information into Rockset
Airbnb data is accessible in CSV format for various cities and is split into itemizing, assessment, and calendar knowledge. From the Rockset console, I uploaded these recordsdata for Amsterdam into three totally different collections (airbnb_listings
, airbnb_reviews
, and airbnb_calendar
). You can even add knowledge for different cities into these collections if wanted.
Alternatively, you could place your knowledge in an Amazon S3 bucket and create a collection that repeatedly syncs with the info you add to the bucket.
Writing the Fb Messenger Bot
Utilizing the messenger bot tutorial, I created a Fb web page and webhooks to obtain occasions from the chatbot. You possibly can check with and familiarize your self with the Node.js challenge I created here.
app.js creates a HTTP server utilizing Express. The server handles GET requests to confirm webhooks and POST requests to reply to consumer messages.
// Accepts POST requests on the /webhook endpoint
app.submit('/webhook', (req, res) => {
let physique = req.physique;
if (physique.object === 'web page') {
physique.entry.forEach(perform(entry) {
let occasion = entry.messaging[0];
if (occasion.message && occasion.message.textual content) {
// deal with the message
handleMessage(occasion);
}
});
// Return a '200 OK' response
res.standing(200).ship('EVENT_RECEIVED');
} else {
// Return a '404 Not Discovered'
res.sendStatus(404);
}
});
handleMessage.js interacts with Dialogflow and queries Rockset to reply customers’ inquiries.
Utilizing Pure Language Processing with Dialogflow
With a purpose to perceive consumer messages and questions, I’ve built-in Dialogflow (apiai) in my challenge. Dialogflow lets you create intents and extract meanings out of phrases utilizing machine studying. To hook up with Dialogflow out of your software you could use Shopper entry token
to create the shopper object.
I created an intent rentalcity
and skilled it with a couple of phrases to extract the requested metropolis and date for the rental and the variety of folks within the occasion. Equally, I created a couple of extra intents to reply follow-up requests utilizing contexts. The Dialogflow challenge export is included within the recipes github repository.
Interacting with the Chatbot
We’ve got the bot arrange and a mechanism to grasp customers’ requests. All we’d like now could be a strategy to translate the requests into significant responses. Utilizing Rockset’s Node.js client, I’ll question the the collections created in step one.
Let’s begin interacting with the chatbot.
The intent to seek out listings makes use of the next SQL question:
with listings as (
choose id, identify, worth, property_type
from airbnb_listings
the place decrease(airbnb_listings.metropolis) like :metropolis
and airbnb_listings.accommodates::int >= :quantity
order by airbnb_listings.number_of_reviews desc
)
choose listings.id, listings.identify, listings.property_type, listings.worth
from listings, airbnb_calendar
the place airbnb_calendar.date = :date and airbnb_calendar.obtainable = :avail
and airbnb_calendar.listing_id = listings.id
restrict 1
This SQL question makes use of two collections airbnb_listings
and airbnb_calendar
to extract the rental with the best variety of opinions obtainable on the given date.
To get extra info for this itemizing, the consumer can reply with particulars
.
To reply this we fetch the abstract from the gathering airbnb_listings
for the listing_id returned within the earlier question.
choose abstract from airbnb_listings the place id = :listing_id
The consumer may also request the newest opinions for this itemizing by replying present opinions
.
The SQL question to get the opinions for this itemizing:
choose feedback, date
from airbnb_reviews
the place listing_id = :listing_id
order by date desc
restrict 3
To take a look at one other itemizing, the consumer varieties in subsequent
. This makes use of the offset
SQL command to get the following end result.
Abstract
We now have a data-driven chatbot that understands customers’ requests for trip leases and responds utilizing Airbnb itemizing and calendar knowledge! Its means to supply prompt replies leveraging quick SQL queries on the Airbnb CSV knowledge additional enriches the client expertise. Plus it was comparatively straightforward to attach the chatbot to the underlying Airbnb knowledge set. The whole technique of constructing the chatbot took me lower than a day, from loading the dataset into Rockset and writing the chatbot to establishing interactions to reply with the related info.