Botpress NLU module


181110.51.103 years ago4 years agoMinified + gzip package size for @botpress/nlu in KB


Botpress NLU āš”

Botpress NLU is a Botpress module that adds NLU capatibilities to your bot by connecting to the NLU provider of your choice.

šŸš§ I'm looking for help to support more providers

Provider šŸš© Status
Native (built-in) āœ…
LUIS āœ…
Dialogflow Help needed
RASA āœ…
Recast āœ…

We believe NLP/NLU is a commodity, so this package abstracts the provider by providing a standard, clean interface that allows you (and the non-technicals) to easily edit the NLU data within Botpress.

With Botpress NLU,

  • You own your data
  • You can seamlessly switch to another NLP provider
  • (soon) You can continously train your bot on misunderstood phrases
  • (soon) You can share and import open-source, community-curated intents & entities


āš ļø This module only works with the upcoming Botpress X.

  • Install the module yarn add @botpress/nlu
  • Configure a provider (see below)


  1. You need to chose a Provider (currently dialogflow, luis, rasa, recast or native)
  2. Set the provider config
  3. Configure the provider

Global Configuration (source)

Key Environment Variable Required Default
provider NLU_PROVIDER Yes* native
intentsDir NLU_INTENTS_DIR Yes ./intents
entitiesDir NLU_ENTITIES_DIR Yes ./entities

'*': Provider is one of dialogflow, rasa, luis, recast or native

Standard NLU Object (event.nlu)

Botpress NLU will instrument incoming events by providing a standardized object with the structure below.

Path Description Supported by
nlu.intent Best classified intent based on confidence (same structure as below) Dialogflow, LUIS, Rasa, Recast
nlu.intents[i].name The name of the classified intent LUIS, Rasa, Recast
nlu.intents[i].confidence Confidence of the classification, between 0 and 1, higher the better LUIS, Rasa, Recast
nlu.intents[i].provider The provider that provided the classification *
nlu.entities[i].name The name of the extracted entitiy Dialogflow
nlu.entities[i].type The type of entity that was extracted LUIS, Rasa, Recast
nlu.entities[i].value The normalized value of the extracted entity Dialogflow, LUIS, Rasa
nlu.entities[i].original The original (raw) value of the extracted entity Rasa, Recast
nlu.entities[i].confidence Confidence of the extraction, between 0 and 1 LUIS, Recast
nlu.entities[i].provider The provider that extracted the entity *
nlu.entities[i].position The position where it was found in the input string (start position) LUIS, Rasa
nlu.sentiment TBD Recast
nlu.language TBD Recast

Botpress NLU also provides two convenient methods to the NLU Object : nlu.intent.is(intentName) and nlu.intents.has(intentName).

Providers ā€“ Features Matrix

Provider Synchronization Intent Classification Entity Extraction Scopes (coming soon)
Dialogflow āŒ āœ… āœ… āŒ
LUIS āœ… āœ… āœ… āŒ
RASA āœ… āœ… āœ… āŒ
Recast āœ… āœ… āœ… āŒ
Native āœ… āœ… āŒ āŒ


NOTE: Dialogflow-provider is not fully implemented yet and isn't recommended to use at this point.

Botpress NLU use the V2 API of Dialogflow, checkout this link for more information.

Dialogflow Specific Configuration (source)

Key Environment Variable Required
https://cloud.google.com/docs/authentication/getting-started GOOGLE_APPLICATION_CREDENTIALS Yes


LUIS Specific Configuration (source)

Key Environment Variable Required
luisAppRegion NLU_LUIS_APP_REGION No (default is westus)

LUIS Caveats

There are some entities that LUIS doesn't support in some languages, make sure that the language you are using supports the entities you are using in Botpress (this module doesn't do this check for you).


I get an error when syncing my model (click to see) Make sure that:
  • You have enough labels (min 2) for the intent
  • The entities you are using are supported by your app's language


Botpress NLU will create and train and maintain your projects and models automatically for you.

Note: By default, Botpress creates separate projects for development and production environment, e.g. dev__botpress__all and prod__botpress__all.

Rasa Specific Configuration (source)

Key Environment Variable Required
rasaEndpoint NLU_RASA_URL No (default is http://localhost:5000/)
rasaToken NLU_RASA_TOKEN No (none by default)
rasaProject NLU_RASA_PROJECT No (default is botpress)


Recast Specific Configuration (source)

Key Environment Variable Required
recastToken NLU_RECAST_TOKEN Yes

Note: Make sure to use developer token for Recast not request one.


The best way to help right now is by helping with the exising issues here on GitHub and by reporting new issues!


Botpress is dual-licensed under AGPLv3 and the Botpress Proprietary License.

By default, any bot created with Botpress is licensed under AGPLv3, but you may change to the Botpress License from within your bot's web interface in a few clicks.

For more information about how the dual-license works and why it works that way please see the FAQS.

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.