Message not going frm ngrok to Rasa in Slack integration

Facing problem in Slack integration with Rasa 1.* command line way. Steps followed are at

In short:

  • Created a workspace (“DataHacksConf2019”), a channel ("#rasachatbot") and an app (“rasachatbotdemo”).

  • Noted down Bot user OAuth (starting with xoxb)

  • Turned Event subscription ON. Subscribe to workspace events: message.channel , message.groups , message.im and message.mpim

  • Re-installed the app

  • Changed credentials.yml file with the Slack chat bot OAuth token (starting with xoxb) and channel ("#rasachatbot")

  • Ngrok: In a separate window

    C:\Temp\ngrok.exe http 5055
    

    Noted down the token like 3d3f77f1

  • Changed endpoints.yml (same port as ngrok)

    action_endpoint:
       url: "http://3d3f77f1.ngrok.io:5055/webhook"
    
  • In another window, with activate rasa environment on a different port 5002

    python -W ignore -m rasa run --connector slack --port 5002 --cors *
    

    Now, deployed on port 5002 to the internet:

    C:\Temp\ngrok.exe http 5002
    

    Noted down different ngrok token, used that below in Slack

  • In Slack App Event subscription, Verifed (rasa server, ngrok, actions, all must be running)

    https://0c2fb87b.ngrok.io/webhooks/slack/webhook
    
  • Started chatting in Slack

The message seems to go from Slack to ngrok on 5002 (says status ok 200), but from there its not showing up in rasa server running on 5002

Am I missing anything?

All necessary files are at TeachingDataScience/Jupyter/iplbot at master · yogeshhk/TeachingDataScience · GitHub

The action endpoint runs on local host:

url: "http://localhost:5055/webhook"

Ngrok should have the port of the rasa server, in this case 5002.

Still not getting it.

Is there any particular sequence or order that needs to be followed? The tutorial that I followed had started ngroks on two ports? necessary? confused here?

  • how should credentials.yml look?
  • how should endpoints.yml look
  • Seeing so many versions of this process. Any authoritative step by step tutorial available for Rasa 1.*?

my ngrok is running on 5002, its token is 375d7c95

my credentials.yml has only following two lines:

slack:
  slack_token: "xoxb-XXXXXXXXXXXXXXXXXXXXXXXX"

my endpoints.yml has only following two lines

		action_endpoint:
		 url: "http://375d7c95.ngrok.io:5002/webhook"

In slack I have verified event subscription to

https://375d7c95.ngrok.io/webhooks/slack/webhook

my action server is running at 5055

my rasa server running with command:

python -W ignore -m rasa run --connector slack --port 5002 --cors *

Still message is not passed to rasa server, ngrok shows status ok 200 though

Anything missing? Are there any sensitive typos?

PS: (too many variables to get one thing right…hushh!!)

Here are some steps for ngrok and the steps for slack

Your endpoints.yml should look like:

action_endpoint:
  url: "http://localhost:5055/webhook"

Because your action_endpoint is for the actions, not for rasa. Remember that you also need to execute “rasa run actions” in other terminal.

That clarification helped.

One observation: I need to start rasa server on , say 5004, first, then ngrok http on 5004, then get the ngrok url token, put it in Slack Verify then only it verifies fine else it errors. Order seems important

Hi @yogeshkulkarn, @Gehova i. I am having the same problem with my Moodbot. My messages are being sent through ngrok to rasa. Rasa is able to predict what to do next but I do not see a response on slack. Can you please tell me what to do? I have also tried removing the slack_channel field. I also tried adding @Moodbot the name of my bot in that field. I have followed all tutorials and still haven’t found a solution.

I execute the commands in the following order:

  1. rasa run (by default this goes to 5005)
  2. ngrok http 5005
  3. copy the first link in my endpoints file (http:-ngroklink-:5055/webook
  4. rasa run on port 5002
  5. ngrok http 5002
  6. copy that link in event subscriptions
  7. URL gets validated