Failed to run custom action ‘action_getdetails_form’. Action server responded with a non 200 status code of 500. Make sure your action server properly runs actions and returns a 200 once the action is executed. Error: 500 Server Error: INTERNAL SERVER ERROR for url: http://localhost:5055/webhook 2019-06-10 17:56:38 ERROR rasa_core.processor - Encountered an exception while running action ‘action_getdetails_form’. Bot will continue, but the actions events are lost. Make sure to fix the exception in your custom code.
Hi @maryamBilal,
You should give more informations besides the error that’s being thrown. What command are you running ? What was the query that made the error ? Can you show your actions.py file ?
Regards.
hi @blacknight ,
I want to get user detail(age) and set the slot value. But this custom action is not working. I run
python -m rasa_core_sdk.endpoint --actions actions
before starting the bot. This is my action.py file.
import logging import requests import json
from rasa_core_sdk import Action from rasa_sdk.events import SlotSet
logger = logging.getLogger(name)
class ActionGetdetailsForm(Action): def name(self): return “action_getdetails_form”
def required_slots(self, dispatcher,tracker):
"""A list of required slots that the form has to fill"""
detail = tracker.get_slot('getdetails')
response = """ so you are { } year old """.format(detail)
dipatcher.utter_message(response)
return [SlotSet('getdetails',detail)]
Hi @maryamBilal,
It looks to me that everything is working fine beside
dipatcher.utter_message(response)
It might just be a synthax error : replace dipatcher by dispatcher and you should be fine.
Regards.
Thanks @blacknight . I did it, but now I am getting another error
detail = tracker.get_slot(getdetails) AttributeError: ‘dict’ object has no attribute ‘get_slot’
Hi @maryamBilal,
Depending on the version you are using, you might need to use rasa_sdk.actions instead of rasa_core_sdk in your imports.
Take a look here : Slots
Ps: This looks similar to this 2 issues : https://github.com/RasaHQ/rasa/issues/2475, https://github.com/RasaHQ/rasa/issues/2443
Hope it helps.
Hi @blacknight ,
I change rasa_core_sdk to rasa_sdk.actions but it didn’t solve my error. I have ,
rasa-nlu = 0.15.0
rasa-core = 0.14.4
rasa-sdk = 1.0.0
Did you try in Interactive learning to make sure that everything is picked up ?
Can i have a look to your domain.yml ?
am I wrong or wasn’t the legacy description of required_slots:
@staticmethod
def required_slots(tracker):
# type: () -> List[Text]
"""A list of required slots that the form has to fill"""
return ["cuisine", "num_people", "outdoor_seating",
"preferences", "feedback"]
So my question would be:
Why would you want to return a SlotSet? Maybe you are switching things here and it would be better to describe us which functionality you want to achieve? Maybe I am getting something wrong here.
Besides: the line response = """ so you are { } year old """.format(detail) has a typo - you shouldnt leave a whitespace between the brackets.
Regards
here is my domain.yml file . I want to run a simple action so I keep it simple.
intents:
- greet
- goodbye
- thanks
- details
entities:
- getdetails
slots: getdetails: type: unfeaturized auto_fill: false
actions:
- utter_thanks
- utter_greet
- utter_goodbye
- action_getdetails_form
templates: utter_greet:
- text: “Hi. how are you”
utter_goodbye:
- text: “Talk to you later!”
utter_thanks:
- text: “My pleasure.”
form: action_getdetails_form
Maybe you want to try my suggestion one above your domain post?
Thank you @JulianGerhard and @blacknight. I solve the problem. As you said it was version issue. Here are the changes that I did,
from rasa_core_sdk import Action
from rasa_core_sdk import Tracker
from rasa_core_sdk.events import SlotSet
from rasa_core_sdk.executor import CollectingDispatcher