Skip to content

Estudo sobre custom actions

Arthur Temporim edited this page Mar 27, 2019 · 3 revisions

As actions são as respostad do bot para as entradas de usuário. Elas podem ter 3 tipos:

  • default actions (action_listen, action_restart, action_default_fallback)
  • utter actions, começa com utter_, manda mensagem para os usuários
  • custom actions - qualquer outra ação, pode rodar outros trechos de código

Quando o bot prediz a intenção de uma custom action, ele chama um webserver no endpoint especificado no arquivo endpoints.yml:

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

Deve passar a flag --endpoints endpoints.yml ao rodar os scripts. Rodar python -m rasa_core_sdk.endpoint --actions actions.

É preciso criar um arquivo para as custom actions:

from rasa_core_sdk import Action 
from rasa_core_sdk.events import SlotSet # importar slots para pegar valores vindos do usuário.  Ainda não usado
import requests
import random

class ActionTest(Action):
   def name(self):
      return "action_test" # nome da action no arquivo domain

   def run(self, dispatcher, tracker, domain):
        try: #consultar projeto na API SALIC e printar o nome de um deles
          dispatcher.utter_message("Um dos projetos cadastrados no SALIC")
          req = requests.request('GET', "http://api.salic.cultura.gov.br/v1/projetos/")
          quantity = req.json()['count']
          a = req.json()['_embedded']['projetos'][random.randint(0, quantity)]['nome']
          dispatcher.utter_message(a)
        except ValueError:
          dispatcher.utter_message(ValueError)

Deve acrescentar as intents, stories e actions nos arquivos apropriados.

Referências

Clone this wiki locally