Navigation
Über uns
Externe Inhalte
Navigation
Über uns
Externe Inhalte
Um die Datenbank unabhängig von den anderen Microservices zu machen, mussten die Datenbank Operationen ausgelagert werden. Das führte dazu, dass die Intents von Rasa aufgelöst werden mussten, damit die richtigen Datenbank Operationen ausgeführt werden können.
Aufgebaut wurde dieser Microservice als REST-Server mit JavaScript. Die verwendeten Technologien dafür sind:
Da dieser Microservice nur eine Route besitzt, über welche der Intent gesendet wird, muss der Microservice dazu in der Lage sein, diesen Intent aufzulösen, sodass die richtige Datenbank-Operation ausgeführt wird. Der Intent kommt ursprünglich von Rasa. Dieser sieht wie folgt aus:
{ "user": { "id": 12345, "telegram-id": 12345, "nickname": "Al", "details": { "home": "Bonn", "birthday": "23.06.1912", ... } }, "intent":{ "name":"database-set", "confidence":0.9998944998 }, "entities":[ ..., { "start":26, "end":36, "value":"krebstiere", "entity":"allergen", "confidence":0.9999893608, "extractor":"CRFEntityExtractor" }, { "start":37, "end":51, "value":"alergisch bin.", "entity":"detail-allergic", "confidence":0, "extractor":"CRFEntityExtractor" }, ... ], "text":"Merke dir, dass ich gegen Krebstiere alergisch bin.", ... }
Durch den Intent, erfährt man, welche Operation ausgeführt werden soll und in den Entities steht drin, was hinzugefügt/gelöscht/ausgelesen werden soll, sowie von welchem User diese Operation ausgeführt werden soll. Die Entity mit dem höchsten Confidence-Score ist die gewollte Anfrage an die Datenbank.
POST https://localhost:<PORT>/resolve
oder
POST https://localhost:<PORT>/database
{ answer: { content: 'Deine Daten:\n' + '\n' + 'Nickname: **DennySchumann**\n' + 'Vorname: **Denny**\n' + 'Nachname: **Schumann**\n' + '\n' + 'home: **köln**\n', history: [ 'intent-resolve' ] } }