Rasa Workers

Type: NLP Worker

A Rasa worker takes user input and sends it to a ServisBOT RaaS (hosted rasa) bot for natural language processing. A Rasa worker can be created through the CLI.

Rasa fields

  • rasaURL: ServisBOT can provide a hosted version of Rasa for organizations, eliminating the level of effort required to get up and running with Rasa. Contact your customer support rep to get started with Rasa.
  • type:
    • Webhook - is a default rasa bot hosted by ServisBOT customers outside of our architecture. A rasa worker that uses this type will receive responses sent directly from the rasa server, as there is no support for Botnet Actions when using this rasa worker type.
    • ThinBot - is part of our hosted RASA offering
    • NluWebhook - is a rasa worker which uses the Rasas NLU engine to get intent detection results rather than a bot response from Rasa. This type of rasa worker only supports running Botnet Actions, as the NLU Rasa endpoint does not supply a text response to respond to the user with. If an intent is detected, the Botnet Actions associated with the detected intent will be run.
    • Hybrid - uses both the Rasa NLU engine to get intent detection results from Rasa as well as the Rasa bot response. This type of rasa worker will run Botnet Actions if the detected intent has ServisBOT actions associated with it. If the detected intent does not have any actions associated with it, but there is a response from Rasa, the response from Rasa will be returned.
  • botName: botname should correspond to the bot name expected by your Rasa model.

Creating Rasa worker through cli

Webhook

The worker configuration for Rasa worker with type Webhook is as follows

{
  "Data": {
    "rasaUrl": "http://<DOMAIN>/webhooks/rest/webhook",
    "botName": "rasa-botname",
    "type": "Webhook",
    "SlashCommands": {
      "/welcome": [{
          "type": "content",
          "value": "welcomewithname"
        },
        {
          //Another valid botnet action
        }
      ]
    }
  },
  "Organization": "my-org",
  "Config": {},
  "Enabled": true,
  "Description": "Bot description",
  "Type": "rasa-worker",
  "Name": "Servisbotname",
  "Status": "published"
}

Where <DOMAIN> is the domain of your rasa server.

NluWebhook

The worker configuration for Rasa worker with type NluWebhook is as follows

{
  "Data": {
    "rasaUrl": "http://<DOMAIN>/model/parse",
    "botName": "rasa-botname",
    "type": "NluWebhook"
  },
  "Organization": "my-org",
  "Config": {},
  "Enabled": true,
  "Description": "Bot description",
  "Type": "rasa-worker",
  "Name": "Servisbotname",
  "Status": "published"
}

Hybrid

The worker configuration for Rasa worker with type Hybrid is as follows

{
  "Data": {
    "rasaUrl": "http://<DOMAIN>/model/parse",
    "type": "Hybrid"
  },
  "Organization": "my-org",
  "Config": {},
  "Enabled": true,
  "Description": "Bot description",
  "Type": "rasa-worker",
  "Name": "Servisbotname",
  "Status": "published"
}

Where <DOMAIN> specified in each worker config is the domain of the rasa server.

Save worker json to a file and create a worker using the cli command sb-cli worker create file.json

Once you have created the worker using the CLI, it will return an ID for you. You need to then update/create a bot and place the worker at the top with this id and the type of rasa-worker

Using RaaS to host your Rasa Model

ServisBOT allows you to sync your rasa worker to RaaS which will host your rasa model for you. See here for more details about RaaS https://raas.ai/.

To create a worker which can be synced to RaaS do the following:

  • Contact ServisBOT for some RaaS credentials, these credentials will be an email and password used for logging into RaaS.
  • Create a ServisBOT secret of type Custom JSON with the following format:
{
	"email": "raasuser@raas.com",
	"password": "some-raas-password"
}
  • Take note of the secret srn this will be needed later on for the worker configuration.
  • Update your worker configuration to be the following and replace with the secret srn for your RaaS credentials that were created in the previous step.
{
  "Data": {
    "secret": "<raas-secret-srn>",
    "type": "Hybrid"
  },
  "Organization": "my-org",
  "Config": {},
  "Enabled": true,
  "Description": "Bot description",
  "Type": "rasa-worker",
  "Name": "Servisbotname",
  "Status": "published"
}
  • Save your worker and publish your bot.
  • Once the bot has been published and it has been successfully synced to RaaS, your worker configuration will be updated with the RaaS endpoint and api key to use when invoking our model.
  • The following worker configuration shows what your Rasa worker configuration will look like after it has been synced to the RaaS hosting service.
{
  "Data": {
    "secret": "<raas-secret-srn>",
    "type": "Hybrid",
    "rasaUrl": "https://some-raas-base-url/v1",
    "rasaQueryParams": {
      "token": "<raas-api-key-secret-srn"
    }
  },
  "Organization": "my-org",
  "Config": {},
  "Enabled": true,
  "Description": "Bot description",
  "Type": "rasa-worker",
  "Name": "Servisbotname",
  "Status": "published"
}
  • The rasaUrl has been updated and set to the hosting url provided by RaaS hosting service.
  • The rasaQueryParams has been updated with a new token attribute which references a ServisBOT secret containing the api key to use when communicating with RaaS.
  • You can now test your bot via messenger to test inference against your Rasa model that is hosted by RaaS.

Loading a Rasa Model

Once you have your bot with a worker set up. Train your Rasa model locally and load it into the platform. If ServisBOT Rasa is enabled you will be able to run the following commands:

  sb-cli ml-model upload <bot> <type> <file>

To see a list of models uploaded to your organization run the following:

 sb-cli ml-model list <bot> [type]

To delete a rasa model:

  sb-cli ml-model delete <srn>