Commit 60ae7aaee1b17cf6c60a3aedeaa6a322a78409de

Authored by Neocortexxx
2 parents 95ac8082 209f860a

Merge branch 'Scheduler' into development

# Conflicts:
#	docker/docker-compose.yml
Showing 32 changed files with 119 additions and 1826 deletions
.gitignore
... ... @@ -24,3 +24,4 @@ BeuthBot.iml
24 24 target/
25 25 build
26 26 out
  27 +*.iml
... ...
docker/docker-compose.yml
... ... @@ -32,8 +32,7 @@ services:
32 32 volumes:
33 33 - ./rasa_nlu/volumes/data/api/:/app/data/api
34 34 - ./rasa_nlu/volumes/logs/:/app/logs/
35   - command: python -m rasa_nlu.server -c config/chatbot_config.json --server_model_dirs=default
36   -
  35 + command: python -m rasa_nlu.server -c config/chatbot_config.json #--server_model_dirs=default
37 36 postgres-db:
38 37 image: postgres
39 38 ports:
... ... @@ -50,4 +49,4 @@ services:
50 49 container_name: adminer_dbmanagement
51 50 image: adminer
52 51 ports:
53   - - "8081:8080"
54 52 \ No newline at end of file
  53 + - "8081:8080"
... ...
docker/rasa_nlu/Dockerfile
... ... @@ -16,7 +16,7 @@ WORKDIR ${RASA_NLU_HOME}
16 16 # Install rasa and its dependencies
17 17 RUN pip install -U spacy scikit-learn scipy sklearn-crfsuite
18 18 RUN python -m spacy download de
19   -RUN pip install rasa_nlu==0.9.1
  19 +RUN pip install rasa_nlu==0.10.6
20 20  
21 21 # train the model
22 22 COPY rasa_config.json config/chatbot_config.json
... ... @@ -24,6 +24,6 @@ COPY volumes/data/api/ data/api
24 24 RUN python -m rasa_nlu.train -c config/chatbot_config.json
25 25  
26 26 # Cleanup
27   -RUN mv models/model_* models/default && rm -r data/api
  27 +#RUN mv models/model_* models/default && rm -r data/api
28 28  
29 29 EXPOSE 5000
30 30 \ No newline at end of file
... ...
docker/rasa_nlu/volumes/data/api/agent.json
... ... @@ -5,6 +5,7 @@
5 5 "smalltalk-domain-on",
6 6 "smalltalk-fulfillment-on"
7 7 ],
  8 + "disableInteractionLogs": false,
8 9 "googleAssistant": {
9 10 "googleAssistantCompatible": false,
10 11 "welcomeIntentSignInRequired": false,
... ... @@ -22,9 +23,13 @@
22 23 "defaultTimezone": "Europe/Madrid",
23 24 "webhook": {
24 25 "available": false,
25   - "useForDomains": false
  26 + "useForDomains": false,
  27 + "cloudFunctionsEnabled": false,
  28 + "cloudFunctionsInitialized": false
26 29 },
27 30 "isPrivate": false,
28 31 "customClassifierMode": "use.after",
29   - "mlMinConfidence": 0.2
  32 + "mlMinConfidence": 0.2,
  33 + "supportedLanguages": [],
  34 + "enableOnePlatformApi": false
30 35 }
31 36 \ No newline at end of file
... ...
docker/rasa_nlu/volumes/data/api/entities/date.json
... ... @@ -2,68 +2,6 @@
2 2 "id": "7d5ec91f-9608-4a88-aa16-91f02a60ce60",
3 3 "name": "date",
4 4 "isOverridable": true,
5   - "entries": [
6   - {
7   - "value": "today",
8   - "synonyms": [
9   - "today",
10   - "heute",
11   - "heut",
12   - "heutigen"
13   - ]
14   - },
15   - {
16   - "value": "tomorrow",
17   - "synonyms": [
18   - "tomorrow",
19   - "morgen"
20   - ]
21   - },
22   - {
23   - "value": "dayaftertomorrow",
24   - "synonyms": [
25   - "übermorgen",
26   - "day after tomorrow"
27   - ]
28   - },
29   - {
30   - "value": "Montag",
31   - "synonyms": [
32   - "Montag"
33   - ]
34   - },
35   - {
36   - "value": "Dienstag",
37   - "synonyms": [
38   - "Dienstag"
39   - ]
40   - },
41   - {
42   - "value": "Mittwoch",
43   - "synonyms": [
44   - "Mittwoch"
45   - ]
46   - },
47   - {
48   - "value": "Donnerstag",
49   - "synonyms": [
50   - "Donnerstag"
51   - ]
52   - },
53   - {
54   - "value": "Freitag",
55   - "synonyms": [
56   - "Freitag"
57   - ]
58   - },
59   - {
60   - "value": "yesterday",
61   - "synonyms": [
62   - "gestern",
63   - "yesterday"
64   - ]
65   - }
66   - ],
67 5 "isEnum": false,
68 6 "automatedExpansion": false
69 7 }
70 8 \ No newline at end of file
... ...
docker/rasa_nlu/volumes/data/api/entities/dishcategory.json
... ... @@ -2,67 +2,6 @@
2 2 "id": "8a0a0ef7-e6b4-4abb-814d-482d5135bbec",
3 3 "name": "dishcategory",
4 4 "isOverridable": true,
5   - "entries": [
6   - {
7   - "value": "vorspeisen",
8   - "synonyms": [
9   - "vorspeisen",
10   - "Vorspeise",
11   - "Vorspeisen"
12   - ]
13   - },
14   - {
15   - "value": "salate",
16   - "synonyms": [
17   - "salate",
18   - "Salat",
19   - "Salate"
20   - ]
21   - },
22   - {
23   - "value": "suppen",
24   - "synonyms": [
25   - "suppen",
26   - "Suppe",
27   - "Suppen"
28   - ]
29   - },
30   - {
31   - "value": "aktionen",
32   - "synonyms": [
33   - "aktionen",
34   - "Aktion",
35   - "Aktionen"
36   - ]
37   - },
38   - {
39   - "value": "essen",
40   - "synonyms": [
41   - "Hauptgerichte",
42   - "Hauptspeise",
43   - "Hauptspeisen"
44   - ]
45   - },
46   - {
47   - "value": "beilagen",
48   - "synonyms": [
49   - "beilagen",
50   - "Beilage",
51   - "Beilagen"
52   - ]
53   - },
54   - {
55   - "value": "desserts",
56   - "synonyms": [
57   - "desserts",
58   - "Dessert",
59   - "Nachspeise",
60   - "Nachtisch",
61   - "Nachspeisen",
62   - "Desserts"
63   - ]
64   - }
65   - ],
66 5 "isEnum": false,
67 6 "automatedExpansion": false
68 7 }
69 8 \ No newline at end of file
... ...
docker/rasa_nlu/volumes/data/api/entities/dishtype.json
... ... @@ -2,34 +2,6 @@
2 2 "id": "4f3135fd-2367-4e89-8860-a80582f4523a",
3 3 "name": "dishtype",
4 4 "isOverridable": true,
5   - "entries": [
6   - {
7   - "value": "vegan",
8   - "synonyms": [
9   - "vegan",
10   - "veganes",
11   - "veganer",
12   - "vegane"
13   - ]
14   - },
15   - {
16   - "value": "vegetarian",
17   - "synonyms": [
18   - "vegetarisch",
19   - "vegetarisches",
20   - "vegetarier",
21   - "ohne Fleisch",
22   - "kein Fleisch",
23   - "vegetarische"
24   - ]
25   - },
26   - {
27   - "value": "bio",
28   - "synonyms": [
29   - "bio"
30   - ]
31   - }
32   - ],
33 5 "isEnum": false,
34 6 "automatedExpansion": false
35 7 }
36 8 \ No newline at end of file
... ...
docker/rasa_nlu/volumes/data/api/entities/healthy.json
... ... @@ -2,35 +2,6 @@
2 2 "id": "c61797ac-dedc-4881-8863-4c656eb47359",
3 3 "name": "healthy",
4 4 "isOverridable": true,
5   - "entries": [
6   - {
7   - "value": "green",
8   - "synonyms": [
9   - "grün",
10   - "gesund",
11   - "gesunde",
12   - "gesundes",
13   - "Gruen"
14   - ]
15   - },
16   - {
17   - "value": "red",
18   - "synonyms": [
19   - "rot",
20   - "ungesund",
21   - "ungesunde",
22   - "Ungesundes",
23   - "fettig"
24   - ]
25   - },
26   - {
27   - "value": "yellow",
28   - "synonyms": [
29   - "gelb",
30   - "gelbe"
31   - ]
32   - }
33   - ],
34 5 "isEnum": false,
35 6 "automatedExpansion": false
36 7 }
37 8 \ No newline at end of file
... ...
docker/rasa_nlu/volumes/data/api/entities/ingredients.json
... ... @@ -2,29 +2,6 @@
2 2 "id": "a940b7e1-44fe-4ec6-8a2f-e330821c6a07",
3 3 "name": "ingredients",
4 4 "isOverridable": true,
5   - "entries": [
6   - {
7   - "value": "laktosefree",
8   - "synonyms": [
9   - "laktosefrei",
10   - "ohne Laktose"
11   - ]
12   - },
13   - {
14   - "value": "glutenfree",
15   - "synonyms": [
16   - "glutenfrei",
17   - "ohne Gluten"
18   - ]
19   - },
20   - {
21   - "value": "sugarfree",
22   - "synonyms": [
23   - "zuckerfrei",
24   - "ohne Zucker"
25   - ]
26   - }
27   - ],
28 5 "isEnum": false,
29 6 "automatedExpansion": false
30 7 }
31 8 \ No newline at end of file
... ...
docker/rasa_nlu/volumes/data/api/entities/price.json
... ... @@ -2,24 +2,6 @@
2 2 "id": "92b3c202-7cd4-43b1-a9fb-856a20c2ff87",
3 3 "name": "price",
4 4 "isOverridable": true,
5   - "entries": [
6   - {
7   - "value": "howmuch",
8   - "synonyms": [
9   - "howmuch",
10   - "Was kostet",
11   - "wie teuer"
12   - ]
13   - },
14   - {
15   - "value": "under",
16   - "synonyms": [
17   - "unter",
18   - "under",
19   - "weniger als"
20   - ]
21   - }
22   - ],
23 5 "isEnum": false,
24 6 "automatedExpansion": false
25 7 }
26 8 \ No newline at end of file
... ...
docker/rasa_nlu/volumes/data/api/intents/Bye.json
1 1 {
2   - "userSays": [
3   - {
4   - "id": "96688a3e-5905-4a32-8887-99735525f0b5",
5   - "data": [
6   - {
7   - "text": "Tschüss."
8   - }
9   - ],
10   - "isTemplate": false,
11   - "count": 0
12   - },
13   - {
14   - "id": "540dc163-d340-4ccf-ac32-2a4b46af9ad7",
15   - "data": [
16   - {
17   - "text": "Bye",
18   - "userDefined": false
19   - }
20   - ],
21   - "isTemplate": false,
22   - "count": 1
23   - },
24   - {
25   - "id": "45422bce-8688-45e8-bcf0-88a4db4c3fb0",
26   - "data": [
27   - {
28   - "text": "Auf Wiedersehen"
29   - }
30   - ],
31   - "isTemplate": false,
32   - "count": 0
33   - },
34   - {
35   - "id": "8ec89276-d8f4-4b92-bd5f-8d74e2fa7258",
36   - "data": [
37   - {
38   - "text": "tschüss"
39   - }
40   - ],
41   - "isTemplate": false,
42   - "count": 0
43   - },
44   - {
45   - "id": "7667c3bf-c8ea-4628-a09c-84f9acbf5414",
46   - "data": [
47   - {
48   - "text": "adieu"
49   - }
50   - ],
51   - "isTemplate": false,
52   - "count": 0
53   - },
54   - {
55   - "id": "daeb2cdc-a213-40b4-9dd1-3ad60f39d64a",
56   - "data": [
57   - {
58   - "text": "ciao"
59   - }
60   - ],
61   - "isTemplate": false,
62   - "count": 0
63   - },
64   - {
65   - "id": "88a42bc6-db2f-4826-aea6-abb434ef07bb",
66   - "data": [
67   - {
68   - "text": "lebe wohl"
69   - }
70   - ],
71   - "isTemplate": false,
72   - "count": 0
73   - }
74   - ],
75 2 "id": "31c24025-1d89-4dab-8f61-fe14a0687129",
76 3 "name": "Bye",
77 4 "auto": true,
... ... @@ -84,10 +11,12 @@
84 11 "messages": [
85 12 {
86 13 "type": 0,
  14 + "lang": "de",
87 15 "speech": []
88 16 }
89 17 ],
90   - "defaultResponsePlatforms": {}
  18 + "defaultResponsePlatforms": {},
  19 + "speech": []
91 20 }
92 21 ],
93 22 "priority": 500000,
... ...
docker/rasa_nlu/volumes/data/api/intents/Fallback.json
1 1 {
2   - "userSays": [],
3 2 "id": "27e9cc67-9092-47a7-a09a-04a876334133",
4 3 "name": "Fallback",
5 4 "auto": false,
... ... @@ -10,7 +9,8 @@
10 9 "affectedContexts": [],
11 10 "parameters": [],
12 11 "messages": [],
13   - "defaultResponsePlatforms": {}
  12 + "defaultResponsePlatforms": {},
  13 + "speech": []
14 14 }
15 15 ],
16 16 "priority": 500000,
... ...
docker/rasa_nlu/volumes/data/api/intents/Hello.json
1 1 {
2   - "userSays": [
3   - {
4   - "id": "a46d8cf9-13f8-4f7e-a6b6-701b616d3b1b",
5   - "data": [
6   - {
7   - "text": "Mahlzeit!"
8   - }
9   - ],
10   - "isTemplate": false,
11   - "count": 2
12   - },
13   - {
14   - "id": "7e2cb139-ac8c-48f8-937f-5e561d7a5b21",
15   - "data": [
16   - {
17   - "text": "Hallo"
18   - }
19   - ],
20   - "isTemplate": false,
21   - "count": 1
22   - },
23   - {
24   - "id": "c071bead-c204-416b-b6ed-74965cb1f12c",
25   - "data": [
26   - {
27   - "text": "Hallo bot."
28   - }
29   - ],
30   - "isTemplate": false,
31   - "count": 0
32   - },
33   - {
34   - "id": "6aec7f9f-1ea8-4004-a6e2-eb0dd8274d5f",
35   - "data": [
36   - {
37   - "text": "hallo"
38   - }
39   - ],
40   - "isTemplate": false,
41   - "count": 7
42   - },
43   - {
44   - "id": "55cd7273-87cf-472a-89b7-2664fd45982c",
45   - "data": [
46   - {
47   - "text": "Hallo Bot",
48   - "userDefined": false
49   - }
50   - ],
51   - "isTemplate": false,
52   - "count": 0
53   - },
54   - {
55   - "id": "fe2d3681-3461-4e71-a80a-f3755d03db89",
56   - "data": [
57   - {
58   - "text": "Hallo du",
59   - "userDefined": false
60   - }
61   - ],
62   - "isTemplate": false,
63   - "count": 0
64   - },
65   - {
66   - "id": "f39e8b17-6baf-4a7f-a130-029ed0486190",
67   - "data": [
68   - {
69   - "text": "Heyho"
70   - }
71   - ],
72   - "isTemplate": false,
73   - "count": 2
74   - },
75   - {
76   - "id": "8a034279-2ae7-41f8-ace2-0be60fc11843",
77   - "data": [
78   - {
79   - "text": "Hallo Welt"
80   - }
81   - ],
82   - "isTemplate": false,
83   - "count": 0
84   - },
85   - {
86   - "id": "27ade6fd-22a8-4026-80a0-dc464a133e5d",
87   - "data": [
88   - {
89   - "text": "Guten Tag"
90   - }
91   - ],
92   - "isTemplate": false,
93   - "count": 1
94   - },
95   - {
96   - "id": "8251e097-7f65-46c8-82d7-4521360823f8",
97   - "data": [
98   - {
99   - "text": "Hello",
100   - "userDefined": false
101   - }
102   - ],
103   - "isTemplate": false,
104   - "count": 1
105   - },
106   - {
107   - "id": "7c16e6f9-df2c-44f7-ba9a-36315a5e9f47",
108   - "data": [
109   - {
110   - "text": "Hello Bot",
111   - "userDefined": false
112   - }
113   - ],
114   - "isTemplate": false,
115   - "count": 0
116   - },
117   - {
118   - "id": "535a9275-ab39-43f9-87df-431be10d09d5",
119   - "data": [
120   - {
121   - "text": "Tag"
122   - }
123   - ],
124   - "isTemplate": false,
125   - "count": 0
126   - },
127   - {
128   - "id": "df882ea3-1cdb-4797-8d70-c3b661839f9b",
129   - "data": [
130   - {
131   - "text": "Servus"
132   - }
133   - ],
134   - "isTemplate": false,
135   - "count": 0
136   - },
137   - {
138   - "id": "0aa700e1-6b51-4921-8c2d-c294ef7769cd",
139   - "data": [
140   - {
141   - "text": "Moin"
142   - }
143   - ],
144   - "isTemplate": false,
145   - "count": 0
146   - },
147   - {
148   - "id": "9b7d796f-7c54-40f8-a04f-ceaea25d9b94",
149   - "data": [
150   - {
151   - "text": "Hi"
152   - }
153   - ],
154   - "isTemplate": false,
155   - "count": 0
156   - }
157   - ],
158 2 "id": "298d49fa-5122-430d-bd63-ee2d4316274d",
159 3 "name": "Hello",
160 4 "auto": true,
... ... @@ -167,10 +11,12 @@
167 11 "messages": [
168 12 {
169 13 "type": 0,
  14 + "lang": "de",
170 15 "speech": []
171 16 }
172 17 ],
173   - "defaultResponsePlatforms": {}
  18 + "defaultResponsePlatforms": {},
  19 + "speech": []
174 20 }
175 21 ],
176 22 "priority": 500000,
... ...
docker/rasa_nlu/volumes/data/api/intents/Start.json
1 1 {
2   - "userSays": [
3   - {
4   - "id": "999fcf31-211e-4c43-a48c-200b2cc4ad0f",
5   - "data": [
6   - {
7   - "text": "start",
8   - "userDefined": false
9   - }
10   - ],
11   - "isTemplate": false,
12   - "count": 1
13   - },
14   - {
15   - "id": "b0d6aef8-fa8d-4151-b1f2-41162374f60d",
16   - "data": [
17   - {
18   - "text": "/start"
19   - }
20   - ],
21   - "isTemplate": false,
22   - "count": 1
23   - },
24   - {
25   - "id": "a775b2f8-984a-4e4f-be8e-92dcf9d426a9",
26   - "data": [
27   - {
28   - "text": "Start"
29   - }
30   - ],
31   - "isTemplate": false,
32   - "count": 1
33   - }
34   - ],
35 2 "id": "fd44ae16-5a7d-40d6-9216-cf528db47b93",
36 3 "name": "Start",
37 4 "auto": true,
... ... @@ -44,9 +11,12 @@
44 11 "messages": [
45 12 {
46 13 "type": 0,
  14 + "lang": "de",
47 15 "speech": []
48 16 }
49   - ]
  17 + ],
  18 + "defaultResponsePlatforms": {},
  19 + "speech": []
50 20 }
51 21 ],
52 22 "priority": 500000,
... ...
docker/rasa_nlu/volumes/data/api/intents/showFood.json
1 1 {
2   - "userSays": [
3   - {
4   - "id": "fd32ca0d-bb7f-4d03-b1c8-5ad41ae4847a",
5   - "data": [
6   - {
7   - "text": "Bitte nur "
8   - },
9   - {
10   - "text": "vegetarisches",
11   - "alias": "dishtype",
12   - "meta": "@dishtype",
13   - "userDefined": false
14   - }
15   - ],
16   - "isTemplate": false,
17   - "count": 0
18   - },
19   - {
20   - "id": "7b2cce20-9ea4-4532-90f6-d86374d4ece6",
21   - "data": [
22   - {
23   - "text": "Schön "
24   - },
25   - {
26   - "text": "fettig",
27   - "alias": "healthy",
28   - "meta": "@healthy",
29   - "userDefined": false
30   - }
31   - ],
32   - "isTemplate": false,
33   - "count": 0
34   - },
35   - {
36   - "id": "56891d52-fe5c-4669-b4f4-20d394d0f291",
37   - "data": [
38   - {
39   - "text": "was gibt\u0027s zum "
40   - },
41   - {
42   - "text": "Nachtisch",
43   - "alias": "dishcategory",
44   - "meta": "@dishcategory",
45   - "userDefined": false
46   - },
47   - {
48   - "text": "?"
49   - }
50   - ],
51   - "isTemplate": false,
52   - "count": 0
53   - },
54   - {
55   - "id": "b85b0135-3a69-4564-9fea-d6dc168673c5",
56   - "data": [
57   - {
58   - "text": "Was gibt es "
59   - },
60   - {
61   - "text": "gesundes",
62   - "alias": "healthy",
63   - "meta": "@healthy",
64   - "userDefined": false
65   - }
66   - ],
67   - "isTemplate": false,
68   - "count": 0
69   - },
70   - {
71   - "id": "86306079-6fb2-4a85-a024-a415f67d17c2",
72   - "data": [
73   - {
74   - "text": "Wat gibts "
75   - },
76   - {
77   - "text": "gesundes",
78   - "alias": "healthy",
79   - "meta": "@healthy",
80   - "userDefined": false
81   - }
82   - ],
83   - "isTemplate": false,
84   - "count": 0
85   - },
86   - {
87   - "id": "d3bddb57-2a96-42d4-9517-2fe39b7eb81b",
88   - "data": [
89   - {
90   - "text": "Ick hab Knast"
91   - }
92   - ],
93   - "isTemplate": false,
94   - "count": 0
95   - },
96   - {
97   - "id": "762b3473-f577-4b6f-9130-4cc36c9fea6c",
98   - "data": [
99   - {
100   - "text": "Man...! Sach mir was es zu "
101   - },
102   - {
103   - "text": "essen",
104   - "meta": "@sys.ignore",
105   - "userDefined": false
106   - },
107   - {
108   - "text": " gibt!"
109   - }
110   - ],
111   - "isTemplate": false,
112   - "count": 0
113   - },
114   - {
115   - "id": "024e9b2b-6030-4e71-8a26-c1b2dcd302d2",
116   - "data": [
117   - {
118   - "text": "Zeig mir "
119   - },
120   - {
121   - "text": "futter",
122   - "meta": "@sys.ignore",
123   - "userDefined": false
124   - }
125   - ],
126   - "isTemplate": false,
127   - "count": 0
128   - },
129   - {
130   - "id": "37884b73-ef5c-4788-8286-48741d1687ab",
131   - "data": [
132   - {
133   - "text": "Was gibbet"
134   - }
135   - ],
136   - "isTemplate": false,
137   - "count": 0
138   - },
139   - {
140   - "id": "900ae728-5008-4ac1-a27e-9a5663b1f8a0",
141   - "data": [
142   - {
143   - "text": "Grün",
144   - "alias": "healthy",
145   - "meta": "@healthy",
146   - "userDefined": false
147   - }
148   - ],
149   - "isTemplate": false,
150   - "count": 0
151   - },
152   - {
153   - "id": "add47ed0-8ef8-4ff9-90e6-acdc33ea4b3c",
154   - "data": [
155   - {
156   - "text": "Was gibt es "
157   - },
158   - {
159   - "text": "heute",
160   - "alias": "date",
161   - "meta": "@date",
162   - "userDefined": false
163   - },
164   - {
165   - "text": " zu Essen?"
166   - }
167   - ],
168   - "isTemplate": false,
169   - "count": 0
170   - },
171   - {
172   - "id": "76068d03-8dfa-4053-a4d7-f9580d7c1269",
173   - "data": [
174   - {
175   - "text": "Gibt es irgendetwas "
176   - },
177   - {
178   - "text": "vegetarisches",
179   - "alias": "dishtype",
180   - "meta": "@dishtype",
181   - "userDefined": false
182   - },
183   - {
184   - "text": "?"
185   - }
186   - ],
187   - "isTemplate": false,
188   - "count": 0
189   - },
190   - {
191   - "id": "4fe7e652-929b-4a3b-840b-b24e1ecb9fcc",
192   - "data": [
193   - {
194   - "text": "Was gibt es "
195   - },
196   - {
197   - "text": "morgen",
198   - "alias": "date",
199   - "meta": "@date",
200   - "userDefined": false
201   - },
202   - {
203   - "text": " "
204   - },
205   - {
206   - "text": "veganes",
207   - "alias": "dishtype",
208   - "meta": "@dishtype",
209   - "userDefined": false
210   - },
211   - {
212   - "text": "?"
213   - }
214   - ],
215   - "isTemplate": false,
216   - "count": 0
217   - },
218   - {
219   - "id": "7bac360a-65db-4698-b9fc-81024a052f7c",
220   - "data": [
221   - {
222   - "text": "Was gibt es für "
223   - },
224   - {
225   - "text": "Suppen",
226   - "alias": "dishcategory",
227   - "meta": "@dishcategory",
228   - "userDefined": false
229   - }
230   - ],
231   - "isTemplate": false,
232   - "count": 0
233   - },
234   - {
235   - "id": "1407d888-0d5a-451b-8d30-6c804dec373c",
236   - "data": [
237   - {
238   - "text": "Welche "
239   - },
240   - {
241   - "text": "Vorspeisen",
242   - "alias": "dishcategory",
243   - "meta": "@dishcategory",
244   - "userDefined": false
245   - },
246   - {
247   - "text": " gibt es "
248   - },
249   - {
250   - "text": "heute",
251   - "alias": "date",
252   - "meta": "@date",
253   - "userDefined": false
254   - },
255   - {
256   - "text": "?"
257   - }
258   - ],
259   - "isTemplate": false,
260   - "count": 0
261   - },
262   - {
263   - "id": "d7fc8387-d1c6-4ed2-aeeb-a12466ebb7bb",
264   - "data": [
265   - {
266   - "text": "Was gibt es "
267   - },
268   - {
269   - "text": "heute",
270   - "alias": "date",
271   - "meta": "@date",
272   - "userDefined": false
273   - },
274   - {
275   - "text": " zu essen?"
276   - }
277   - ],
278   - "isTemplate": false,
279   - "count": 0
280   - },
281   - {
282   - "id": "3589c50d-8ec0-4276-aa21-a88145530ddb",
283   - "data": [
284   - {
285   - "text": "Was gibt es zu essen?"
286   - }
287   - ],
288   - "isTemplate": false,
289   - "count": 0
290   - },
291   - {
292   - "id": "1f9d235d-eaae-4999-b5d2-0d19720e90e9",
293   - "data": [
294   - {
295   - "text": "Zeige mir "
296   - },
297   - {
298   - "text": "gesunde",
299   - "alias": "healthy",
300   - "meta": "@healthy",
301   - "userDefined": true
302   - },
303   - {
304   - "text": " "
305   - },
306   - {
307   - "text": "Hauptgerichte",
308   - "alias": "dishcategory",
309   - "meta": "@dishcategory",
310   - "userDefined": true
311   - },
312   - {
313   - "text": " "
314   - },
315   - {
316   - "text": "unter",
317   - "alias": "price",
318   - "meta": "@price",
319   - "userDefined": true
320   - },
321   - {
322   - "text": " "
323   - },
324   - {
325   - "text": "5",
326   - "meta": "@sys.ignore",
327   - "userDefined": true
328   - },
329   - {
330   - "text": " Euro"
331   - }
332   - ],
333   - "isTemplate": false,
334   - "count": 0
335   - },
336   - {
337   - "id": "8efb4896-f4ff-4864-af90-7e2b594afd4a",
338   - "data": [
339   - {
340   - "text": "Gibt es "
341   - },
342   - {
343   - "text": "heute",
344   - "alias": "date",
345   - "meta": "@date",
346   - "userDefined": true
347   - },
348   - {
349   - "text": " "
350   - },
351   - {
352   - "text": "Hauptgerichte",
353   - "alias": "dishcategory",
354   - "meta": "@dishcategory",
355   - "userDefined": true
356   - },
357   - {
358   - "text": "?"
359   - }
360   - ],
361   - "isTemplate": false,
362   - "count": 0
363   - },
364   - {
365   - "id": "daab71ce-3882-42e9-8749-30cb4e1b41ee",
366   - "data": [
367   - {
368   - "text": "Gibt es "
369   - },
370   - {
371   - "text": "heute",
372   - "alias": "date",
373   - "meta": "@date",
374   - "userDefined": true
375   - },
376   - {
377   - "text": " "
378   - },
379   - {
380   - "text": "vegetarische",
381   - "alias": "dishtype",
382   - "meta": "@dishtype",
383   - "userDefined": true
384   - },
385   - {
386   - "text": " "
387   - },
388   - {
389   - "text": "Hauptgerichte",
390   - "alias": "dishcategory",
391   - "meta": "@dishcategory",
392   - "userDefined": true
393   - },
394   - {
395   - "text": "?"
396   - }
397   - ],
398   - "isTemplate": false,
399   - "count": 0
400   - },
401   - {
402   - "id": "ca1f84cc-504e-4c2c-9ba4-b6917653d396",
403   - "data": [
404   - {
405   - "text": "Was für "
406   - },
407   - {
408   - "text": "Hauptgerichte",
409   - "alias": "dishcategory",
410   - "meta": "@dishcategory",
411   - "userDefined": true
412   - },
413   - {
414   - "text": " gibt es "
415   - },
416   - {
417   - "text": "heute",
418   - "alias": "date",
419   - "meta": "@date",
420   - "userDefined": true
421   - },
422   - {
423   - "text": "?"
424   - }
425   - ],
426   - "isTemplate": false,
427   - "count": 0
428   - },
429   - {
430   - "id": "3635fca1-e08b-49e2-93f5-754244a0b895",
431   - "data": [
432   - {
433   - "text": "Zeige mir "
434   - },
435   - {
436   - "text": "Suppen",
437   - "alias": "dishcategory",
438   - "meta": "@dishcategory",
439   - "userDefined": true
440   - },
441   - {
442   - "text": " für "
443   - },
444   - {
445   - "text": "weniger als",
446   - "alias": "price",
447   - "meta": "@price",
448   - "userDefined": true
449   - },
450   - {
451   - "text": " "
452   - },
453   - {
454   - "text": "2",
455   - "meta": "@sys.ignore",
456   - "userDefined": true
457   - },
458   - {
459   - "text": "€"
460   - }
461   - ],
462   - "isTemplate": false,
463   - "count": 0
464   - },
465   - {
466   - "id": "68051902-f5a0-4c6e-8233-f390cd37299e",
467   - "data": [
468   - {
469   - "text": "Zeige "
470   - },
471   - {
472   - "text": "Hauptgerichte",
473   - "alias": "dishcategory",
474   - "meta": "@dishcategory",
475   - "userDefined": true
476   - },
477   - {
478   - "text": " unter "
479   - },
480   - {
481   - "text": "5",
482   - "meta": "@sys.ignore",
483   - "userDefined": true
484   - },
485   - {
486   - "text": " Euro"
487   - }
488   - ],
489   - "isTemplate": false,
490   - "count": 0
491   - },
492   - {
493   - "id": "76436c32-a320-4e39-929e-74fd301ea362",
494   - "data": [
495   - {
496   - "text": "Was kostet "
497   - },
498   - {
499   - "text": "weniger als",
500   - "alias": "price",
501   - "meta": "@price",
502   - "userDefined": true
503   - },
504   - {
505   - "text": " "
506   - },
507   - {
508   - "text": "5",
509   - "meta": "@sys.ignore",
510   - "userDefined": true
511   - },
512   - {
513   - "text": "€?"
514   - }
515   - ],
516   - "isTemplate": false,
517   - "count": 0
518   - },
519   - {
520   - "id": "fcd4493e-a39e-457b-801b-9514d4312b8c",
521   - "data": [
522   - {
523   - "text": "Was gibt es heute in der Mensa "
524   - },
525   - {
526   - "text": "unter",
527   - "alias": "price",
528   - "meta": "@price",
529   - "userDefined": true
530   - },
531   - {
532   - "text": " "
533   - },
534   - {
535   - "text": "2",
536   - "meta": "@sys.ignore",
537   - "userDefined": true
538   - },
539   - {
540   - "text": " Euro?"
541   - }
542   - ],
543   - "isTemplate": false,
544   - "count": 0
545   - },
546   - {
547   - "id": "c7bccc6f-4bcd-43a7-bf82-6edf055fb9f1",
548   - "data": [
549   - {
550   - "text": "Wie teuer",
551   - "alias": "price",
552   - "meta": "@price",
553   - "userDefined": true
554   - },
555   - {
556   - "text": " ist ein großer "
557   - },
558   - {
559   - "text": "Salat",
560   - "alias": "dishcategory",
561   - "meta": "@dishcategory",
562   - "userDefined": true
563   - },
564   - {
565   - "text": "?"
566   - }
567   - ],
568   - "isTemplate": false,
569   - "count": 0
570   - },
571   - {
572   - "id": "76d924f8-3ebb-452b-834b-a701d0294112",
573   - "data": [
574   - {
575   - "text": "Was gibt es "
576   - },
577   - {
578   - "text": "über morgen",
579   - "alias": "date",
580   - "meta": "@date",
581   - "userDefined": true
582   - },
583   - {
584   - "text": " in der Mensa?"
585   - }
586   - ],
587   - "isTemplate": false,
588   - "count": 1
589   - },
590   - {
591   - "id": "03c11ea5-acca-4903-aee3-12ccc005fd27",
592   - "data": [
593   - {
594   - "text": "Was gibt es "
595   - },
596   - {
597   - "text": "morgen",
598   - "alias": "date",
599   - "meta": "@date",
600   - "userDefined": true
601   - },
602   - {
603   - "text": " zu essen?"
604   - }
605   - ],
606   - "isTemplate": false,
607   - "count": 0
608   - },
609   - {
610   - "id": "659ad693-d0bf-4586-a831-fb9fd83d2f57",
611   - "data": [
612   - {
613   - "text": "Was gibt es am "
614   - },
615   - {
616   - "text": "Dienstag",
617   - "alias": "date",
618   - "meta": "@date",
619   - "userDefined": true
620   - },
621   - {
622   - "text": " zu essen?"
623   - }
624   - ],
625   - "isTemplate": false,
626   - "count": 0
627   - },
628   - {
629   - "id": "dbfd7a39-dd3c-4d67-8190-5293d17efb72",
630   - "data": [
631   - {
632   - "text": "Was kostet",
633   - "alias": "price",
634   - "meta": "@price",
635   - "userDefined": true
636   - },
637   - {
638   - "text": " die "
639   - },
640   - {
641   - "text": "Currywurst",
642   - "alias": "ingredients",
643   - "meta": "@ingredients",
644   - "userDefined": true
645   - },
646   - {
647   - "text": "?"
648   - }
649   - ],
650   - "isTemplate": false,
651   - "count": 0
652   - },
653   - {
654   - "id": "e5883e1d-4fba-457a-93d1-8c42827864f3",
655   - "data": [
656   - {
657   - "text": "Habe Lust auf "
658   - },
659   - {
660   - "text": "Suppe",
661   - "alias": "dishcategory",
662   - "meta": "@dishcategory",
663   - "userDefined": true
664   - },
665   - {
666   - "text": ". Gibt es da heute was?"
667   - }
668   - ],
669   - "isTemplate": false,
670   - "count": 0
671   - },
672   - {
673   - "id": "9133cd15-77ae-456d-b645-f4cb006a6e88",
674   - "data": [
675   - {
676   - "text": "was gibt es "
677   - },
678   - {
679   - "text": "heute",
680   - "alias": "date",
681   - "meta": "@date",
682   - "userDefined": false
683   - },
684   - {
685   - "text": " in der mensa"
686   - }
687   - ],
688   - "isTemplate": false,
689   - "count": 23
690   - },
691   - {
692   - "id": "d9491ecb-a4ef-4890-8c11-e1a74e3f6821",
693   - "data": [
694   - {
695   - "text": "was gibt es "
696   - },
697   - {
698   - "text": "heute",
699   - "alias": "date",
700   - "meta": "@date",
701   - "userDefined": false
702   - },
703   - {
704   - "text": " "
705   - },
706   - {
707   - "text": "veganes",
708   - "alias": "dishtype",
709   - "meta": "@dishtype",
710   - "userDefined": false
711   - },
712   - {
713   - "text": " in der mensa"
714   - }
715   - ],
716   - "isTemplate": false,
717   - "count": 4
718   - },
719   - {
720   - "id": "23bbbd06-8919-49b4-8b77-f4f7167a71fa",
721   - "data": [
722   - {
723   - "text": "Was gibt es "
724   - },
725   - {
726   - "text": "morgen",
727   - "alias": "date",
728   - "meta": "@date",
729   - "userDefined": false
730   - },
731   - {
732   - "text": " für "
733   - },
734   - {
735   - "text": "vegane",
736   - "alias": "dishtype",
737   - "meta": "@dishtype",
738   - "userDefined": true
739   - },
740   - {
741   - "text": " Gerichte?"
742   - }
743   - ],
744   - "isTemplate": false,
745   - "count": 2
746   - },
747   - {
748   - "id": "d288cb87-12fc-4875-947d-71d6094690ab",
749   - "data": [
750   - {
751   - "text": "Was gibt es "
752   - },
753   - {
754   - "text": "heute",
755   - "alias": "date",
756   - "meta": "@date",
757   - "userDefined": false
758   - },
759   - {
760   - "text": " "
761   - },
762   - {
763   - "text": "vegetarisches",
764   - "alias": "dishtype",
765   - "meta": "@dishtype",
766   - "userDefined": true
767   - },
768   - {
769   - "text": " in der Mensa?"
770   - }
771   - ],
772   - "isTemplate": false,
773   - "count": 1
774   - },
775   - {
776   - "id": "65af4b91-d76c-4c98-a1d4-5dda5534a374",
777   - "data": [
778   - {
779   - "text": "Hallo Bot was gibt es "
780   - },
781   - {
782   - "text": "morgen",
783   - "alias": "date",
784   - "meta": "@date",
785   - "userDefined": false
786   - },
787   - {
788   - "text": " in der Mensa."
789   - }
790   - ],
791   - "isTemplate": false,
792   - "count": 0
793   - },
794   - {
795   - "id": "b35b3289-8345-4cf2-8f59-736f2b61004f",
796   - "data": [
797   - {
798   - "text": "Zeige mir alle Gerichte."
799   - }
800   - ],
801   - "isTemplate": false,
802   - "count": 0
803   - },
804   - {
805   - "id": "70acf56e-8e2d-4d9a-b2d6-12cbc838b2ae",
806   - "data": [
807   - {
808   - "text": "Habe Lust auf "
809   - },
810   - {
811   - "text": "Suppe",
812   - "alias": "dishcategory",
813   - "meta": "@dishcategory",
814   - "userDefined": true
815   - },
816   - {
817   - "text": ". Gibt es da "
818   - },
819   - {
820   - "text": "heute",
821   - "alias": "date",
822   - "meta": "@date",
823   - "userDefined": false
824   - },
825   - {
826   - "text": " was?"
827   - }
828   - ],
829   - "isTemplate": false,
830   - "count": 0
831   - },
832   - {
833   - "id": "cce7e036-4b08-4a0c-9a4f-219db43e3a18",
834   - "data": [
835   - {
836   - "text": "Was gibt es "
837   - },
838   - {
839   - "text": "morgen",
840   - "alias": "date",
841   - "meta": "@date",
842   - "userDefined": false
843   - },
844   - {
845   - "text": " in der Mensa?"
846   - }
847   - ],
848   - "isTemplate": false,
849   - "count": 0
850   - },
851   - {
852   - "id": "c87d3aff-b7c1-4ae7-a85e-b7d51081cb7c",
853   - "data": [
854   - {
855   - "text": "Was gab es "
856   - },
857   - {
858   - "text": "gestern",
859   - "alias": "date",
860   - "meta": "@date",
861   - "userDefined": true
862   - },
863   - {
864   - "text": " in der Mensa?"
865   - }
866   - ],
867   - "isTemplate": false,
868   - "count": 0
869   - },
870   - {
871   - "id": "c37a2f00-d350-4670-b7bb-0b7018c8840a",
872   - "data": [
873   - {
874   - "text": "Was gibt es "
875   - },
876   - {
877   - "text": "übermorgen",
878   - "alias": "date",
879   - "meta": "@date",
880   - "userDefined": false
881   - },
882   - {
883   - "text": " in der Mensa?"
884   - }
885   - ],
886   - "isTemplate": false,
887   - "count": 1
888   - },
889   - {
890   - "id": "749033aa-ff61-4fc4-8105-2a6e89e9db64",
891   - "data": [
892   - {
893   - "text": "Was gibt es "
894   - },
895   - {
896   - "text": "Freitag",
897   - "alias": "date",
898   - "meta": "@date",
899   - "userDefined": true
900   - },
901   - {
902   - "text": " in der Mensa?"
903   - }
904   - ],
905   - "isTemplate": false,
906   - "count": 0
907   - },
908   - {
909   - "id": "5db0b947-d27d-452a-b84c-85440876d490",
910   - "data": [
911   - {
912   - "text": "Was gibt es "
913   - },
914   - {
915   - "text": "Donnerstag",
916   - "alias": "date",
917   - "meta": "@date",
918   - "userDefined": true
919   - },
920   - {
921   - "text": " in der Mensa?"
922   - }
923   - ],
924   - "isTemplate": false,
925   - "count": 0
926   - },
927   - {
928   - "id": "ea2aa68e-3bb7-4902-a56d-36f96275800a",
929   - "data": [
930   - {
931   - "text": "Was gibt es "
932   - },
933   - {
934   - "text": "Mittwoch",
935   - "alias": "date",
936   - "meta": "@date",
937   - "userDefined": true
938   - },
939   - {
940   - "text": " in der Mensa?"
941   - }
942   - ],
943   - "isTemplate": false,
944   - "count": 0
945   - },
946   - {
947   - "id": "63084452-c279-40ac-b6bc-3baf51fb144f",
948   - "data": [
949   - {
950   - "text": "Was gibt es "
951   - },
952   - {
953   - "text": "Dienstag",
954   - "alias": "date",
955   - "meta": "@date",
956   - "userDefined": true
957   - },
958   - {
959   - "text": " in der Mensa?"
960   - }
961   - ],
962   - "isTemplate": false,
963   - "count": 0
964   - },
965   - {
966   - "id": "9c35b6e8-ea88-4165-94b0-6be5f83ba76c",
967   - "data": [
968   - {
969   - "text": "Was gibt es "
970   - },
971   - {
972   - "text": "Montag",
973   - "alias": "date",
974   - "meta": "@date",
975   - "userDefined": true
976   - },
977   - {
978   - "text": " in der Mensa?"
979   - }
980   - ],
981   - "isTemplate": false,
982   - "count": 0
983   - },
984   - {
985   - "id": "900221fa-f3d3-463b-b224-604521c503e3",
986   - "data": [
987   - {
988   - "text": "Was gibt es "
989   - },
990   - {
991   - "text": "heute",
992   - "alias": "date",
993   - "meta": "@date",
994   - "userDefined": false
995   - },
996   - {
997   - "text": " in der Mensa?"
998   - }
999   - ],
1000   - "isTemplate": false,
1001   - "count": 0
1002   - },
1003   - {
1004   - "id": "0d64638d-fe5d-47c9-807d-1be539af917c",
1005   - "data": [
1006   - {
1007   - "text": "Was gibt es "
1008   - },
1009   - {
1010   - "text": "morgen",
1011   - "alias": "date",
1012   - "meta": "@date",
1013   - "userDefined": false
1014   - },
1015   - {
1016   - "text": " "
1017   - },
1018   - {
1019   - "text": "Ungesundes",
1020   - "alias": "healthy",
1021   - "meta": "@healthy",
1022   - "userDefined": false
1023   - },
1024   - {
1025   - "text": " in der Mensa?"
1026   - }
1027   - ],
1028   - "isTemplate": false,
1029   - "count": 0
1030   - },
1031   - {
1032   - "id": "8def9d65-14e0-4980-a57f-31be651b8e9f",
1033   - "data": [
1034   - {
1035   - "text": "Was gibt es "
1036   - },
1037   - {
1038   - "text": "heute",
1039   - "alias": "date",
1040   - "meta": "@date",
1041   - "userDefined": false
1042   - },
1043   - {
1044   - "text": " "
1045   - },
1046   - {
1047   - "text": "gesundes",
1048   - "alias": "healthy",
1049   - "meta": "@healthy",
1050   - "userDefined": false
1051   - },
1052   - {
1053   - "text": " in der Mensa?"
1054   - }
1055   - ],
1056   - "isTemplate": false,
1057   - "count": 0
1058   - },
1059   - {
1060   - "id": "abbe2177-b8e7-4801-9872-3c9a359fa7fb",
1061   - "data": [
1062   - {
1063   - "text": "Was gibt es "
1064   - },
1065   - {
1066   - "text": "morgen",
1067   - "alias": "date",
1068   - "meta": "@date",
1069   - "userDefined": false
1070   - },
1071   - {
1072   - "text": " "
1073   - },
1074   - {
1075   - "text": "vegetarisches",
1076   - "alias": "dishtype",
1077   - "meta": "@dishtype",
1078   - "userDefined": false
1079   - },
1080   - {
1081   - "text": " in der Mensa?"
1082   - }
1083   - ],
1084   - "isTemplate": false,
1085   - "count": 0
1086   - },
1087   - {
1088   - "id": "4255baf9-704a-4749-a441-0b24d8d716ad",
1089   - "data": [
1090   - {
1091   - "text": "Was gibt es "
1092   - },
1093   - {
1094   - "text": "morgen",
1095   - "alias": "date",
1096   - "meta": "@date",
1097   - "userDefined": false
1098   - },
1099   - {
1100   - "text": " "
1101   - },
1102   - {
1103   - "text": "gesundes",
1104   - "alias": "healthy",
1105   - "meta": "@healthy",
1106   - "userDefined": true
1107   - },
1108   - {
1109   - "text": " in der Mensa?"
1110   - }
1111   - ],
1112   - "isTemplate": false,
1113   - "count": 0
1114   - },
1115   - {
1116   - "id": "05c9c76f-e7cc-417f-990d-fc9c0c3d202a",
1117   - "data": [
1118   - {
1119   - "text": "Ick hab Hunger..."
1120   - }
1121   - ],
1122   - "isTemplate": false,
1123   - "count": 0
1124   - },
1125   - {
1126   - "id": "4c28ddca-a35e-475d-967b-bc513645cf19",
1127   - "data": [
1128   - {
1129   - "text": "Zeige Gerichte",
1130   - "meta": "@sys.ignore",
1131   - "userDefined": true
1132   - },
1133   - {
1134   - "text": " "
1135   - },
1136   - {
1137   - "text": "ohne Zucker",
1138   - "alias": "ingredients",
1139   - "meta": "@ingredients",
1140   - "userDefined": true
1141   - }
1142   - ],
1143   - "isTemplate": false,
1144   - "count": 1
1145   - },
1146   - {
1147   - "id": "823222a6-c09c-430d-8164-ac9398a3ae42",
1148   - "data": [
1149   - {
1150   - "text": "Zeige "
1151   - },
1152   - {
1153   - "text": "gesunde",
1154   - "alias": "healthy",
1155   - "meta": "@healthy",
1156   - "userDefined": true
1157   - },
1158   - {
1159   - "text": " Gerichte"
1160   - }
1161   - ],
1162   - "isTemplate": false,
1163   - "count": 0
1164   - },
1165   - {
1166   - "id": "26104cc6-c7d1-4952-bbe8-ea66c0a608b8",
1167   - "data": [
1168   - {
1169   - "text": "Ich habe "
1170   - },
1171   - {
1172   - "text": "Hunger",
1173   - "meta": "@sys.ignore",
1174   - "userDefined": true
1175   - }
1176   - ],
1177   - "isTemplate": false,
1178   - "count": 1
1179   - },
1180   - {
1181   - "id": "0e61a171-092e-4100-ae11-8e96e4c8eb8a",
1182   - "data": [
1183   - {
1184   - "text": "Was gibt es "
1185   - },
1186   - {
1187   - "text": "veganes",
1188   - "alias": "dishtype",
1189   - "meta": "@dishtype",
1190   - "userDefined": true
1191   - },
1192   - {
1193   - "text": "?"
1194   - }
1195   - ],
1196   - "isTemplate": false,
1197   - "count": 1
1198   - },
1199   - {
1200   - "id": "9b0d67ca-09ea-4d7d-bc72-342e0e7c5088",
1201   - "data": [
1202   - {
1203   - "text": "Wie ist der aktuelle "
1204   - },
1205   - {
1206   - "text": "Speiseplan",
1207   - "meta": "@sys.ignore",
1208   - "userDefined": true
1209   - }
1210   - ],
1211   - "isTemplate": false,
1212   - "count": 0
1213   - },
1214   - {
1215   - "id": "e4281c8d-f69d-4b90-a12f-d39edc59b052",
1216   - "data": [
1217   - {
1218   - "text": "Habe "
1219   - },
1220   - {
1221   - "text": "Hunger",
1222   - "meta": "@sys.ignore",
1223   - "userDefined": false
1224   - }
1225   - ],
1226   - "isTemplate": false,
1227   - "count": 1
1228   - },
1229   - {
1230   - "id": "f7606b89-2724-41cb-973f-34210fa976fc",
1231   - "data": [
1232   - {
1233   - "text": "Ich möchte gerne etwas "
1234   - },
1235   - {
1236   - "text": "ohne Fleisch",
1237   - "alias": "dishtype",
1238   - "meta": "@dishtype",
1239   - "userDefined": true
1240   - },
1241   - {
1242   - "text": " "
1243   - },
1244   - {
1245   - "text": "essen",
1246   - "meta": "@sys.ignore",
1247   - "userDefined": true
1248   - }
1249   - ],
1250   - "isTemplate": false,
1251   - "count": 0
1252   - },
1253   - {
1254   - "id": "5cb17168-c227-4ac9-ac83-520b70a5252c",
1255   - "data": [
1256   - {
1257   - "text": "Was ist "
1258   - },
1259   - {
1260   - "text": "vegetarisch",
1261   - "alias": "dishtype",
1262   - "meta": "@dishtype",
1263   - "userDefined": true
1264   - }
1265   - ],
1266   - "isTemplate": false,
1267   - "count": 1
1268   - },
1269   - {
1270   - "id": "1a749580-2d92-4526-9f9c-d5fa76e509eb",
1271   - "data": [
1272   - {
1273   - "text": "Was kann ich "
1274   - },
1275   - {
1276   - "text": "essen",
1277   - "meta": "@sys.ignore",
1278   - "userDefined": true
1279   - }
1280   - ],
1281   - "isTemplate": false,
1282   - "count": 0
1283   - },
1284   - {
1285   - "id": "f49e58ff-4782-4701-9661-07accede286c",
1286   - "data": [
1287   - {
1288   - "text": "Was gibt es "
1289   - },
1290   - {
1291   - "text": "heute",
1292   - "alias": "date",
1293   - "meta": "@date",
1294   - "userDefined": true
1295   - },
1296   - {
1297   - "text": " in der Mensa"
1298   - }
1299   - ],
1300   - "isTemplate": false,
1301   - "count": 2
1302   - }
1303   - ],
1304 2 "id": "fb49a221-02a6-4dff-8da4-9d31cf8f267b",
1305 3 "name": "showFood",
1306 4 "auto": true,
... ... @@ -1311,36 +9,42 @@
1311 9 "affectedContexts": [],
1312 10 "parameters": [
1313 11 {
  12 + "id": "7b5df330-e1fc-4bb4-86de-5a51be29c836",
1314 13 "dataType": "@date",
1315 14 "name": "date",
1316 15 "value": "$date",
1317 16 "isList": false
1318 17 },
1319 18 {
  19 + "id": "f3da5ec9-d3e8-4263-9bc3-7d600784bd0d",
1320 20 "dataType": "@dishtype",
1321 21 "name": "dishtype",
1322 22 "value": "$dishtype",
1323 23 "isList": false
1324 24 },
1325 25 {
  26 + "id": "499e1a33-d7ef-4446-ae7d-30ab94c9e3a5",
1326 27 "dataType": "@healthy",
1327 28 "name": "healthy",
1328 29 "value": "$healthy",
1329 30 "isList": false
1330 31 },
1331 32 {
  33 + "id": "f53af932-a4f2-4fe5-be2d-eb96a30e9400",
1332 34 "dataType": "@ingredients",
1333 35 "name": "ingredients",
1334 36 "value": "$ingredients",
1335 37 "isList": false
1336 38 },
1337 39 {
  40 + "id": "b8c8ab1d-4190-4200-9540-2893a084a1fd",
1338 41 "dataType": "@price",
1339 42 "name": "price",
1340 43 "value": "$price",
1341 44 "isList": false
1342 45 },
1343 46 {
  47 + "id": "92607e59-96c8-4c61-8dc0-670c7b8c2b43",
1344 48 "dataType": "@dishcategory",
1345 49 "name": "dishcategory",
1346 50 "value": "$dishcategory",
... ... @@ -1350,10 +54,12 @@
1350 54 "messages": [
1351 55 {
1352 56 "type": 0,
  57 + "lang": "de",
1353 58 "speech": []
1354 59 }
1355 60 ],
1356   - "defaultResponsePlatforms": {}
  61 + "defaultResponsePlatforms": {},
  62 + "speech": []
1357 63 }
1358 64 ],
1359 65 "priority": 500000,
... ...
docker/wildfly/volumes/conf/beuthbot.properties
1   -WEB_URL = https://yourdomain.com
  1 +WEB_URL = https://eoiqzqzwvt.localtunnel.me
2 2  
3 3  
4 4 # Webhook token you set in the Facebook App Settings
5   -FACEBOOK_WEBHOOK_TOKEN = bhtchatbot
  5 +FACEBOOK_WEBHOOK_TOKEN = local-beuth-bot
6 6  
7 7 # Facebook Message Token for your page
8   -FACEBOOK_BOT_TOKEN = XXXXX
9   -
10   -FACEBOOK_ACCESS_TOKEN = XXXXX|XXXXX-XXXXX
  8 +FACEBOOK_BOT_TOKEN = EAAX3bENbCzcBAGESpNG7XBqXiZBvOzwX7quURCwBlzpjFuWyd0JH8HFUrhmu167IjWBMPcSki8ZCtZAZBR0CS4ZAV1r4nAZCqayLZAbPxvJVIxVw0NHm9gG7f6qahc18Wh0IZCKkTUqYLPfGbZAbAUMHsbAAcbZBeTbBmVS6ydHtxLyvSCwXJgh1ob
11 9  
  10 +FACEBOOK_ACCESS_TOKEN = 1679419242122039|XVLpgA2YMXcwWQCg1Sj_hGKuNwM
12 11  
13 12  
14 13 # API.ai client token
... ... @@ -18,10 +17,9 @@ API_AI_TOKEN = XXXXX
18 17 # Your WebHook URL e.g.: https://yourdomain.com/webhook/
19 18 TELEGRAM_WEBHOOK_URL = /telegram/getUpdates
20 19  
21   -
22 20 # Your Bot Token e.g.: 000000000:AAAAa0aAA_aaA-Aaaa0A0Aa_a0aa0A0AAAA
23   -TELEGRAM_BOT_TOKEN = XXXXX:XXXXX-XXXXX
24   -
  21 +TELEGRAM_BOT_TOKEN = 452768505:AAHNXEYi9nSHcmVc4b3799I00uTZmK53wl4\
  22 +
25 23  
26 24  
27 25 BING_SPEECH_LOCALE = global
... ...
docu/attachmentstore.md
... ... @@ -10,7 +10,7 @@
10 10  
11 11 ## Description
12 12  
13   -The AttachmentStore represents a Service to persist Data in any variation. For example: an audio-file from a messenger need to be stored locally to be processed further.
  13 +The AttachmentStore represents a Service to persist Data in any variation. For example: an audio-file from a _messenger need to be stored locally to be processed further.
14 14  
15 15 ## Functionality
16 16  
... ...
docu/facebook.md
... ... @@ -27,7 +27,7 @@
27 27  
28 28 ##### ii. Facebook App
29 29  
30   -- after you created the app, add the 'messenger product' in the control panel on the left side
  30 +- after you created the app, add the '_messenger product' in the control panel on the left side
31 31 - generate an messaging key for your Facebook page and store it under 'FACEBOOK_BOT_TOKEN' in the config.properties
32 32 - setup a webhook by using your webhook address (https://yourdomain.com/rest/facebook/getUpdates) and the identification key set in 'FACEBOOK_WEBHOOK_TOKEN' in the config.properties
33 33 - subscribe the webhook to your Facebook page
... ...
gradle/wrapper/gradle-wrapper.properties
1   -#Thu May 04 17:39:29 CEST 2017
  1 +#Wed Nov 22 10:36:16 CET 2017
2 2 distributionBase=GRADLE_USER_HOME
3 3 distributionPath=wrapper/dists
4 4 zipStoreBase=GRADLE_USER_HOME
5 5 zipStorePath=wrapper/dists
6   -distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip
  6 +distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip
... ...
services/Common/src/main/java/de/bht/beuthbot/jms/TaskMessage.java
... ... @@ -24,6 +24,23 @@ public class TaskMessage implements ProcessQueueMessageProtocol {
24 24 private final String intent;
25 25 private final Map<String, String> entities;
26 26  
  27 + public TaskMessage(Long id, Target target, Long messageID, Long senderID, Messenger messenger, String text, List<Attachment> attachments, String intent, Map<String, String> entities) {
  28 + this.id = id;
  29 + this.target = target;
  30 + this.messageID = messageID;
  31 + this.senderID = senderID;
  32 + this.messenger = messenger;
  33 + this.text = text;
  34 + if (attachments == null) {
  35 + this.attachments = new ArrayList<Attachment>();
  36 + } else {
  37 + this.attachments = attachments;
  38 + }
  39 + this.intent = intent;
  40 + this.entities = entities;
  41 +
  42 + }
  43 +
27 44 public TaskMessage(final ProcessQueueMessageProtocol message) {
28 45 this.id = message.getId();
29 46 this.target = message.getTarget();
... ...
services/Common/src/main/java/de/bht/beuthbot/model/EntityName.java
... ... @@ -6,7 +6,7 @@ package de.bht.beuthbot.model;
6 6 public enum EntityName {
7 7  
8 8 DATE("date"), DISH_TYPE("dishtype"), HEALTHY("healthy"), INGREDIENTS("ingredients"), DISH_CATEGORY("dishcategory"),
9   - DISH_NAME("dishname");
  9 + DISH_NAME("dishname"), REMINDER_CYCLE("reminderCycle");
10 10  
11 11 private String text;
12 12  
... ...
services/Common/src/main/java/de/bht/beuthbot/model/Intent.java
... ... @@ -7,7 +7,7 @@ public enum Intent {
7 7  
8 8 SHOW_FOOD("showFood"), HELLO("Hello"), GREET("greet"), BYE("Bye"),
9 9 GOODBYE("goodbye"), RESTAURANT_SEARCH("restaurant_search"), START("Start"),
10   - SHOW_PRICE("showPrice"), FALLBACK("Fallback");
  10 + SHOW_PRICE("showPrice"), REMIND("remind"), CREATE_REMINDER("createReminder"), FALLBACK("Fallback");
11 11  
12 12 private String text;
13 13  
... ...
services/FaceBook/build.gradle
... ... @@ -2,26 +2,24 @@ apply plugin: &#39;java&#39;
2 2 apply plugin: 'war'
3 3 apply plugin: 'checkstyle'
4 4  
  5 +sourceCompatibility = 1.8
  6 +
5 7 repositories {
6 8 mavenCentral()
7 9 }
8 10  
9 11 dependencies {
10   -
11 12 compile project(':services:Common'),
12 13 "org.jboss.spec:jboss-javaee-7.0:1.1.0.Final",
13 14 "org.apache.httpcomponents:httpclient:4.5.3",
14 15 "org.apache.httpcomponents:httpmime:4.3.1",
15 16 "org.json:json:20160810"
16   -
17 17 providedCompile "org.slf4j:slf4j-api:1.7.25",
18 18 "org.jboss.resteasy:resteasy-client:3.1.3.Final",
19 19 "org.jboss.resteasy:resteasy-jaxrs-all:3.1.3.Final"
20 20  
21 21 }
22 22  
23   -sourceCompatibility = 1.8
24   -
25 23 war {
26 24 destinationDir new File(project.rootProject.projectDir, 'docker/wildfly/volumes/deployments/')
27 25 archiveName "facebook.war"
... ...
services/FaceBook/src/main/java/de/bht/beuthbot/messenger/facebook/FacebookReceiveAdapter.java
... ... @@ -106,7 +106,6 @@ public class FacebookReceiveAdapter {
106 106 processQueue.route(new TaskMessage(facebookBotMessage));
107 107  
108 108 }
109   -
110 109 }
111 110  
112 111 return "\nReceived\n";
... ...
services/MainBot/src/main/java/de/bht/beuthbot/drools/DroolsService.java
... ... @@ -72,11 +72,13 @@ public class DroolsService implements MessageListener {
72 72 @Override
73 73 public void onMessage(Message message) {
74 74 try {
  75 + logger.debug("Drools has received message");
75 76 ProcessQueueMessageProtocol botMessage = message.getBody(TaskMessage.class);
76 77  
77 78 DroolsMessage droolsMessage = doRules(botMessage);
78 79  
79 80 logger.info("ANSWER: " + botMessage.getText());
  81 + logger.debug("Entities: " + botMessage.getEntities().toString());
80 82  
81 83 if (droolsMessage.isAsVoiceMessage()) {
82 84 droolsMessage.setTarget(Target.NTSP);
... ...
services/MainBot/src/main/resources/de/bht/beuthbot/drools/Canteen.drl
... ... @@ -25,10 +25,20 @@ import java.time.LocalDate;
25 25  
26 26 import de.bht.beuthbot.canteen.model.Dish
27 27 import de.bht.beuthbot.canteen.model.DishType;
  28 +import de.bht.beuthbot.canteen.model.CanteenData;
28 29 import de.bht.beuthbot.model.Intent;
29 30 import de.bht.beuthbot.model.EntityName;
30 31 import de.bht.beuthbot.drools.model.DroolsMessage;
31 32  
  33 +import de.bht.beuthbot.scheduler.SchedulerBean
  34 +import de.bht.beuthbot.jms.TaskMessage
  35 +import de.bht.beuthbot.scheduler.model.ReminderCycle
  36 +import java.util.Date
  37 +import java.text.SimpleDateFormat
  38 +import java.text.ParseException
  39 +import de.bht.beuthbot.model.Messenger
  40 +import de.bht.beuthbot.scheduler.model.Reminder;
  41 +
32 42 global de.bht.beuthbot.canteen.model.CanteenData canteenData;
33 43  
34 44 // ---------------------- GREETING ------------------------------------
... ... @@ -105,6 +115,22 @@ rule &quot;Show price&quot;
105 115 modify(m){setText(canteenData.showPriceOfDish(m.getEntities().containsKey(EntityName.DISH_NAME.getText()) ? m.getEntities().get(EntityName.DISH_NAME.getText()) : ""))}
106 116 end
107 117  
  118 +// ---------------------------- CREATE REMINDER -----------------------------
  119 +
  120 +rule "Create reminder"
  121 + dialect "java"
  122 + when
  123 + m : DroolsMessage(getIntent().equals(Intent.CREATE_REMINDER.getText()))
  124 +
  125 + then
  126 + SchedulerBean s = new SchedulerBean();
  127 + TaskMessage message = new TaskMessage(m);
  128 + String messageText = s.createReminder(message);
  129 + m.setText(messageText);
  130 +
  131 +end
  132 +
  133 +
108 134 // --------------------------- Fallback -------------------------
109 135 rule "Fallback"
110 136 dialect "java"
... ...
services/Rasa/src/main/java/de/bht/beuthbot/nlp/rasa/RasaConnector.java
... ... @@ -67,7 +67,9 @@ public class RasaConnector implements MessageListener {
67 67  
68 68 @Override
69 69 public void onMessage(final Message message) {
  70 +
70 71 try {
  72 + logger.debug("Rasa has received message");
71 73 ProcessQueueMessageProtocol incomingChatMessage = message.getBody(TaskMessage.class);
72 74 String messageText = incomingChatMessage.getText();
73 75  
... ...
services/Telegram/build.gradle
... ... @@ -2,6 +2,8 @@ apply plugin: &#39;java&#39;
2 2 apply plugin: 'war'
3 3 apply plugin: 'checkstyle'
4 4  
  5 +sourceCompatibility = 1.8
  6 +
5 7 repositories {
6 8 mavenCentral()
7 9 }
... ... @@ -20,8 +22,6 @@ dependencies {
20 22  
21 23 }
22 24  
23   -sourceCompatibility = 1.8
24   -
25 25 war {
26 26 destinationDir new File(project.rootProject.projectDir, 'docker/wildfly/volumes/deployments/')
27 27 archiveName "telegram.war"
... ...
services/Telegram/src/main/java/de/bht/beuthbot/messenger/telegram/TelegramReceiveAdapter.java
... ... @@ -17,6 +17,7 @@ import de.bht.beuthbot.jms.ProcessQueue;
17 17 import de.bht.beuthbot.jms.TaskMessage;
18 18 import de.bht.beuthbot.messenger.telegram.model.TelegramAttachment;
19 19 import de.bht.beuthbot.messenger.telegram.model.TelegramMessage;
  20 +import de.bht.beuthbot.messenger.telegram.model.TelegramWebhookURL;
20 21 import de.bht.beuthbot.model.Attachment;
21 22 import de.bht.beuthbot.model.AttachmentType;
22 23 import org.apache.http.HttpStatus;
... ... @@ -25,10 +26,11 @@ import org.slf4j.LoggerFactory;
25 26  
26 27 import javax.annotation.PostConstruct;
27 28 import javax.annotation.Resource;
  29 +import javax.ws.rs.Consumes;
28 30 import javax.ws.rs.POST;
29 31 import javax.ws.rs.Path;
  32 +import javax.ws.rs.core.MediaType;
30 33 import javax.ws.rs.core.Response;
31   -import java.util.Properties;
32 34  
33 35 /**
34 36 * @Author: Christopher Kümmel on 5/14/2017.
... ... @@ -134,17 +136,24 @@ public class TelegramReceiveAdapter {
134 136 * RESTEasy HTTP Post to set Webhook
135 137 */
136 138 @POST
  139 + @Consumes(MediaType.APPLICATION_JSON)
137 140 @Path("/setWebhook")
138   - public Response setWebhook() {
139   - int responseCode = verifyWebhook();
  141 + public Response setWebhook(TelegramWebhookURL telegramWebhookURL) {
  142 + int responseCode = verifyWebhook(telegramWebhookURL.toString());
140 143 return Response.status(responseCode).build();
141 144 }
142 145  
143 146 /**
144 147 * Method to set TelegramWebhook
145 148 */
146   - private int verifyWebhook() {
147   - SetWebhook webhook = new SetWebhook().url(application.getConfiguration(Configuration.WEB_URL) + application.getConfiguration(Configuration.TELEGRAM_WEBHOOK_URL));
  149 + private int verifyWebhook(String webhookURL) {
  150 + if(webhookURL == null) {
  151 + webhookURL = application.getConfiguration(Configuration.WEB_URL) + application.getConfiguration(Configuration.TELEGRAM_WEBHOOK_URL);
  152 + } else {
  153 + webhookURL = webhookURL + application.getConfiguration(Configuration.TELEGRAM_WEBHOOK_URL);
  154 + }
  155 + logger.debug("Webhook is: " + webhookURL);
  156 + SetWebhook webhook = new SetWebhook().url(webhookURL);
148 157  
149 158 BaseResponse response = bot.execute(webhook);
150 159 if (response.isOk()) {
... ...
services/Telegram/src/main/java/de/bht/beuthbot/messenger/telegram/model/TelegramMessage.java
... ... @@ -86,6 +86,10 @@ public class TelegramMessage implements ProcessQueueMessageProtocol{
86 86 * @param attachments
87 87 */
88 88 public void setAttachments(final Attachment[] attachments){
  89 + if (attachments == null) {
  90 + this.attachments = new ArrayList<>();
  91 + return;
  92 + }
89 93 this.attachments = new ArrayList<>(attachments.length);
90 94 for (Attachment attachment : attachments) {
91 95 this.attachments.add(attachment);
... ...
settings.gradle
... ... @@ -8,4 +8,7 @@ include (
8 8 'services:MainBot',
9 9 'services:LoggingStatistics',
10 10 'services:Telegram'
11   -)
12 11 \ No newline at end of file
  12 +)
  13 +//findProject(':services:Scheduler')?.name = 'Scheduler'
  14 +//findProject(':services:JSONRequester')?.name = 'JSONRequester'
  15 +
... ...
src/main/plantuml/model.puml
... ... @@ -5,7 +5,7 @@ class Message {
5 5 ID: Long
6 6 messageID: String
7 7 senderID: String
8   - messenger: Messenger
  8 + _messenger: Messenger
9 9 text: String
10 10 attechments: Attachment[]
11 11 }
... ...