Skip to content
Branch: master
Find file History
omarsourour Merge pull request #1025 from Microsoft/ludown/950
[Ludown] Doc fix - ':' is not supported in entity name
Latest commit c8423d6 Mar 22, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
ChitChat Move packages Aug 21, 2018
examples fixed doc; added test; improved error message (#1023) Mar 21, 2019
lib Fix for 864 (#1022) Mar 21, 2019
test Fix for 864 (#1022) Mar 21, 2019
README.MD Changed readme's with correct package names (#964) Feb 18, 2019
package-lock.json Bump Minor versions of most tools. Details in PR. Dec 9, 2018



npm version

.lu files help describe language understanding components for your bot. LUDown is a command line tool that helps convert .lu file(s) into JSON files that you can then use to create your LUIS app or QnAMaker knowledge base.

Language Understanding ( allows your application to understand what a person wants in their own words. LUIS uses machine learning to allow developers to build applications that can receive user input in natural language and extract meaning from it.

QnA Maker enables you to go from FAQ to bot in minutes. With QnA Maker you can build, train and publish a simple question and answer bot based on FAQ URLs, structured documents or editorial content in minutes.

The .lu file and the LUDown tool serve several use cases:

  • Quick, simple and easy way to bootstrap language understanding for your bot.
  • Describe intents, entities, utterances and patterns for your bot in simple markdown documents.
  • The language understanding definition for your bot lives with the rest of your code. You can use other CLI tools like luis to create a new LUIS app using the .lu files.
  • Group language understanding documents by language and locale to easily manage localization.
  • Define question and answer pairs for your bot.
  • Works in conjunction with other Microsoft Bot Builder tools, like LUIS CLI and QnAMaker CLI.



To install:

npm i -g ludown

Checkout the examples folder for example .lu files.

Also see the here to add Small talk/ chit-chat capabilities to your bot.


Use ludown as a library

Ludown can be used within a Node.js application as an imported library. Install locally:

npm install ludown --save

In your node project:

const ludown = require('ludown');
const luContent1 = `# Greeting
- hi`;
const log = false;
const locale = 'en-us';
ludown.parser.parseFile(luContent1, log, locale)
    .then(function(parsedContent) {
        // Parsed LUIS object
        console.log(JSON.stringify(parsedContent.LUISJsonStructure, 2, null));
        // Parsed QnA content
        console.log(JSON.stringify(parsedContent.additionalFilesToParse, 2, null));
        // Additional files to parse
        console.log(JSON.stringify(parsedContent.additionalFilesToParse, 2, null));
    .catch(function(err) {
        let errObj = new ludown.helperClasses.exception(err);
        // err is of type ludown.helperClasses.exception. 
        // Possible error codes are available under ludown.helperEnums.errorCodes
        if(errObj.errCode === ludown.helperEnums.errorCodes.INVALID_INPUT) {
            // do something specific to this error code
        } else {

Check out the full reference here

Nightly builds

Nightly builds are based on the latest development code which means they may or may not be stable and probably won't be documented. These builds are better suited for more experienced users and developers although everyone is welcome to give them a shot and provide feedback.

You can get the latest nightly build of Ludown from the BotBuilder MyGet feed. To install the nightly -

npm config set registry

Install using npm:

npm i -g ludown

To reset registry:

npm config set registry
You can’t perform that action at this time.