Rasa x in Kubernetes can't use trigger_intent

Hy all, I new in Rasa, i use Rasa X in Kuberetes(GKE), for the installation i follow this link Helm Chart Installation, but in values.yml i used custom action docker image from GCR and used this config values.yml rasa-x-helm/values.yaml at master · RasaHQ/rasa-x-helm · GitHub, my main problem is after the Rasa X are deployed in Kubernetes and i got the LoadBalancer IP(http:RASA_X_IP:8000), i want to send a **trigger_intent** from my local terminal using CLI like this,

curl -H "Content-Type: application/json" \
-X POST -d '{"name": "EXTERNAL_inv_number", "entities": {"num": "INV/JAN/2020/21", "amount": "30000000"}}' \
"http:RASA_X_IP:8000/conversations/{Conversation_ID}/trigger_intent?output_channel=latest"

I try in Rasa X local computer are successful, but when I try in Kubernetes Rasa X IP, it failed.

if you’ve ever experienced it and can be solved the problem please give me advice

Thanks,

Hi @yogi110514, if you want to hit any rasa open source API endpoints like the /trigger_intent one, you need to add /core to the prefix (similar to how you add /api to hit rasa x endpoints). This tells nginx where to send your request. You also need to add the RASA_TOKEN to your request to authenticate. Therefore your request should look like:

curl -H "Content-Type: application/json" \
-X POST -d '{"name": "EXTERNAL_inv_number", "entities": {"num": "INV/JAN/2020/21", "amount": "30000000"}}' \
"http:RASA_X_IP:8000/core/conversations/{Conversation_ID}/trigger_intent?output_channel=latest&token=<RASA_TOKEN>"

the rasa token should be in your values.yml. Hope that helps!

1 Like

Thankyou very much :pray:, i’ll try it

Hi @erohmensing

There is a confusion betwen this topic and this one : Rasa HTTP API unreachable using in production with RASA X - #2 by erohmensing

Actually I’m facing this problem to integrate our rasabot to our system, we use Rasa-x on GKE with helm install. We are using Rasa-X to hold a bot which is accessible from a mobile app. At first each app talked to rasa on the rest api, sending its sender_id with the message when talking to the bot but with no JWT auth. We now use the process described here-under.

The app asks our backend to connect to /api/auth and get a chat_token. This chat_token is then used by the app to get a conversation_id and an access_token on api/auth/jwt route of rasa-x.

After that, sending a message on /api/conversations/{{conversation_id}}/messages is working perfectly but posting on routes :

  • /api/conversations/{{conversation_id}}/trigger_intent?trigger_intent?token=RASA_X_TOKEN
  • /api/conversations/{{conversation_id}}/trigger_intent?trigger_intent?token=RASA_TOKEN
  • /core/conversations/{{conversation_id}}/trigger_intent?trigger_intent?token=RASA_X_TOKEN
  • /core/conversations/{{conversation_id}}/trigger_intent?trigger_intent?token=RASA_TOKEN with a body containing {“name”: “intent_name”} isn’t effective. I tried with “output_channel=latest” too.

One of our main usecases is to start a form which is linked to an intent from the app, for the moment we just send a “/intent” as a message but wouldn’t it be better to use the /trigger_intent route ?

Do we have to add in the endpoints.yml something like this ? : rasa-production: url: ${RASA_PRODUCTION_HOST}/core

Thank you for your time and attention, hope we’ll clarify this soon ! :smiley: