Maak een locatiebewuste chatbot en vind de dichtstbijzijnde winkellocaties voor de gebruiker

Kan je chatbot taken afhandelen op basis van de locatie van je klanten? Nee? Dan is het tijd om je bot naar een hoger niveau te tillen! Stel je een virtuele assistent op WhatsApp of Facebook Messenger voor die je klant kan vertellen waar de dichtstbijzijnde winkel, reparatiedienst of afhaalpunt is.
In dit Knowledge Base-artikel laten we zien hoe je de locatie van de gebruiker kunt gebruiken om de dichtstbijzijnde winkel te vinden. Om een winkel of locatie in de buurt te vinden, hebben we twee dingen nodig:
- Locatie/Adres van de gebruiker
- Store Locator API
1. Locatie/Adres van de gebruiker
Binnen Flow.ai kun je de Location Trigger en een Any Text Trigger gebruiken om input te krijgen die we kunnen gebruiken. Hoewel het delen van een locatie cool is, geven sommige gebruikers er de voorkeur aan een adres in te voeren omdat ze hun huidige locatie niet willen delen. Daarom wordt aanbevolen om beide opties te gebruiken.
Aangezien de meeste winkelzoekers werken met de lengte- en breedtegraad als invoer, moeten we een gedeelde locatie of een adres converteren naar een lengte- en breedtegraad.

Locatie
Wanneer je de Location Trigger gebruikt, ontvang je de lat- en long-waarden. Lees meer in onze location docs of gebruik de onderstaande code om een actie te maken en de locatie van de gebruiker om te zetten in een lat, long-waarde.
async payload => {
var lat = "-"
var long = "-"
// If the user shares location
if(Array.isArray(payload.params.location)) {
lat = payload.params.location[0].value.lat
long = payload.params.location[0].value.long
}
Adres
Een tweede mogelijkheid om de long- en lat-waarde te verkrijgen, is het gebruik van een door de gebruiker ingevoerd adres. Maar hoe zetten we dat om in een long- en latwaarde?
Een vrij eenvoudige oplossing is om de Google Maps Geocoding API te gebruiken. Bekijk ons artikel over het gebruik van de Google Maps Geocoding API of gebruik de onderstaande code en voeg deze toe aan je bestaande actie.
if(Array.isArray(payload.params.address)) {
try {
const {
params,
user
} = payload
const { address } = params
const lastAddress = address[address.length - 1].value
// For this example we show the API key in code
// but best practice is to use Configuration
// https://flow.ai/docs/actions/code_configuration
const key='YOUR SECRET API KEY'
// Construct a Google API URL
const url=encodeURI(`https://maps.googleapis.com/maps/api/geocode/json?address=${lastAddress}&key=${key}&language=${user.profile.locale || 'en'}`)
// Call the API
const { data } = await request(url)
const { status, results } = data
lat = results[0].geometry.location.lat
long = results[0].geometry.location.lng
} catch(err) {
console.error(err)
// This is not good..
reply(new Message('Here you will find the closest stores: https://flow.ai/'))
}
}
2. Store Locator API
Nu hebben we onze long- en lat-waarde en deze waarden kunnen worden gebruikt voor je eigen Store Locator API. Bekijk eventueel je eigen API-documenten om deze te implementeren. Enkele dingen waar je tijdens het ontwerp rekening mee moet houden:
- Zorg ervoor dat je de resultaten sorteert op basis van afstand
- Geef een of meerdere resultaten weer
- Geef meerdere resultaten weer in Carousel (indien ondersteund door je kanaal)
- Edge cases afdekken
Edge cases afdekken

Zowel de Google API als je eigen Store Locator API werkt mogelijk tijdens het testen, maar wat doe je:
- Als de API een fout retourneert
- Als de API geen geldige resultaten heeft opgeleverd
- Als de API ons meerdere adressen retourneert
In de bovenstaande voorbeeldcode retourneren we eenvoudig een SMS-bericht met een link. Met die link kan de gebruiker nog steeds zelf de dichtstbijzijnde winkel vinden.