Does rasa support another programming language other than python?....and why does it only come with python for custom actions?

does rasa support another programming language other than python?..and why does it only come with python for custom actions?

Hello @faiza_conte

We only provide an SDK for Python out of the box, but you can write custom actions in any language you want as long as you provide an endpoint which accepts HTTP POST requests from the Rasa server and returns a payload of events and responses. See: Introduction to Rasa Action Servers

okay so that means in ur opinion which of other programming languages other than python that accepts http post requests from rasa server?

I don’t think there are many languages that cannot handle HTTP POST requests. You usually find a package similar to requests in Python in any of the standard languages such as C++ (see libcurl?).

Our Python SDK really just makes it easier to manage those messages and in other languages you’ll have to do a bit more work.

okay thank you.///////i have another quesion…there is a new relase of rasa 2.0 that includes the formaction where the question to fill the form can come from custom action like “action_ask_slot name”…can you explain it a lttle bit for me cuz from the document it is hard to understand

A form is just a way of having the assistant collect information form the user. It is essentially a while loop that keeps asking for things as long as there are things to ask for. For each thing (slot) to ask for, you have to write down how your assistant should ask the question. Normally, you’d just define a response template with a name that is utter_ask_<yourSlotName> and rasa will figure out that it should use that to ask for <yourSlotName>. Alternatively, you can also let rasa execute a custom action. You’d typically write that in python code, but of course the custom action is just some program that you write inside of your action server, which you can implement in any language you want as long as it follows the API specs.

In the document just as u represent for the loop question we can specify it in domain file as utter_ask_slot name…okay that works fine …but what I want to do is action_ask_slot name where the question come from the custom action …but rasa jumps that part and move to the questions that come from utter_ask_slot name…have u ever tried the questions from custom action which will return action_ask_slot name and will be saved in action in domain file???

Yes, I just tried it and it works without problems. Did you start the action server (rasa run actions)? If yes, have you re-trained your model after making changes? And if yes, try running rasa shell --debug to get some more information.

Also, I am not sure what you mean by this. Custom actions don’t need to return anything but [] if you only want to send text to the user (use dispatcher.utter_message for this). Also, nothing is saved to the domain file while Rasa is running.

Well what I meant was for the formaction or for form filling we use utter_ask_slot name * for the bot to ask the question required to fill the form…and what I want is for the bot to ask from custom action…I know I have to put under action"action_ask_slot name in the domain file .but the bot jumps that and try to find utter_ask_slot name…the rasa docs doesn’t discuss much about it but it points some but didnt work for me

Rasa will prioritize the custom action, so if you have both action_ask_x and utter_ask_x for slot x, then Rasa will run the former. To do that, you must have implemented that custom action and given it the name action_ask_x via the name property of your custom action class in the python file. Furthermore, before you run rasa shell, you have to start the action server in a separate shell with rasa run actions. If the action server is not running, Rasa cannot execute the custom action and might fall back to use utter_ask_x instead.

Okay thanks…am can you explain this for me 20201026_130022

For the difference between from_text and from_entity, please read Forms. For Rasa to catch all the entities correctly, you’ll have to provide enough training data (a dozen different examples per entity at least I’d say). If you have a fixed set of words that you always want to have recognized, you can add the RegexEntityExtractor to your NLU pipeline, see NLU Training Data

Okay…but is it possible to use DucklingEntityExtractor for extracting name without putting lots of examples in the nlu data

Yes. If duckling provides an extractor for names. See Tuning Your NLU Model