Non python action server not getting action webhook message ever

I have a remote server that processes actions and user messages. I am using the Rest Input channel. My endpoints.yml looks like:

action_endpoint:
  url: "http://localhost:8080/webhook"
core_endpoint:
  url: "http://localhost:5005"

The http://localhost:8080/webhook works when I hit it with curl, but the Rasa server will not ping it after I post a message. Here are my steps:

python -m rasa_core.run -d models/dialogue -u models/current/nlu  --credentials credentials.yml --enable_api --endpoints endpoints.yml
python -m rasa_core_sdk.endpoint --endpoints endpoints.yml

I post

{
  "message": "hello",
  "sender": "123"
}

to

localhost:5005/webhooks/rest/webhook

I get a 200 response of an empty list. My core server logs:

ERROR    rasa_core.dispatcher  - Couldn't create message for template 'utter_ask_me_a_question'

And the rasa core action server does nothing. I can do a GET for the tracker and see the predicted actions as well. Not sure if this is the reason that the action server webhook does nothing. Perhaps my domain is wrong.

intents:
 - greeting
...
 - wind_speed

entities:
 - city

slots:
  currentWeatherResult:
    type: categorical
    values:
      - success
      - nocity
      - noconnection
...

action_factory: remote

actions:
  - utter_greet
  - utter_ask_me_a_question
...
  - action_close_chat

Thanks in advance.

You have to define your template in your domain, under templates. Please take a look at the docs: Domain Format

Thanks for the reply. I have been looking at the docs a lot but I want to handle my utters just like actions, in a different backend, not python. I just found the bot responses docs explaining you need an /nlg endpoint for utters. I am confused because what if you want utters handled just like actions and have them point to the same action backend? Do you really need two endpoints? Will the /webhook endpoint be pinged after the /nlg endpoint is pinged and an action, not utter is predicted? I also find that if you hit the /nlg endpoint, the /webhook never receives an “action_listen” from a the action webhook. Thanks.

You can have them be handled just like utters if you really want, you just can’t call them utter_... anymore, because that automatically assumes it’s for the nlg endpoint. Rasa Core will always predict the next action, it will then only call the nlg endpoint if the next predicted action is one that starts with utter, and after that core will continue to predict