Voorbeelden

In deze sectie geven we enkele voorbeelden van uitgewerkte code responses.

Gebruiker vraagt weer in een stad

We hebben een node gemaakt in de conversationele boom (zie functionele documentatie voor meer uitleg). Deze node hebben we geconfigureerd met de intentie 'weer-info' in de zin en een entiteit met de naam 'stad' in de zin. We willen het weer in de gegeven stad teruggeven aan de gebruiker. Als de gebruiker het weer in meerdere steden opvraagt, geven we enkel het weer in de eerste gegeven stad.

Voorbeeldzin: "Welk weer is het in Antwerpen?"

from responses.responsemessage import ResponseMessage
from responses.responsedata import ResponseData
from responses.responsetype import ResponseType
from responses.response import Response
from responses.quickreply import Quickreply
import requests
class WeatherInfo(Response):
baseUri = "http://api.openweathermap.org/data/2.5/weather"
appId = "<JOUW APPID>"
lang = "nl"
units = "metric"
def getResponse(self, sentence, context, options={}):
cities = sentence.getEntitiesWithLabel("stad")
city = cities[0]
cityName = city.value
parameters = {
"q": cityName,
"appid": self.appId,
"lang": self.lang,
"units": self.units
}
result = requests.get(self.baseUri, params=parameters)
if result.status_code == 200:
weatherInfo = result.json()
description = weatherInfo["weather"][0]["description"]
message = "Het is momenteel {} in {}.".format(
description,
cityName.title()
)
else:
message = "Ik kan het weer in {} niet ophalen...".format(
cityName.title()
)
return ResponseMessage(
data=[
ResponseData(
message=message,
type=ResponseType.text
)
]
)

De gebruiker geeft aan waar hij woont.

We hebben een node gemaakt in de conversationele boom. Deze node hebben we geconfigureerd met de intentie 'woonplaats' in de zin en de entiteit 'stad' in de zin. We willen deze stad opslaan in de contextvariabelen en dan een antwoord geven aan de gebruiker.

Voorbeeldzin: "Ik woon in Antwerpen."

from responses.responsemessage import ResponseMessage
from responses.responsedata import ResponseData
from responses.responsetype import ResponseType
from responses.response import Response
from responses.quickreply import Quickreply
class CityHandler(Response):
def getResponse(self, sentence, context, options={}):
cities = sentence.getEntitiesWithLabel("stad")
city = cities[0]
cityName = city.value
contextVariables = context.contextVariables
contextVariables["city"] = cityName
return ResponseMessage(
data=[
ResponseData(
message="Leuk! {} vind ik een hele mooie stad.".format(
cityName.title()
),
type=ResponseType.text
)
],
contextVariables=contextVariables
)

De gebruiker geeft zijn leeftijd aan.

We hebben een node gemaakt in de conversationele boom. Deze node hebben we geconfigureerd met de intentie 'leeftijd' in de zin en de systeementiteit 'number' in de zin. Indien de gebruiker te jong is, willen we hem naar een ander deel van de conversatie sturen via een bookmark.

Voorbeeldzin: "Ik ben 15 jaar."

from responses.responsemessage import ResponseMessage
from responses.responsedata import ResponseData
from responses.responsetype import ResponseType
from responses.response import Response
from responses.quickreply import Quickreply
class AgeHandler(Response):
def getResponse(self, sentence, context, options={}):
numbers = sentence.getEntitiesWithLabel("number")
number = numbers[0]
age = int(number.value)
toBookmark = None
if age < 18:
toBookmark = "te jong"
message = "Spijtig!"
else:
toBookmark = None
message = "Goed! Dan gaan we verder."
return ResponseMessage(
data=[
ResponseData(
message=message,
type=ResponseType.text
)
],
toBookmark=toBookmark
)