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 ResponseMessagefrom responses.responsedata import ResponseDatafrom responses.responsetype import ResponseTypefrom responses.response import Responsefrom responses.quickreply import Quickreplyimport requestsclassWeatherInfo(Response): baseUri ="http://api.openweathermap.org/data/2.5/weather" appId ="<JOUW APPID>" lang ="nl" units ="metric"defgetResponse(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() )returnResponseMessage( 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 ResponseMessagefrom responses.responsedata import ResponseDatafrom responses.responsetype import ResponseTypefrom responses.response import Responsefrom responses.quickreply import QuickreplyclassCityHandler(Response):defgetResponse(self,sentence,context,options={}): cities = sentence.getEntitiesWithLabel("stad") city = cities[0] cityName = city.value contextVariables = context.contextVariables contextVariables["city"]= cityNamereturnResponseMessage( 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 ResponseMessagefrom responses.responsedata import ResponseDatafrom responses.responsetype import ResponseTypefrom responses.response import Responsefrom responses.quickreply import QuickreplyclassAgeHandler(Response):defgetResponse(self,sentence,context,options={}): numbers = sentence.getEntitiesWithLabel("number") number = numbers[0] age =int(number.value) toBookmark =Noneif age <18: toBookmark ="te jong" message ="Spijtig!"else: toBookmark =None message ="Goed! Dan gaan we verder."returnResponseMessage( data=[ResponseData( message=message, type=ResponseType.text ) ], toBookmark=toBookmark )