An SDK for ConversationLearner
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
src feat: log rich edit (#337) Sep 17, 2018


Conversation Learner Software Development Kit

Travis CircleCI AppVeyor

This repo is intended to be consumed by your bot. The SDK contains 3 major components:

  1. Administration UI - provides graphical interface to manage, train, and test your bot
  2. Express Router - The router is mounted to your server in development and used by the UI (above) during training
  3. Recognizer - Similar to other BotBuilder recognizers like LUIS the CL recognizer processes the given Bot context and returns results such as messages, adaptive cards, and more.

Getting started

Install @conversationlearner/sdk in consuming project:

npm install @conversationlearner/sdk --save-exact

Note: We recommend using --save-exact to lock the version since we are NOT following SemVer at this time. This can help prevent accidental package updates which may contain breaking changes if you are not using package-lock.json. We will move to following SemVer soon as we improve our release process.

Using the recognizer:

import { ConversationLearner, ICLOptions, ClientMemoryManager } from '@conversationlearner/sdk'


const sdkRouter = ConversationLearner.Init({
if (isDevelopment) {
    server.use('/sdk', sdkRouter)


const cl = new ConversationLearner(modelId);'/api/messages', (req, res) => {
    adapter.processActivity(req, res, async context => {
        const result = await cl.recognize(context)
        if (result) {

Starting the UI server:

import { startUiServer } from '@conversationlearner/sdk'



This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact with any additional questions or comments.

Semantic Release

Semantic release works by analyzing all commits that have occurred since the last release, computing the next version to increment based on the most significant commit found, then tagging and publishing a new package with that version.


In order to analyze the commit messages reliably they must be in a known format. To help writing these commits there is a tool at npm run commit which acts a wizard walking you through the options.

For most use cases the only change required is to type a special word in front of your normal commit messages. Instead of "add function to compute X" put "feat: add function to compute X". Based on the rules "feat" is mapped to a "minor" release.

Video Demo:

Release Process