Hey there, I am new to Rasa. I´m working with Rasa Version 3.1. I am creating a Chatbot for a school project. At first, the User should have 5 options to choose a theme he want. That already works well with buttons. So if the User choose theme 1, he get the right informations. But there I want to integrate another 3 Buttons. But heres the problem: The User click Button 1 and he became an answer, but if he repeat this process and click Button 2, he dont get an answer. Here´s my code: Domain:
version: "3.1"
intents:
- greet
- choose_muellentsorgung
- choose_muellentsorgung_standard
- choose_muellentsorgung_glas
- choose_muellentsorgung_wertstoffhof
responses:
utter_greet:
- text: "Hallo. Wähle eine der folgenden Themengebiete aus oder tippe selbst dein Anliegen ein:"
buttons:
- title: "Müllentsorgung"
payload: '/choose_muellentsorgung'
- title: "Ausweisbeantragung"
payload: '/choose_ausweisbeantragung'
- title: "Veranstaltungen"
payload: '/choose_veranstaltungen'
- title: "Restaurant & Bars"
payload: '/choose_restaurants'
- title: "Verkehr"
payload: '/choose_verkehr'
utter_reply_muellentsorgung:
- text: "Hier findest du sämtliche Informationen zum Thema Müllentsorgung. Bitte wähle eine der folgenden Optionen:"
buttons:
- title: "Papier, Plastik, Restmüll, Biomüll"
payload: '/choose_muellentsorgung_standard'
- title: "Glas"
payload: '/choose_muellentsorgung_glas'
- title: "Sonstiges - Wertstoffhof"
payload: '/choose_muellentsorgung_wertstoffhof'
utter_reply_muellentsorgung_standard:
- text: "Hier erhalten Sie durch Eingabe Ihrer Adresse alle [Informationen zu den Abholterminen Ihres Papier-, Plastik-, Rest- und Biomülls](https://www.in-kb.de/Abfall/Abfallkalender/)"
utter_reply_muellentsorgung_glas:
- text: "Hier finden Sie alle [Standorte der Glascontainer](https://ingol.jumomind.com/webmodul/ingolstadt/standorte/) in Ingolstadt"
utter_reply_muellentsorgung_wertstoffhof:
- text: "Bitte geben Sie Ihren Stadtteil ein, um einen Wertstoffhof in Ihrer Nähe zu finden."
Stories:
version: "3.1"
stories:
- story: Müllentsorgung für Standard - Papier, Plastik, Restmüll, Biomüll
steps:
- intent: greet
- action: utter_greet
- intent: choose_muellentsorgung
- action: utter_reply_muellentsorgung
- intent: choose_muellentsorgung_standard
- action: utter_reply_muellentsorgung_standard
- story: Müllentsorgung für Glas
steps:
- intent: greet
- action: utter_greet
- intent: choose_muellentsorgung
- action: utter_reply_muellentsorgung
- intent: choose_muellentsorgung_glas
- action: utter_reply_muellentsorgung_glas
- story: Müllentsorgung für Sonstiges - Wertstoffhof
steps:
- intent: greet
- action: utter_greet
- intent: choose_muellentsorgung
- action: utter_reply_muellentsorgung
- intent: choose_muellentsorgung_wertstoffhof
- action: utter_reply_muellentsorgung_wertstoffhof
NLU:
version: "3.1"
nlu:
- intent: greet
examples: |
- Hallo
- Hi
- Guten Tag
- Hey
- Servus
- Guten Abend
- Guten Morgen
- Hello
- intent: choose_muellentsorgung
examples: |
- Ich möchte Hilfe beim Thema Müll
- Müll
- intent: choose_muellentsorgung_standard
examples: |
- Papier
- Plastik
- Gelber Sack
- Restmüll
- Biomüll
- intent: choose_muellentsorgung_glas
examples: |
- Sammelstellen
- Glascontainer
- intent: choose_muellentsorgung_wertstoffhof
examples: |
- Wertstoffhof
- Elektromüll
- Sonstiger Müll
- Sperrmüll
- Gefahrenstoffe
My second question is about entities: If the user clicks the second button of the main options, he gets an reply and he should type in a special day for a specific answer from the bot. But that do not work at the moment. Here the relevante code: Domain:
version: "3.1"
intents:
- greet
- choose_ausweisbeantragung
- ausweisbeantragung_wochentag
slots:
tag:
type: text
influence_conversation: true
mappings:
- type: from_entity
entity: tag
entities:
- tag
actions:
- action_ausweis_oeffnungszeiten
esponses:
utter_greet:
- text: "Hallo. Wähle eine der folgenden Themengebiete aus oder tippe selbst dein Anliegen ein:"
buttons:
- title: "Müllentsorgung"
payload: '/choose_muellentsorgung'
- title: "Ausweisbeantragung"
payload: '/choose_ausweisbeantragung'
- title: "Veranstaltungen"
payload: '/choose_veranstaltungen'
- title: "Restaurant & Bars"
payload: '/choose_restaurants'
- title: "Verkehr"
payload: '/choose_verkehr'
utter_reply_ausweisbeantragung:
- text: "Ich kann Ihnen gerne die Öffnungszeiten für das Büro sagen, welches für die Ausweisbeantragung zuständig ist. Bitte geben Sie den gewünschten Wochentag ein!"
Stories:
- story: user asks about Ausweisbeantragung
steps:
- intent: greet
- action: utter_greet
- intent: choose_ausweisbeantragung
- action: utter_reply_ausweisbeantragung
- intent: ausweisbeantragung_wochentag
entities:
- entity_name: tag
- action: action_ausweis_oeffnungszeiten
NLU:
nlu:
- intent: greet
examples: |
- Hallo
- Hi
- Guten Tag
- Hey
- Servus
- Guten Abend
- Guten Morgen
- Hello
- intent: ausweisbeantragung_wochentag
examples: |
- Montag [tag]
- Dienstag [tag]
- Mittwoch [tag]
- Donnerstag [tag]
- Freitag [tag]
Actions.py:
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
from rasa_sdk.types import DomainDict
from typing import Text, Dict, Any, List
class ActionAusweisOeffnungszeiten(Action):
def name(self) -> Text:
return "action_ausweis_oeffnungszeiten"
def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
wochentag = tracker.get_slot("tag")
response = ""
if wochentag == "montag":
response = "Am Montag sind die Öffnungszeiten von 8:00 - 12:30 Uhr und 13:30 - 16:00 Uhr"
elif wochentag == "dienstag":
response = "Am Dienstag sind die Öffnungszeiten von 8:00 - 12:30 Uhr und 13:30 - 16:00 Uhr"
elif wochentag == "mittwoch":
response = "Am Mittwoch sind die Öffnungszeiten von 8:00 - 12:30 Uhr"
elif wochentag == "donnerstag":
response = "Am Donnerstag sind die Öffnungszeiten von 8:00 - 12:30 Uhr und 13:30 - 17:30 Uhr"
elif wochentag == "freitag":
response = "Am Freitag sind die Öffnungszeiten von 8:00 - 12:30 Uhr"
else:
response = "Bitte geben Sie einen gültigen Wochentag ein. Samstag und Sonntag ist das Büro geschlossen!"
dispatcher.utter_message(response)
return []
I hope you can help me. Thanks!