Om een bericht te versturen naar de chatbot, doe je een HTTP POST
request naar de volgende endpoint:
/chats/{id}/message
De id
van de chatbot vind je in de URL van Oswald als je de chatbot configureert.
De payload van deze request moet er zo uitzien:
{"message": "<HET BERICHT VAN DE GEBRUIKER>","environment": "<ENVIRONMENT VAN DE CHATBOT>","session": "<SESSION IDENTIFIER>","locale": "<LOCALE VAN DE CHATBOT>"}
In de tabel hieronder wordt elke property van deze payload beschreven:
Naam | Type | Mogelijke waarden | Beschrijving |
message | String | Mag alles zijn | Het bericht dat de gebruiker naar de chatbot verstuurt. |
environment | String |
| De environment van de chatbot. In principe geef je hier altijd |
session | String | Mag alles zijn | De identifier van de sessie. Dit mag je zelf kiezen, maar houd deze uniek per sessie! Wanneer je dezelfde sessie identifier meegeeft, zal Oswald ervanuit gaan dat het over hetzelfde gesprek gaat. |
locale | String | Eender welke locale | De locale van de chatbot die je wil aanspreken. Als je chatbot geconfigureerd is in |
Wanneer je wil dat de chatbot zijn startbericht verstuurt om de conversatie te starten, geef je de volgende payload mee:
{"environment": "production","session": "<SESSION IDENTIFIER>","locale": "<LOCALE VAN DE CHATBOT>"}
Het is in Oswald mogelijk om metadata mee te geven aan de chatbot. Dit is een object waar je alles kan inzetten wat je wil. Een developer van Oswald kan deze via het sentence
-object in een advanced code response lezen: sentence.metadata
. Zo kan je bijvoorbeeld extra informatie over de gebruiker meesturen naar de chatbot:
{"environment": "production","session": "12345","message": "Hallo!","locale": "nl-BE","metadata:" {"firstname": "Michiel","lastname": "Vandendriessche"}}
Als reply op je POST
request, krijg je een JSON-object in de volgende vorm:
{"data": [{"type": "text","message": "Hey! Wat is jouw naam?","url": null,"image": null}],"id": "5b964f67d98c420500a507c6","session": "12345","environment": "production","type": "out","takeover": null,"quickReplies": null,"locale": "nl-BE","metadata": {"state": "start","label": "junk","sentence": "hallo","tokens": ["smalltalk"],"entities": [{"label": "smalltalk","value": "hallo"}],"context": {"contextVariables": null,"entities": [],"label": null,"dialogStack": []},"firedRules": [{"id": "5aa13e5910dacb0005283089","dialog": "5aa13e5910dacb0005283088","score": 20,"label": "any => 'None': [{'_id': ObjectId('5aa13dcd10dacb0005283081'), 'label': 'smalltalk', 'useForCorrections': None, 'id': ObjectId('5aa13dcd10dacb0005283081'), 'chatbotId': ObjectId('5aa1258c10dacb0005283005')}] [{'_id': ObjectId('5aa13de310dacb0005283082'), 'value': {'nl-BE': 'hallo', 'en': 'hello'}, 'synonyms': [{'lang': 'nl-BE', 'text': 'hey'}, {'lang': 'nl-BE', 'text': 'jo'}, {'lang': 'nl-BE', 'text': 'yu'}, {'lang': 'nl-BE', 'text': 'ju'}, {'lang': 'nl-BE', 'text': 'goeiedag'}, {'lang': 'nl-BE', 'text': 'goededag'}, {'lang': 'nl-BE', 'text': 'goeiemorgen'}, {'lang': 'nl-BE', 'text': 'goedemorgen'}, {'lang': 'nl-BE', 'text': 'goeiemiddag'}, {'lang': 'nl-BE', 'text': 'goedemiddag'}, {'lang': 'nl-BE', 'text': 'goeieavond'}, {'lang': 'nl-BE', 'text': 'goedeavond'}, {'lang': 'nl-BE', 'text': 'juw'}, {'lang': 'nl-BE', 'text': 'juuw'}, {'lang': 'nl-BE', 'text': 'hello'}, {'lang': 'nl-BE', 'text': 'hi'}, {'text': 'hi', 'lang': 'en'}, {'text': 'hi there', 'lang': 'en'}, {'text': 'good morning', 'lang': 'en'}, {'text': 'good afternoon', 'lang': 'en'}, {'text': 'good evening', 'lang': 'en'}, {'text': 'hey', 'lang': 'en'}, {'text': 'yow', 'lang': 'en'}, {'text': 'yo', 'lang': 'en'}, {'text': 'jow', 'lang': 'en'}, {'text': 'jo', 'lang': 'en'}], 'useForCorrections': True, 'id': ObjectId('5aa13de310dacb0005283082'), 'chatbotId': ObjectId('5aa1258c10dacb0005283005'), 'labelId': ObjectId('5aa13dcd10dacb0005283081')}] => any"}],"responseId": "5aa13e5910dacb0005283089","dialogId": "5aa13e5910dacb0005283088","times": {"preprocessing": 0.39,"labeling": 3.74,"context": 1.66,"response_time": 52.45,"error_time": 0},"estimates": [{"label": "delivery","probability": 0.03134429808020906},{"label": "takeover","probability": 0.030097189565634896},{"label": "forget","probability": 0.027379667383734985},{"label": "joke","probability": 0.0234291049512257},{"label": "login","probability": 0.015157726679018692},{"label": "documents","probability": 0.013203320682452972}],"variables": null},"processed": "58.48 milliseconds","time": 64,"queue": "oswald-out-df1fc523-1492-4ba0-9f30-81518bcda343","chatbotId": "5aa1258c10dacb0005283005","chatbotName": "Demo chatbot"}
Hier vind je vele informatie over de gestuurde request. De belangrijkste property is data
. Dit is een array van objecten. Elk object heeft een type en andere properties. Deze objecten moeten gevisualiseerd worden in de frontend. Dit kunnen tekstballonnen, afbeeldingen, url's, carousels... zijn.