Commit b60c7ff19e78011bb7607bf5f237ac78e21ad360

Authored by Kai Nessig
0 parents

add initial diagrams

docs/flow/diagram.plantuml 0 โ†’ 100644
  1 +++ a/docs/flow/diagram.plantuml
  1 +@startuml
  2 +Bot -> Gateway : request
  3 +Gateway -> nlp : request
  4 +Gateway <- nlp : request<message>
  5 +Gateway -> Registry : request<message>
  6 +Registry -> Service : request<message>
  7 +Service -> Registry : response
  8 +Registry -> Gateway : response
  9 +Gateway -> nlp : response (text)
  10 +nlp->Gateway : response (audio)
  11 +Gateway -> Bot : response (text|audio)
  12 +@enduml
... ...
docs/flow/diagram.svg 0 โ†’ 100644
  1 +++ a/docs/flow/diagram.svg
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="389px" preserveAspectRatio="none" style="width:605px;height:389px;" version="1.1" viewBox="0 0 605 389" width="605px" zoomAndPan="magnify"><defs><filter height="300%" id="f1rk9m483nskm2" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="29" x2="29" y1="38.2969" y2="349.625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="189.5" x2="189.5" y1="38.2969" y2="349.625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="343.5" x2="343.5" y1="38.2969" y2="349.625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="410.5" x2="410.5" y1="38.2969" y2="349.625"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="564.5" x2="564.5" y1="38.2969" y2="349.625"/><rect fill="#FEFECE" filter="url(#f1rk9m483nskm2)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="38" x="8" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="24" x="15" y="22.9951">Bot</text><rect fill="#FEFECE" filter="url(#f1rk9m483nskm2)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="38" x="8" y="348.625"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="24" x="15" y="368.6201">Bot</text><rect fill="#FEFECE" filter="url(#f1rk9m483nskm2)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="73" x="151.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="59" x="158.5" y="22.9951">Gateway</text><rect fill="#FEFECE" filter="url(#f1rk9m483nskm2)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="73" x="151.5" y="348.625"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="59" x="158.5" y="368.6201">Gateway</text><rect fill="#FEFECE" filter="url(#f1rk9m483nskm2)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="324.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="21" x="331.5" y="22.9951">nlp</text><rect fill="#FEFECE" filter="url(#f1rk9m483nskm2)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="35" x="324.5" y="348.625"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="21" x="331.5" y="368.6201">nlp</text><rect fill="#FEFECE" filter="url(#f1rk9m483nskm2)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="70" x="373.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="56" x="380.5" y="22.9951">Registry</text><rect fill="#FEFECE" filter="url(#f1rk9m483nskm2)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="70" x="373.5" y="348.625"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="56" x="380.5" y="368.6201">Registry</text><rect fill="#FEFECE" filter="url(#f1rk9m483nskm2)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="64" x="530.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="50" x="537.5" y="22.9951">Service</text><rect fill="#FEFECE" filter="url(#f1rk9m483nskm2)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="64" x="530.5" y="348.625"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="50" x="537.5" y="368.6201">Service</text><polygon fill="#A80036" points="178,65.4297,188,69.4297,178,73.4297,182,69.4297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="29" x2="184" y1="69.4297" y2="69.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="36" y="64.3638">request</text><polygon fill="#A80036" points="332,94.5625,342,98.5625,332,102.5625,336,98.5625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="190" x2="338" y1="98.5625" y2="98.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="197" y="93.4966">request</text><polygon fill="#A80036" points="201,123.6953,191,127.6953,201,131.6953,197,127.6953" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="195" x2="343" y1="127.6953" y2="127.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="207" y="122.6294">request&lt;message&gt;</text><polygon fill="#A80036" points="398.5,152.8281,408.5,156.8281,398.5,160.8281,402.5,156.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="190" x2="404.5" y1="156.8281" y2="156.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="197" y="151.7622">request&lt;message&gt;</text><polygon fill="#A80036" points="552.5,181.9609,562.5,185.9609,552.5,189.9609,556.5,185.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="410.5" x2="558.5" y1="185.9609" y2="185.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="130" x="417.5" y="180.895">request&lt;message&gt;</text><polygon fill="#A80036" points="421.5,211.0938,411.5,215.0938,421.5,219.0938,417.5,215.0938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="415.5" x2="563.5" y1="215.0938" y2="215.0938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="427.5" y="210.0278">response</text><polygon fill="#A80036" points="201,240.2266,191,244.2266,201,248.2266,197,244.2266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="195" x2="409.5" y1="244.2266" y2="244.2266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="207" y="239.1606">response</text><polygon fill="#A80036" points="332,269.3594,342,273.3594,332,277.3594,336,273.3594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="190" x2="338" y1="273.3594" y2="273.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="98" x="197" y="268.2935">response (text)</text><polygon fill="#A80036" points="201,298.4922,191,302.4922,201,306.4922,197,302.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="195" x2="343" y1="302.4922" y2="302.4922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="108" x="207" y="297.4263">response (audio)</text><polygon fill="#A80036" points="40,327.625,30,331.625,40,335.625,36,331.625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="34" x2="189" y1="331.625" y2="331.625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="137" x="46" y="326.5591">response (text|audio)</text><!--MD5=[d0349307142932a4322eb767a461c98c]
  2 +@startuml
  3 +Bot -> Gateway : request
  4 +Gateway -> nlp : request
  5 +Gateway <- nlp : request<message>
  6 +Gateway -> Registry : request<message>
  7 +Registry -> Service : request<message>
  8 +Service -> Registry : response
  9 +Registry -> Gateway : response
  10 +Gateway -> nlp : response (text)
  11 +nlp->Gateway : response (audio)
  12 +Gateway -> Bot : response (text|audio)
  13 +@enduml
  14 +
  15 +PlantUML version 1.2019.11(Sun Sep 22 10:02:15 UTC 2019)
  16 +(GPL source distribution)
  17 +Java Runtime: OpenJDK Runtime Environment
  18 +JVM: OpenJDK 64-Bit Server VM
  19 +Java Version: 1.8.0_212-8u212-b01-1~deb9u1-b01
  20 +Operating System: Linux
  21 +Default Encoding: UTF-8
  22 +Language: en
  23 +Country: null
  24 +--></g></svg>
0 25 \ No newline at end of file
... ...
docs/request-message-response/diagram.plantuml 0 โ†’ 100644
  1 +++ a/docs/request-message-response/diagram.plantuml
  1 +@startuml
  2 +class Request {
  3 +platform
  4 +userId
  5 +message: Message
  6 +history: Trace
  7 +metadata: KeyValueStore
  8 +answer(): Response
  9 +}
  10 +
  11 +
  12 +
  13 +class Message {
  14 +id: unique
  15 +evaluated: Meaning
  16 +evaluate()
  17 +}
  18 +
  19 +Request *-- Message
  20 +
  21 +Response -- Request
  22 +
  23 +
  24 +class Response {
  25 +request: Request
  26 +answer
  27 +history: Trace
  28 +}
  29 +
  30 +class TextMessage {
  31 +content
  32 +}
  33 +
  34 +class AudioMessage {
  35 +url
  36 +}
  37 +
  38 +Message <|-- AudioMessage
  39 +Message <|-- TextMessage
  40 +@enduml
... ...
docs/request-message-response/diagram.svg 0 โ†’ 100644
  1 +++ a/docs/request-message-response/diagram.svg
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="556px" preserveAspectRatio="none" style="width:289px;height:556px;" version="1.1" viewBox="0 0 289 556" width="289px" zoomAndPan="magnify"><defs><filter height="300%" id="f1ixqxrqxug2c6" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[0851f84a889f989e7bb0bebc385d0f09]
  2 +class Request--><rect fill="#FEFECE" filter="url(#f1ixqxrqxug2c6)" height="124.8281" id="Request" style="stroke: #A80036; stroke-width: 1.5;" width="156" x="62" y="154"/><ellipse cx="109.75" cy="170" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M112.7188,175.6406 Q112.1406,175.9375 111.5,176.0859 Q110.8594,176.2344 110.1563,176.2344 Q107.6563,176.2344 106.3359,174.5859 Q105.0156,172.9375 105.0156,169.8125 Q105.0156,166.6875 106.3359,165.0313 Q107.6563,163.375 110.1563,163.375 Q110.8594,163.375 111.5078,163.5313 Q112.1563,163.6875 112.7188,163.9844 L112.7188,166.7031 Q112.0938,166.125 111.5,165.8516 Q110.9063,165.5781 110.2813,165.5781 Q108.9375,165.5781 108.25,166.6484 Q107.5625,167.7188 107.5625,169.8125 Q107.5625,171.9063 108.25,172.9766 Q108.9375,174.0469 110.2813,174.0469 Q110.9063,174.0469 111.5,173.7734 Q112.0938,173.5 112.7188,172.9219 L112.7188,175.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="52" x="130.25" y="174.1543">Request</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="63" x2="217" y1="186" y2="186"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="48" x="68" y="200.2104">platform</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="36" x="68" y="213.0151">userId</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="112" x="68" y="225.8198">message: Message</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="79" x="68" y="238.6245">history: Trace</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="144" x="68" y="251.4292">metadata: KeyValueStore</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="63" x2="217" y1="258.0234" y2="258.0234"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="114" x="68" y="272.2339">answer(): Response</text><!--MD5=[bea5b0d46523efab5ea1c1d339f396f0]
  3 +class Message--><rect fill="#FEFECE" filter="url(#f1ixqxrqxug2c6)" height="86.4141" id="Message" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="79" y="339"/><ellipse cx="109.3" cy="355" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M112.2688,360.6406 Q111.6906,360.9375 111.05,361.0859 Q110.4094,361.2344 109.7063,361.2344 Q107.2063,361.2344 105.8859,359.5859 Q104.5656,357.9375 104.5656,354.8125 Q104.5656,351.6875 105.8859,350.0313 Q107.2063,348.375 109.7063,348.375 Q110.4094,348.375 111.0578,348.5313 Q111.7063,348.6875 112.2688,348.9844 L112.2688,351.7031 Q111.6438,351.125 111.05,350.8516 Q110.4563,350.5781 109.8313,350.5781 Q108.4875,350.5781 107.8,351.6484 Q107.1125,352.7188 107.1125,354.8125 Q107.1125,356.9063 107.8,357.9766 Q108.4875,359.0469 109.8313,359.0469 Q110.4563,359.0469 111.05,358.7734 Q111.6438,358.5 112.2688,357.9219 L112.2688,360.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="56" x="126.7" y="359.1543">Message</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="80" x2="200" y1="371" y2="371"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="85" y="385.2104">id: unique</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="110" x="85" y="398.0151">evaluated: Meaning</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="80" x2="200" y1="404.6094" y2="404.6094"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="85" y="418.8198">evaluate()</text><!--MD5=[62ba8ad8b61caf20139235a169a8c31d]
  4 +class Response--><rect fill="#FEFECE" filter="url(#f1ixqxrqxug2c6)" height="86.4141" id="Response" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="85" y="8"/><ellipse cx="107.2" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M110.1688,29.6406 Q109.5906,29.9375 108.95,30.0859 Q108.3094,30.2344 107.6063,30.2344 Q105.1063,30.2344 103.7859,28.5859 Q102.4656,26.9375 102.4656,23.8125 Q102.4656,20.6875 103.7859,19.0313 Q105.1063,17.375 107.6063,17.375 Q108.3094,17.375 108.9578,17.5313 Q109.6063,17.6875 110.1688,17.9844 L110.1688,20.7031 Q109.5438,20.125 108.95,19.8516 Q108.3563,19.5781 107.7313,19.5781 Q106.3875,19.5781 105.7,20.6484 Q105.0125,21.7188 105.0125,23.8125 Q105.0125,25.9063 105.7,26.9766 Q106.3875,28.0469 107.7313,28.0469 Q108.3563,28.0469 108.95,27.7734 Q109.5438,27.5 110.1688,26.9219 L110.1688,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="122.8" y="28.1543">Response</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="86" x2="194" y1="40" y2="40"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="98" x="91" y="54.2104">request: Request</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="42" x="91" y="67.0151">answer</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="79" x="91" y="79.8198">history: Trace</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="86" x2="194" y1="86.4141" y2="86.4141"/><!--MD5=[5756c407c546eb76320546df130f846f]
  5 +class TextMessage--><rect fill="#FEFECE" filter="url(#f1ixqxrqxug2c6)" height="60.8047" id="TextMessage" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="6" y="485"/><ellipse cx="21" cy="501" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M23.9688,506.6406 Q23.3906,506.9375 22.75,507.0859 Q22.1094,507.2344 21.4063,507.2344 Q18.9063,507.2344 17.5859,505.5859 Q16.2656,503.9375 16.2656,500.8125 Q16.2656,497.6875 17.5859,496.0313 Q18.9063,494.375 21.4063,494.375 Q22.1094,494.375 22.7578,494.5313 Q23.4063,494.6875 23.9688,494.9844 L23.9688,497.7031 Q23.3438,497.125 22.75,496.8516 Q22.1563,496.5781 21.5313,496.5781 Q20.1875,496.5781 19.5,497.6484 Q18.8125,498.7188 18.8125,500.8125 Q18.8125,502.9063 19.5,503.9766 Q20.1875,505.0469 21.5313,505.0469 Q22.1563,505.0469 22.75,504.7734 Q23.3438,504.5 23.9688,503.9219 L23.9688,506.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="82" x="35" y="505.1543">TextMessage</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="119" y1="517" y2="517"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="42" x="12" y="531.2104">content</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="119" y1="537.8047" y2="537.8047"/><!--MD5=[f3b14c42bd846bb4f5d93c15ed046653]
  6 +class AudioMessage--><rect fill="#FEFECE" filter="url(#f1ixqxrqxug2c6)" height="60.8047" id="AudioMessage" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="155.5" y="485"/><ellipse cx="170.5" cy="501" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M173.4688,506.6406 Q172.8906,506.9375 172.25,507.0859 Q171.6094,507.2344 170.9063,507.2344 Q168.4063,507.2344 167.0859,505.5859 Q165.7656,503.9375 165.7656,500.8125 Q165.7656,497.6875 167.0859,496.0313 Q168.4063,494.375 170.9063,494.375 Q171.6094,494.375 172.2578,494.5313 Q172.9063,494.6875 173.4688,494.9844 L173.4688,497.7031 Q172.8438,497.125 172.25,496.8516 Q171.6563,496.5781 171.0313,496.5781 Q169.6875,496.5781 169,497.6484 Q168.3125,498.7188 168.3125,500.8125 Q168.3125,502.9063 169,503.9766 Q169.6875,505.0469 171.0313,505.0469 Q171.6563,505.0469 172.25,504.7734 Q172.8438,504.5 173.4688,503.9219 L173.4688,506.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="91" x="184.5" y="505.1543">AudioMessage</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="156.5" x2="277.5" y1="517" y2="517"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="15" x="161.5" y="531.2104">url</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="156.5" x2="277.5" y1="537.8047" y2="537.8047"/><!--MD5=[5af9a8e90eccd1848976d3e8d85364f2]
  7 +reverse link Request to Message--><path d="M140,292.556 C140,308.48 140,324.747 140,338.915 " fill="none" id="Request&lt;-Message" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="140,279.312,136,285.312,140,291.312,144,285.312,140,279.312" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[a905890a09fc18570ecff8ed6529e96e]
  8 +link Response to Request--><path d="M140,94.105 C140,112.272 140,133.885 140,153.804 " fill="none" id="Response-Request" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6e305c8292983e4dba865e72ad2f2c9c]
  9 +reverse link Message to AudioMessage--><path d="M174.967,442.717 C183.502,457.2915 192.269,472.2651 199.574,484.7402 " fill="none" id="Message&lt;-AudioMessage" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="168.853,446.1273,164.787,425.331,180.934,439.053,168.853,446.1273" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[efc94696550a27b5ab0c1273fde348d9]
  10 +reverse link Message to TextMessage--><path d="M105.0328,442.717 C96.4985,457.2915 87.7307,472.2651 80.4259,484.7402 " fill="none" id="Message&lt;-TextMessage" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="99.0662,439.053,115.213,425.331,111.147,446.1273,99.0662,439.053" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[bcb9645ba84ad722dd7f033385ef5f56]
  11 +@startuml
  12 +class Request {
  13 +platform
  14 +userId
  15 +message: Message
  16 +history: Trace
  17 +metadata: KeyValueStore
  18 +answer(): Response
  19 +}
  20 +
  21 +
  22 +
  23 +class Message {
  24 +id: unique
  25 +evaluated: Meaning
  26 +evaluate()
  27 +}
  28 +
  29 +Request *- - Message
  30 +
  31 +Response - - Request
  32 +
  33 +
  34 +class Response {
  35 +request: Request
  36 +answer
  37 +history: Trace
  38 +}
  39 +
  40 +class TextMessage {
  41 +content
  42 +}
  43 +
  44 +class AudioMessage {
  45 +url
  46 +}
  47 +
  48 +Message <|- - AudioMessage
  49 +Message <|- - TextMessage
  50 +@enduml
  51 +
  52 +PlantUML version 1.2019.11(Sun Sep 22 10:02:15 UTC 2019)
  53 +(GPL source distribution)
  54 +Java Runtime: OpenJDK Runtime Environment
  55 +JVM: OpenJDK 64-Bit Server VM
  56 +Java Version: 1.8.0_212-8u212-b01-1~deb9u1-b01
  57 +Operating System: Linux
  58 +Default Encoding: UTF-8
  59 +Language: en
  60 +Country: null
  61 +--></g></svg>
0 62 \ No newline at end of file
... ...
docs/structure/diagram.plantuml 0 โ†’ 100644
  1 +++ a/docs/structure/diagram.plantuml
  1 +@startuml
  2 +abstract class Bot
  3 +class TelegramBot
  4 +class TwitterBot
  5 +
  6 +Bot <|-- TelegramBot
  7 +Bot <|-- TwitterBot
  8 +
  9 +class Gateway
  10 +class MetaMetaPersistence
  11 +class MetaPersistence
  12 +
  13 +package nlp {
  14 +
  15 +class "rasa-ai"
  16 +class "drools"
  17 +class "Google Cloud Speech API"
  18 +class "Google Cloud Natural Language"
  19 +class "Microsoft Azure Spracherkennungs-API"
  20 +class "Microsoft Azure Textanalyse-API"
  21 +"Google Cloud Speech API" -> "Google Cloud Natural Language"
  22 +"Microsoft Azure Spracherkennungs-API" -> "Microsoft Azure Textanalyse-API"
  23 +}
  24 +
  25 +Gateway -- nlp
  26 +
  27 +Bot "1..*" -- Gateway
  28 +
  29 +Gateway -- MetaMetaPersistence
  30 +
  31 +class Registry
  32 +
  33 +Gateway "1" -- "1" Registry
  34 +Registry -- MetaPersistence
  35 +
  36 +abstract class Service
  37 +
  38 +class MensaService
  39 +Service <|-- MensaService
  40 +Service <|-- WetterService
  41 +
  42 +Registry "1" -- "*" Service
  43 +@enduml
... ...
docs/structure/diagram.svg 0 โ†’ 100644
  1 +++ a/docs/structure/diagram.svg
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="506px" preserveAspectRatio="none" style="width:1724px;height:506px;" version="1.1" viewBox="0 0 1724 506" width="1724px" zoomAndPan="magnify"><defs><filter height="300%" id="f1v4zvbbnwapi2" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[cb16d009c2c3c451e9c65eba30a46b49]
  2 +cluster nlp--><polygon fill="#FFFFFF" filter="url(#f1v4zvbbnwapi2)" points="392.5,188,422.5,188,429.5,210.2969,1702.5,210.2969,1702.5,303,392.5,303,392.5,188" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="392.5" x2="429.5" y1="210.2969" y2="210.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="24" x="396.5" y="202.9951">nlp</text><!--MD5=[1a430f771feecd7605e990fdc690e74d]
  3 +class rasa-ai--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="rasa-ai" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="542" y="231"/><ellipse cx="557" cy="247" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M559.9688,252.6406 Q559.3906,252.9375 558.75,253.0859 Q558.1094,253.2344 557.4063,253.2344 Q554.9063,253.2344 553.5859,251.5859 Q552.2656,249.9375 552.2656,246.8125 Q552.2656,243.6875 553.5859,242.0313 Q554.9063,240.375 557.4063,240.375 Q558.1094,240.375 558.7578,240.5313 Q559.4063,240.6875 559.9688,240.9844 L559.9688,243.7031 Q559.3438,243.125 558.75,242.8516 Q558.1563,242.5781 557.5313,242.5781 Q556.1875,242.5781 555.5,243.6484 Q554.8125,244.7188 554.8125,246.8125 Q554.8125,248.9063 555.5,249.9766 Q556.1875,251.0469 557.5313,251.0469 Q558.1563,251.0469 558.75,250.7734 Q559.3438,250.5 559.9688,249.9219 L559.9688,252.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="43" x="571" y="251.1543">rasa-ai</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="543" x2="616" y1="263" y2="263"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="543" x2="616" y1="271" y2="271"/><!--MD5=[8c071e7f4ceac9e4887eb6ad26d4178d]
  4 +class drools--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="drools" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="436" y="231"/><ellipse cx="451" cy="247" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M453.9688,252.6406 Q453.3906,252.9375 452.75,253.0859 Q452.1094,253.2344 451.4063,253.2344 Q448.9063,253.2344 447.5859,251.5859 Q446.2656,249.9375 446.2656,246.8125 Q446.2656,243.6875 447.5859,242.0313 Q448.9063,240.375 451.4063,240.375 Q452.1094,240.375 452.7578,240.5313 Q453.4063,240.6875 453.9688,240.9844 L453.9688,243.7031 Q453.3438,243.125 452.75,242.8516 Q452.1563,242.5781 451.5313,242.5781 Q450.1875,242.5781 449.5,243.6484 Q448.8125,244.7188 448.8125,246.8125 Q448.8125,248.9063 449.5,249.9766 Q450.1875,251.0469 451.5313,251.0469 Q452.1563,251.0469 452.75,250.7734 Q453.3438,250.5 453.9688,249.9219 L453.9688,252.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="39" x="465" y="251.1543">drools</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="437" x2="506" y1="263" y2="263"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="437" x2="506" y1="271" y2="271"/><!--MD5=[cfa2d47d12dc6a89ef4dd7c0ea664d64]
  5 +class Google Cloud Speech API--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="Google Cloud Speech API" style="stroke: #A80036; stroke-width: 1.5;" width="189" x="1224" y="231"/><ellipse cx="1239" cy="247" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1241.9688,252.6406 Q1241.3906,252.9375 1240.75,253.0859 Q1240.1094,253.2344 1239.4063,253.2344 Q1236.9063,253.2344 1235.5859,251.5859 Q1234.2656,249.9375 1234.2656,246.8125 Q1234.2656,243.6875 1235.5859,242.0313 Q1236.9063,240.375 1239.4063,240.375 Q1240.1094,240.375 1240.7578,240.5313 Q1241.4063,240.6875 1241.9688,240.9844 L1241.9688,243.7031 Q1241.3438,243.125 1240.75,242.8516 Q1240.1563,242.5781 1239.5313,242.5781 Q1238.1875,242.5781 1237.5,243.6484 Q1236.8125,244.7188 1236.8125,246.8125 Q1236.8125,248.9063 1237.5,249.9766 Q1238.1875,251.0469 1239.5313,251.0469 Q1240.1563,251.0469 1240.75,250.7734 Q1241.3438,250.5 1241.9688,249.9219 L1241.9688,252.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="157" x="1253" y="251.1543">Google Cloud Speech API</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1225" x2="1412" y1="263" y2="263"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1225" x2="1412" y1="271" y2="271"/><!--MD5=[7c4900552af84581be74f8adb48c3ed9]
  6 +class Google Cloud Natural Language--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="Google Cloud Natural Language" style="stroke: #A80036; stroke-width: 1.5;" width="231" x="1448" y="231"/><ellipse cx="1463" cy="247" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1465.9688,252.6406 Q1465.3906,252.9375 1464.75,253.0859 Q1464.1094,253.2344 1463.4063,253.2344 Q1460.9063,253.2344 1459.5859,251.5859 Q1458.2656,249.9375 1458.2656,246.8125 Q1458.2656,243.6875 1459.5859,242.0313 Q1460.9063,240.375 1463.4063,240.375 Q1464.1094,240.375 1464.7578,240.5313 Q1465.4063,240.6875 1465.9688,240.9844 L1465.9688,243.7031 Q1465.3438,243.125 1464.75,242.8516 Q1464.1563,242.5781 1463.5313,242.5781 Q1462.1875,242.5781 1461.5,243.6484 Q1460.8125,244.7188 1460.8125,246.8125 Q1460.8125,248.9063 1461.5,249.9766 Q1462.1875,251.0469 1463.5313,251.0469 Q1464.1563,251.0469 1464.75,250.7734 Q1465.3438,250.5 1465.9688,249.9219 L1465.9688,252.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="199" x="1477" y="251.1543">Google Cloud Natural Language</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1449" x2="1678" y1="263" y2="263"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1449" x2="1678" y1="271" y2="271"/><!--MD5=[acf266757ecf13af39ce6c6e198e21d2]
  7 +class Microsoft Azure Spracherkennungs-API--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="Microsoft Azure Spracherkennungs-API" style="stroke: #A80036; stroke-width: 1.5;" width="273" x="652" y="231"/><ellipse cx="667" cy="247" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M669.9688,252.6406 Q669.3906,252.9375 668.75,253.0859 Q668.1094,253.2344 667.4063,253.2344 Q664.9063,253.2344 663.5859,251.5859 Q662.2656,249.9375 662.2656,246.8125 Q662.2656,243.6875 663.5859,242.0313 Q664.9063,240.375 667.4063,240.375 Q668.1094,240.375 668.7578,240.5313 Q669.4063,240.6875 669.9688,240.9844 L669.9688,243.7031 Q669.3438,243.125 668.75,242.8516 Q668.1563,242.5781 667.5313,242.5781 Q666.1875,242.5781 665.5,243.6484 Q664.8125,244.7188 664.8125,246.8125 Q664.8125,248.9063 665.5,249.9766 Q666.1875,251.0469 667.5313,251.0469 Q668.1563,251.0469 668.75,250.7734 Q669.3438,250.5 669.9688,249.9219 L669.9688,252.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="241" x="681" y="251.1543">Microsoft Azure Spracherkennungs-API</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="653" x2="924" y1="263" y2="263"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="653" x2="924" y1="271" y2="271"/><!--MD5=[5c8a763c67d47e21fa2e55f7c3e59860]
  8 +class Microsoft Azure Textanalyse-API--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="Microsoft Azure Textanalyse-API" style="stroke: #A80036; stroke-width: 1.5;" width="228" x="960.5" y="231"/><ellipse cx="975.5" cy="247" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M978.4688,252.6406 Q977.8906,252.9375 977.25,253.0859 Q976.6094,253.2344 975.9063,253.2344 Q973.4063,253.2344 972.0859,251.5859 Q970.7656,249.9375 970.7656,246.8125 Q970.7656,243.6875 972.0859,242.0313 Q973.4063,240.375 975.9063,240.375 Q976.6094,240.375 977.2578,240.5313 Q977.9063,240.6875 978.4688,240.9844 L978.4688,243.7031 Q977.8438,243.125 977.25,242.8516 Q976.6563,242.5781 976.0313,242.5781 Q974.6875,242.5781 974,243.6484 Q973.3125,244.7188 973.3125,246.8125 Q973.3125,248.9063 974,249.9766 Q974.6875,251.0469 976.0313,251.0469 Q976.6563,251.0469 977.25,250.7734 Q977.8438,250.5 978.4688,249.9219 L978.4688,252.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="196" x="989.5" y="251.1543">Microsoft Azure Textanalyse-API</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="961.5" x2="1187.5" y1="263" y2="263"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="961.5" x2="1187.5" y1="271" y2="271"/><!--MD5=[5f7a1d5056c7d80958fde22b7188240f]
  9 +class Bot--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="Bot" style="stroke: #A80036; stroke-width: 1.5;" width="53" x="173" y="8"/><ellipse cx="188" cy="24" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M188.1094,19.3438 L186.9531,24.4219 L189.2813,24.4219 L188.1094,19.3438 Z M186.625,17.1094 L189.6094,17.1094 L192.9688,29.5 L190.5156,29.5 L189.75,26.4375 L186.4688,26.4375 L185.7188,29.5 L183.2813,29.5 L186.625,17.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="21" x="202" y="28.1543">Bot</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="174" x2="225" y1="40" y2="40"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="174" x2="225" y1="48" y2="48"/><!--MD5=[cb74a83a4f903f6f1f6543ccb0a5b44e]
  10 +class TelegramBot--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="TelegramBot" style="stroke: #A80036; stroke-width: 1.5;" width="111" x="6" y="116"/><ellipse cx="21" cy="132" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M23.9688,137.6406 Q23.3906,137.9375 22.75,138.0859 Q22.1094,138.2344 21.4063,138.2344 Q18.9063,138.2344 17.5859,136.5859 Q16.2656,134.9375 16.2656,131.8125 Q16.2656,128.6875 17.5859,127.0313 Q18.9063,125.375 21.4063,125.375 Q22.1094,125.375 22.7578,125.5313 Q23.4063,125.6875 23.9688,125.9844 L23.9688,128.7031 Q23.3438,128.125 22.75,127.8516 Q22.1563,127.5781 21.5313,127.5781 Q20.1875,127.5781 19.5,128.6484 Q18.8125,129.7188 18.8125,131.8125 Q18.8125,133.9063 19.5,134.9766 Q20.1875,136.0469 21.5313,136.0469 Q22.1563,136.0469 22.75,135.7734 Q23.3438,135.5 23.9688,134.9219 L23.9688,137.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="79" x="35" y="136.1543">TelegramBot</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="116" y1="148" y2="148"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="116" y1="156" y2="156"/><!--MD5=[f78070549fed58b9f712d01bcdfa8080]
  11 +class TwitterBot--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="TwitterBot" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="152" y="116"/><ellipse cx="167" cy="132" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M169.9688,137.6406 Q169.3906,137.9375 168.75,138.0859 Q168.1094,138.2344 167.4063,138.2344 Q164.9063,138.2344 163.5859,136.5859 Q162.2656,134.9375 162.2656,131.8125 Q162.2656,128.6875 163.5859,127.0313 Q164.9063,125.375 167.4063,125.375 Q168.1094,125.375 168.7578,125.5313 Q169.4063,125.6875 169.9688,125.9844 L169.9688,128.7031 Q169.3438,128.125 168.75,127.8516 Q168.1563,127.5781 167.5313,127.5781 Q166.1875,127.5781 165.5,128.6484 Q164.8125,129.7188 164.8125,131.8125 Q164.8125,133.9063 165.5,134.9766 Q166.1875,136.0469 167.5313,136.0469 Q168.1563,136.0469 168.75,135.7734 Q169.3438,135.5 169.9688,134.9219 L169.9688,137.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="63" x="181" y="136.1543">TwitterBot</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="153" x2="246" y1="148" y2="148"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="153" x2="246" y1="156" y2="156"/><!--MD5=[6de492f04047ff8a778df2bea690e363]
  12 +class Gateway--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="Gateway" style="stroke: #A80036; stroke-width: 1.5;" width="85" x="282" y="116"/><ellipse cx="297" cy="132" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M299.9688,137.6406 Q299.3906,137.9375 298.75,138.0859 Q298.1094,138.2344 297.4063,138.2344 Q294.9063,138.2344 293.5859,136.5859 Q292.2656,134.9375 292.2656,131.8125 Q292.2656,128.6875 293.5859,127.0313 Q294.9063,125.375 297.4063,125.375 Q298.1094,125.375 298.7578,125.5313 Q299.4063,125.6875 299.9688,125.9844 L299.9688,128.7031 Q299.3438,128.125 298.75,127.8516 Q298.1563,127.5781 297.5313,127.5781 Q296.1875,127.5781 295.5,128.6484 Q294.8125,129.7188 294.8125,131.8125 Q294.8125,133.9063 295.5,134.9766 Q296.1875,136.0469 297.5313,136.0469 Q298.1563,136.0469 298.75,135.7734 Q299.3438,135.5 299.9688,134.9219 L299.9688,137.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="53" x="311" y="136.1543">Gateway</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="283" x2="366" y1="148" y2="148"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="283" x2="366" y1="156" y2="156"/><!--MD5=[a6b9c0f13e903759af77a6040a4d75f7]
  13 +class MetaMetaPersistence--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="MetaMetaPersistence" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="80.5" y="231"/><ellipse cx="95.5" cy="247" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M98.4688,252.6406 Q97.8906,252.9375 97.25,253.0859 Q96.6094,253.2344 95.9063,253.2344 Q93.4063,253.2344 92.0859,251.5859 Q90.7656,249.9375 90.7656,246.8125 Q90.7656,243.6875 92.0859,242.0313 Q93.4063,240.375 95.9063,240.375 Q96.6094,240.375 97.2578,240.5313 Q97.9063,240.6875 98.4688,240.9844 L98.4688,243.7031 Q97.8438,243.125 97.25,242.8516 Q96.6563,242.5781 96.0313,242.5781 Q94.6875,242.5781 94,243.6484 Q93.3125,244.7188 93.3125,246.8125 Q93.3125,248.9063 94,249.9766 Q94.6875,251.0469 96.0313,251.0469 Q96.6563,251.0469 97.25,250.7734 Q97.8438,250.5 98.4688,249.9219 L98.4688,252.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="136" x="109.5" y="251.1543">MetaMetaPersistence</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="81.5" x2="247.5" y1="263" y2="263"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="81.5" x2="247.5" y1="271" y2="271"/><!--MD5=[31b2e9695773afd3c5dca78d98af2285]
  14 +class MetaPersistence--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="MetaPersistence" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="185" y="339"/><ellipse cx="200" cy="355" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M202.9688,360.6406 Q202.3906,360.9375 201.75,361.0859 Q201.1094,361.2344 200.4063,361.2344 Q197.9063,361.2344 196.5859,359.5859 Q195.2656,357.9375 195.2656,354.8125 Q195.2656,351.6875 196.5859,350.0313 Q197.9063,348.375 200.4063,348.375 Q201.1094,348.375 201.7578,348.5313 Q202.4063,348.6875 202.9688,348.9844 L202.9688,351.7031 Q202.3438,351.125 201.75,350.8516 Q201.1563,350.5781 200.5313,350.5781 Q199.1875,350.5781 198.5,351.6484 Q197.8125,352.7188 197.8125,354.8125 Q197.8125,356.9063 198.5,357.9766 Q199.1875,359.0469 200.5313,359.0469 Q201.1563,359.0469 201.75,358.7734 Q202.3438,358.5 202.9688,357.9219 L202.9688,360.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="105" x="214" y="359.1543">MetaPersistence</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="186" x2="321" y1="371" y2="371"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="186" x2="321" y1="379" y2="379"/><!--MD5=[3dfa3f2a47c42e7badf1c5a380940d73]
  15 +class Registry--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="Registry" style="stroke: #A80036; stroke-width: 1.5;" width="82" x="283.5" y="231"/><ellipse cx="298.5" cy="247" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M301.4688,252.6406 Q300.8906,252.9375 300.25,253.0859 Q299.6094,253.2344 298.9063,253.2344 Q296.4063,253.2344 295.0859,251.5859 Q293.7656,249.9375 293.7656,246.8125 Q293.7656,243.6875 295.0859,242.0313 Q296.4063,240.375 298.9063,240.375 Q299.6094,240.375 300.2578,240.5313 Q300.9063,240.6875 301.4688,240.9844 L301.4688,243.7031 Q300.8438,243.125 300.25,242.8516 Q299.6563,242.5781 299.0313,242.5781 Q297.6875,242.5781 297,243.6484 Q296.3125,244.7188 296.3125,246.8125 Q296.3125,248.9063 297,249.9766 Q297.6875,251.0469 299.0313,251.0469 Q299.6563,251.0469 300.25,250.7734 Q300.8438,250.5 301.4688,249.9219 L301.4688,252.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="312.5" y="251.1543">Registry</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="284.5" x2="364.5" y1="263" y2="263"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="284.5" x2="364.5" y1="271" y2="271"/><!--MD5=[dbb8b4f13c7b21394f9d757e58732f45]
  16 +class Service--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="Service" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="357" y="339"/><ellipse cx="372" cy="355" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M372.1094,350.3438 L370.9531,355.4219 L373.2813,355.4219 L372.1094,350.3438 Z M370.625,348.1094 L373.6094,348.1094 L376.9688,360.5 L374.5156,360.5 L373.75,357.4375 L370.4688,357.4375 L369.7188,360.5 L367.2813,360.5 L370.625,348.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="45" x="386" y="359.1543">Service</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="358" x2="433" y1="371" y2="371"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="358" x2="433" y1="379" y2="379"/><!--MD5=[7ef71cb86d0382d53f92aacb0f4b71d0]
  17 +class MensaService--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="MensaService" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="259.5" y="447"/><ellipse cx="274.5" cy="463" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M277.4688,468.6406 Q276.8906,468.9375 276.25,469.0859 Q275.6094,469.2344 274.9063,469.2344 Q272.4063,469.2344 271.0859,467.5859 Q269.7656,465.9375 269.7656,462.8125 Q269.7656,459.6875 271.0859,458.0313 Q272.4063,456.375 274.9063,456.375 Q275.6094,456.375 276.2578,456.5313 Q276.9063,456.6875 277.4688,456.9844 L277.4688,459.7031 Q276.8438,459.125 276.25,458.8516 Q275.6563,458.5781 275.0313,458.5781 Q273.6875,458.5781 273,459.6484 Q272.3125,460.7188 272.3125,462.8125 Q272.3125,464.9063 273,465.9766 Q273.6875,467.0469 275.0313,467.0469 Q275.6563,467.0469 276.25,466.7734 Q276.8438,466.5 277.4688,465.9219 L277.4688,468.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="86" x="288.5" y="467.1543">MensaService</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="260.5" x2="376.5" y1="479" y2="479"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="260.5" x2="376.5" y1="487" y2="487"/><!--MD5=[a1ac23f7d6b37ce4151bd234c8b47e18]
  18 +class WetterService--><rect fill="#FEFECE" filter="url(#f1v4zvbbnwapi2)" height="48" id="WetterService" style="stroke: #A80036; stroke-width: 1.5;" width="119" x="413" y="447"/><ellipse cx="428" cy="463" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M430.9688,468.6406 Q430.3906,468.9375 429.75,469.0859 Q429.1094,469.2344 428.4063,469.2344 Q425.9063,469.2344 424.5859,467.5859 Q423.2656,465.9375 423.2656,462.8125 Q423.2656,459.6875 424.5859,458.0313 Q425.9063,456.375 428.4063,456.375 Q429.1094,456.375 429.7578,456.5313 Q430.4063,456.6875 430.9688,456.9844 L430.9688,459.7031 Q430.3438,459.125 429.75,458.8516 Q429.1563,458.5781 428.5313,458.5781 Q427.1875,458.5781 426.5,459.6484 Q425.8125,460.7188 425.8125,462.8125 Q425.8125,464.9063 426.5,465.9766 Q427.1875,467.0469 428.5313,467.0469 Q429.1563,467.0469 429.75,466.7734 Q430.3438,466.5 430.9688,465.9219 L430.9688,468.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="87" x="442" y="467.1543">WetterService</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="414" x2="531" y1="479" y2="479"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="414" x2="531" y1="487" y2="487"/><!--MD5=[74255b05c2b64650430312fa704ce0c0]
  19 +reverse link Bot to TelegramBot--><path d="M157.016,65.633 C135.948,81.816 110.99,100.986 91.8701,115.672 " fill="none" id="Bot&lt;-TelegramBot" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="152.767,60.07,172.892,53.438,161.295,71.172,152.767,60.07" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c559cf4cfbe0b535537177f6ce6ace31]
  20 +reverse link Bot to TwitterBot--><path d="M199.5,76.024 C199.5,89.579 199.5,104.038 199.5,115.678 " fill="none" id="Bot&lt;-TwitterBot" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="192.5,76,199.5,56,206.5,76,192.5,76" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[bf0ce985bfeb0d766c56dc67ecba9ee4]
  21 +link Google Cloud Speech API to Google Cloud Natural Language--><path d="M1413.25,255 C1423.08,255 1432.91,255 1442.73,255 " fill="none" id="Google Cloud Speech API-&gt;Google Cloud Natural Language" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1447.87,255,1438.87,251,1442.87,255,1438.87,259,1447.87,255" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[ab65187e5e3bb1e884fa7bf04ddaa369]
  22 +link Microsoft Azure Spracherkennungs-API to Microsoft Azure Textanalyse-API--><path d="M925.076,255 C935.1,255 945.124,255 955.147,255 " fill="none" id="Microsoft Azure Spracherkennungs-API-&gt;Microsoft Azure Textanalyse-API" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="960.389,255,951.389,251,955.389,255,951.389,259,960.389,255" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[5a7bee2b9ca17417b03452ed10595b55]
  23 +link Gateway to nlp--><path d="M367.059,157.365 C373.312,161.344 379.113,166.178 383.5,172 C386.2123,175.5996 388.5169,179.5299 390.4729,183.6579 C390.9619,184.6899 391.4291,185.7343 391.8755,186.789 C391.9871,187.0526 392.0973,187.3169 392.2063,187.5819 C392.2608,187.7143 392.315,187.8469 392.3688,187.9797 " fill="none" id="Gateway-nlp" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9d9d2bd3fc2c7eca8c4958bc525f67ce]
  24 +link Bot to Gateway--><path d="M226.009,55.48 C246.936,73.225 276.028,97.895 297.165,115.82 " fill="none" id="Bot-Gateway" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="207.0427" y="75.8906">1..*</text><!--MD5=[381c53986a85dce6cdc4a4e35ae18ff4]
  25 +link Gateway to MetaMetaPersistence--><path d="M281.834,162.623 C276.582,165.628 271.358,168.789 266.5,172 C239.394,189.914 210.743,213.401 190.732,230.645 " fill="none" id="Gateway-MetaMetaPersistence" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f6f6703481f44d2c177340b7baa47857]
  26 +link Gateway to Registry--><path d="M324.5,164.14 C324.5,183.64 324.5,211.4 324.5,230.891 " fill="none" id="Gateway-Registry" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="315.525" y="183.9353">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="315.475" y="219.8751">1</text><!--MD5=[1310d7491568d7a02cb0e17253404b68]
  27 +link Registry to MetaPersistence--><path d="M309.094,279 C297.267,296.658 281.002,320.941 269.121,338.678 " fill="none" id="Registry-MetaPersistence" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[5cead8586ac6af575e2328a909d43534]
  28 +reverse link Service to MensaService--><path d="M366.694,403.6557 C356.165,418.1498 344.601,434.0681 335.441,446.6784 " fill="none" id="Service&lt;-MensaService" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="361.374,399.0677,378.792,387,372.701,407.2958,361.374,399.0677" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[357541afbd081577ed9e150c91979a82]
  29 +reverse link Service to WetterService--><path d="M424.306,403.6557 C434.835,418.1498 446.399,434.0681 455.559,446.6784 " fill="none" id="Service&lt;-WetterService" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="418.299,407.2958,412.208,387,429.626,399.0677,418.299,407.2958" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[3a106bbeaef6a98b94f0ef4eec5eba62]
  30 +link Registry to Service--><path d="M339.906,279 C351.733,296.658 367.998,320.941 379.879,338.678 " fill="none" id="Registry-Service" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="334.8288" y="299.1558">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="368.2183" y="328.0045">*</text><!--MD5=[5e9735b3c6e9b416b4a7885d51d438ae]
  31 +@startuml
  32 +abstract class Bot
  33 +class TelegramBot
  34 +class TwitterBot
  35 +
  36 +Bot <|- - TelegramBot
  37 +Bot <|- - TwitterBot
  38 +
  39 +class Gateway
  40 +class MetaMetaPersistence
  41 +class MetaPersistence
  42 +
  43 +package nlp {
  44 +
  45 +class "rasa-ai"
  46 +class "drools"
  47 +class "Google Cloud Speech API"
  48 +class "Google Cloud Natural Language"
  49 +class "Microsoft Azure Spracherkennungs-API"
  50 +class "Microsoft Azure Textanalyse-API"
  51 +"Google Cloud Speech API" -> "Google Cloud Natural Language"
  52 +"Microsoft Azure Spracherkennungs-API" -> "Microsoft Azure Textanalyse-API"
  53 +}
  54 +
  55 +Gateway - - nlp
  56 +
  57 +Bot "1..*" - - Gateway
  58 +
  59 +Gateway - - MetaMetaPersistence
  60 +
  61 +class Registry
  62 +
  63 +Gateway "1" - - "1" Registry
  64 +Registry - - MetaPersistence
  65 +
  66 +abstract class Service
  67 +
  68 +class MensaService
  69 +Service <|- - MensaService
  70 +Service <|- - WetterService
  71 +
  72 +Registry "1" - - "*" Service
  73 +@enduml
  74 +
  75 +PlantUML version 1.2019.11(Sun Sep 22 10:02:15 UTC 2019)
  76 +(GPL source distribution)
  77 +Java Runtime: OpenJDK Runtime Environment
  78 +JVM: OpenJDK 64-Bit Server VM
  79 +Java Version: 1.8.0_212-8u212-b01-1~deb9u1-b01
  80 +Operating System: Linux
  81 +Default Encoding: UTF-8
  82 +Language: en
  83 +Country: null
  84 +--></g></svg>
0 85 \ No newline at end of file
... ...