wiki.ziemers.de

ziemer's informatik Wiki

Benutzer-Werkzeuge

Webseiten-Werkzeuge


wiki:software:beuthbot:database-microservice

Database Microservice

Inhaltsangabe

Motivation

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.

Technologien

Aufgebaut wurde dieser Microservice als REST-Server mit JavaScript. Die verwendeten Technologien dafür sind:

Funktionsweise

RegistyRegistyDatabaseMicroserviceDatabaseMicroserviceDatabaseControllerDatabaseControllerMongoDBMongoDBSend IntentDatabaseOperationDatabaseOperationResponseResponseResponse

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.

API

Request

POST https://localhost:<PORT>/resolve

oder

POST https://localhost:<PORT>/database

Response

{
  answer: {
    content: 'Deine Daten:\n' +
      '\n' +
      'Nickname: **DennySchumann**\n' +
      'Vorname: **Denny**\n' +
      'Nachname: **Schumann**\n' +
      '\n' +
      'home: **köln**\n',
    history: [ 'intent-resolve' ]
  }
}
wiki/software/beuthbot/database-microservice.txt · Zuletzt geändert: 23.07.2020 12:40 von Tobias Belkner