简体   繁体   中英

How can I use the output of a python script as RASA’s input instead of the usual user input?

I am currently using RASA and developed a working chatbot. One part of my project is to use a speech-to-text recognition, and I wrote a working code in Python that returns the text said by the user. I want to use that text for RASA's input, instead of writing like usual.

I saw there was something to do with the inputs channels, but I only saw input that are other webservices and couldn't figure it out for using just a local script.

Thank you for any advice,

LM

You can try rasa REST API for this purpose. Make sure that you have action_endpoint url in endpoints.yml. Normally it is

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

Then make sure your rasa bot is up and if htere are any custom actions, start that server as well.

After starting your webhook, you can simple call

http://localhost:5005/webhooks/rest/webhook

and in the payload you have to put below payload

messagePayload = {
    sender: 'default',
    message: 'Your message is here'
  }

and finally add httpheader content type as application/json like below

'Content-Type':  'application/json'

Now your bot will work fine.

tldr;

If you are using request in your python for api calls, you can try below code.

import requests

API_ENDPOINT = "http://localhost:5005/webhooks/rest/webhook"

messagePayload = {
        sender: 'default',
        message: 'Your message is here'
      }


r = requests.post(url = API_ENDPOINT, data = messagePayload) 

How about just using Rest API that is already present in the library.
For this, you just need to fill the query parameter, which you can do with your script, rather than writing a custom Input Channel.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM