Belangrijke classen

In de getResponse-methode heb je toegang tot twee interessante parameters:

  • sentence: instance van de Sentence-klasse

  • context: instance van de Context-klasse

Deze parameters kunnen nuttige informatie bevatten om een antwoord te formuleren.

Verder zijn er nog interessante klassen, zoals ResponseMessage, ResponseData, Quickreply en Entity. In deze sectie zullen de parameters en methodes van deze klassen overlopen.

Sentence

De Sentence-klasse is een voorstelling van de input van de gebruiker. Je kan zelf geen instance van de klasse aanmaken. Het heeft de volgende eigenschappen en methodes:

Eigenschappen

Naam

Type

Beschrijving

session

str

de sessie-identifier

metadata

dict

vrije variabelen die meegegeven kunnen worden in de input

label

str

de intentie van de zin

sentence

str

de originele zin die gebruiker gegeven heeft, alles lowercase

tokens

list(str)

lijst van tokens (woorden) in de zin

user_input

str

de originele zin die de gebruiker ingegeven heeft (volledig originele input)

Methodes

getEntities()

  • Parameters: geen

  • Return type: list(Entity)

Geeft een lijst van alle entiteiten in de zin terug. Geeft een lege lijst terug wanneer er geen entiteiten zijn.

getEntityLabels()

  • Parameters: geen

  • Return type: list(str)

Geeft een lijst van alle namen van entiteiten in de zin terug. Geeft een lege lijst terug wanneer er geen entiteiten zijn.

getEntityValues()

  • Parameters: geen

  • Return type: list(str)

Geeft een lijst van alle waarden van de entiteiten in de zin terug. Geeft een lege lijst terug wanneer er geen entiteiten zijn.

getEntitiesWithLabel(label)

  • Parameters:

    • label (str): de naam van de entiteiten die je wil opvragen

  • Return type: list(Entity)

Geeft een lijst van alle entiteiten met een specifieke naam in de zin terug. Geeft een lege lijst terug wanneer er geen entiteiten met deze naam zijn.

getEntitiesWithLabelAndValue(label, value)

  • Parameters:

    • label (str): de naam van de entiteiten die je wil opvragen

    • value (str): de waarde van entiteiten die je wil opvragen

  • Return type: list(Entity)

Geeft een lijst van alle entiteiten met een specifieke naam en een specifieke waarde in de zin terug. Geeft een lege lijst terug wanneer er geen entiteiten met deze naam en deze waarde zijn.

getEntitiesAndPositionsWithLabel(label)

  • Parameters:

    • label (str): de naam van de entiteiten die je wil opvragen

  • Return type: dict

Geeft een dictionary terug met als keys een str die de positie van de entiteit aanduidt en als values een lijst van entiteiten (Entity) met een specifieke naam die op die positie staan in de zin. Geeft een lege dictionary terug als er geen entiteiten met deze naam zijn. De str die de positie aanduidt, heeft het volgende formaat: startIndex - eindIndex. Bijvoorbeeld:

Welk weer is het vandaag in Antwerpen?

{
"5 - 5": [(datum, vandaag)],
"7 - 7": [(stad, antwerpen)]
}

Context

De Context-klasse is een voorstelling van de huidige context van de conversatie. Je kan zelf geen instance van de klasse aanmaken. Het heeft de volgende eigenschappen en methodes:

Eigenschappen

Naam

Type

Beschrijving

label

str

de intentie in de context (= de intentie van de vorige zin)

contextVariables

dict

vrije variabele in de context

Methodes

getEntities()

  • Parameters: geen

  • Return type: list(Entity)

Geeft een lijst van alle entiteiten in de context terug. Geeft een lege lijst terug wanneer er geen entiteiten zijn.

getEntityLabels()

  • Parameters: geen

  • Return type: list(str)

Geeft een lijst van alle namen van entiteiten in de context terug. Geeft een lege lijst terug wanneer er geen entiteiten zijn.

getEntityValues()

  • Parameters: geen

  • Return type: list(str)

Geeft een lijst van alle waarden van de entiteiten in de context terug. Geeft een lege lijst terug wanneer er geen entiteiten zijn.

getEntitiesWithLabel(label)

  • Parameters:

    • label (str): de naam van de entiteiten die je wil opvragen

  • Return type: list(Entity)

Geeft een lijst van alle entiteiten met een specifieke naam in de context terug. Geeft een lege lijst terug wanneer er geen entiteiten met deze naam zijn.

getEntitiesWithLabelAndValue(label, value)

  • Parameters:

    • label (str): de naam van de entiteiten die je wil opvragen

    • value (str): de waarde van entiteiten die je wil opvragen

  • Return type: list(Entity)

Geeft een lijst van alle entiteiten met een specifieke naam en een specifieke waarde in de context terug. Geeft een lege lijst terug wanneer er geen entiteiten met deze naam en deze waarde zijn.

Entity

De Entity-klasse stelt een entiteit voor. Je kan zelf geen instance van de klasse aanmaken.

Eigenschappen

Naam

Type

Beschrijving

label

str

De naam van de entiteit

value

str

De waarde van de entiteit

ResponseType

ResponseTypeis een enum met de volgende mogelijk waarden:

Naam

Beschrijving

text

Een tekstballon

url

Een knop met een externe link

image

Een afbeelding

ResponseData

De ResponseData-klasse stelt een individueel element in een bericht voor, bijvoorbeeld een tekstballon of een afbeelding. Het is de bedoeling dat je hiervan één of meerdere instances aanmaakt en deze aan de ResponseMessage meegeeft.

Parameters om object te initialiseren

Naam

Type

Vereist

Beschrijving

message

str

Nee

Het bericht in de antwoorddata

type

ResponseType

Nee

Het type van de antwoorddata

url

str

Nee

De url in de antwoorddata (bij een url-type)

image

str

Nee

De url van een afbeelding in de antwoorddata (bij een image-type)

Opmerkingen

  • Standaard zijn parameters niet vereist, toch zijn er enkele restricties:

    • Wanneer je een type tekst geeft, is een message vereist

    • Wanneer je een type image geeft, is een image url vereist

    • Wanneer je type url geeft, is een url vereist

Voorbeelden

responseData = ResponseData(
message="Hallo! Waar kan ik je mee helpen?",
type=ResponseType.text
)
responseData = ResponseData(
message="Klik hier voor meer info!",
type=ResponseType.url,
url="https://www.jouwwebsite.be/meerinfo"
)
responseData = ResponseData(
type=ResponseType.image,
image="https://www.jouwwebsite.be/image.png"
)

Quickreply

De Quickreply-klasse is een voorstelling van een knop waar de gebruiker om kan klikken om snel een voorgedefinieerd bericht naar de chatbot te sturen. Je kan dit zelf aanmaken en meegeven aan de ResponseMessage.

Parameters om object te initialiseren

Naam

Type

Vereist

Beschrijving

text

str

Ja

De tekst op de knop

action

str

Nee

De actie achter knop (= de tekst die naar de chatbot gestuurd wordt)

Voorbeelden

quickreplies = [
Quickreply(text="Ja!"),
Quickreply(text="Nee...")
]

ResponseMessage

De ResponseMessage-klasse is een voorstelling van een volledig bericht dat teruggeven wordt aan de gebruiker en acties die eraan verbonden zijn. Het is de bedoeling dat je hiervan een instance aanmaakt en teruggeeft in de getResponse-methode.

Parameters om object te initialiseren

Naam

Type

Vereist

Beschrijving

data

list(ResponseData)

Ja

Een lijst van ResponseData-objecten

contextVariables

dict

Nee

Een dictionary met vrije variabelen die in de context opgeslagen worden

responsePriority

str

Nee

Een string die de prioriteit van het volgende antwoord aangeeft: "children-first" (default), "children-only", "response-score"

ifNoResponseFound

str

Nee

Het bericht dat aan de gebruiker gegeven wordt als er hierna geen antwoord gevonden wordt

toBookmark

str

Nee

De bookmark waarnaar er gesprongen wordt na het geven van dit antwoord

tags

dict

Nee

Een dictionary die de toe te voegen en te verwijderen tags definieert als lijsten.

Bvb: {'add': ['foo', 'bar'], 'remove': ['old']}

stateChange

str

Nee

De toestand waarin de chatbot valt na het geven van dit antwoord

metadata

dict

Nee

Een dictionary met vrije variabelen die teruggegeven worden aan de gebruiker

Opmerkingen

  • Indien je geen contextVariables meegeeft, dan blijven de vorige contextVariables behouden

  • Indien waarde van toBookmark geen bookmark is, zal het systeem crashen

Voorbeelden

responseMessage = ResponseMessage(
data=[
ResponseData(
message="Hallo daar!",
type=ResponseType.text
),
ResponseData(
message="Mijn naam is Oswald.",
type=ResponseType.text
),
ResponseData(
message="Hoe kan ik je helpen?",
type=ResponseType.text
)
],
quickreplies=[
Quickreply(
text="Wachtwoord vergeten",
action="Ik ben mijn wachtwoord vergeten."
),
Quickreply(
text="Gebruikersnaam vergeten",
action="Ik ben mijn gebruikersnaam vergeten."
)
]
)
responseMessage = ResponseMessage(
data=[
ResponseData(
message="Bekijk deze afbeelding:",
type=ResponseType.text
),
ResponseData(
image="https://www.jouwwebsite.be/afbeelding.png",
type=ResponseType.image
),
ResponseData(
message="Welke score zou je hieraan geven (1-3)?",
type=ResponseType.text
)
],
quickreplies=[
Quickreply(
text="1"
),
Quickreply(
text="2"
),
Quickreply(
text="3"
)
],
responsePriotity="children-only",
ifNoResponseFound="Dat is geen geldige score!"
)