{"id":13907267,"url":"https://github.com/howdyai/botkit-cms","last_synced_at":"2025-07-18T05:31:04.378Z","repository":{"id":41002034,"uuid":"161207107","full_name":"howdyai/botkit-cms","owner":"howdyai","description":"An open tool for designing, building and managing interactive dialog systems","archived":true,"fork":false,"pushed_at":"2022-12-09T08:49:49.000Z","size":1858,"stargazers_count":268,"open_issues_count":42,"forks_count":99,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-07-02T15:05:07.957Z","etag":null,"topics":["botkit","bots","content-management-system","conversational-ui"],"latest_commit_sha":null,"homepage":"https://botkit.ai","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/howdyai.png","metadata":{"files":{"readme":"readme.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-10T16:53:00.000Z","updated_at":"2025-05-31T11:29:13.000Z","dependencies_parsed_at":"2023-01-25T13:30:32.237Z","dependency_job_id":null,"html_url":"https://github.com/howdyai/botkit-cms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/howdyai/botkit-cms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howdyai%2Fbotkit-cms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howdyai%2Fbotkit-cms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howdyai%2Fbotkit-cms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howdyai%2Fbotkit-cms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/howdyai","download_url":"https://codeload.github.com/howdyai/botkit-cms/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/howdyai%2Fbotkit-cms/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265705306,"owners_count":23814418,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["botkit","bots","content-management-system","conversational-ui"],"created_at":"2024-08-06T23:01:51.778Z","updated_at":"2025-07-18T05:31:04.081Z","avatar_url":"https://github.com/howdyai.png","language":"JavaScript","readme":"# Botkit CMS\n\n## An open tool for designing, building and managing interactive dialog systems\n\n![Dialog Editor](https://raw.githubusercontent.com/howdyai/botkit-cms/master/docs/screenshots/dialog.png)\n\n## Install and run it locally\n\nClone and install botkit-cms\n```\ngit clone https://github.com/howdyai/botkit-cms.git\ncd botkit-cms\nnpm install\n```\nCreate an .env file from .env_sample and change the variables\n```\ncp .env_sample .env\n```\n```\nPLATFORM=web\nTOKENS=youwillneverguessmysecretbottoken\nUSERS=admin:123secret\n```\n\nCreate .data folder, create a scripts.json inside. Copy the content from sample-scripts.json\n```\nmkdir .data\ncp sample_scripts.json .data/scripts.json\n```\n\nRun cms and open localhost:3000/admin and enter the credentials from the USERS env variable.\n```\nnpm run build\nnpm start\n```\n\n## Create Botkit Dialog Editor \u0026 API Service\n\nClone this repo and set it up on a public host somewhere. Clicking the Glitch link below will do this for you.\n\n[Configure the .env file.](#configuration)\n\nLaunch the app, then load it in your web browser. You should see a link to the editor screen.\n\nMake sure your new service is available at a public address on the web. Then, modify your Botkit app to include a pointer to this new service.\n\n```\nvar controller = Botkit.platform({\n  studio_command_uri: 'https://my.new.service',\n  studio_token: 'a shared secret'\n})\n```\n\n[![Remix on Glitch](https://cdn.glitch.com/2703baf2-b643-4da7-ab91-7ee2a2d00b5b%2Fremix-button.svg)](https://glitch.com/edit/#!/remix/botkit-cms)\n\n### Configuration\n\nOptions for this service are controlled via environment variables, which can be stored in a `.env` file at the project root.\n\nHere is an example `.env` file:\n\n```\n# Chat platform\n# PLATFORM=\u003cplatform\u003e\n# valid options are slack, teams, ciscospark, web, facebook\nPLATFORM=slack\n\n# authentication tokens for Bot users\n# TOKENS=\"123 456\"\nTOKENS=youwillneverguessmysecretbottoken\n\n# Admin users for UI\n# USERS=\"username:password username2:password2 username3:password3\"\nUSERS=admin:123secret\n\n# LUIS Endpoint\n# URL to published LUIS Endpoint in the form of https://\u003cREGION\u003e.api.cognitive.microsoft.com/luis/v2.0/apps/\u003cAPPID\u003e?subscription-key=\u003cSUBID\u003e\u0026verbose=true\u0026timezoneOffset=-360\u0026q=\n# Get this from LUIS.ai Keys and Endpoint settings\n# LUIS_ENDPOINT=\n\n# LUIS App Version\n# Defaults to 0.1, update if you manage multiple LUIS app versions\n# LUIS_VERSION=0.1\n```\n\n### Using LUIS.ai\n\nThis project includes support for using LUIS.ai to determine the intent represented by an incoming message.\nTo enable LUIS, add the `LUIS_ENDPOINT` variable to your environment.\n\nAfter enabling LUIS, new options will appear in the Trigger dialog that will allow you to assign intents from LUIS as triggers.\n\n### Editor Configuration\n\nThe Botkit dialog editor can be used in one of several different flavors, controlled by the `PLATFORM` environment variable.\n\n| Value | Description\n|--- |---\n| web | Botkit Anywhere mode\n| slack | Slack mode\n| teams | Microsoft Teams mode\n| ciscospark | Cisco Spark / Webex Teams mode\n| facebook | Facebook mode\n\n\n### Securing Admin / Editor Access\n\nAccess can be limited and users can be controlled using the `USERS` environment variable.\n\nSet the variable to a space separated list of user:password pairs. Users will be shown a login prompt when accessing any url within the `/admin/` url.\n\n### Securing API Access\n\nYou can lock down access to the API by specifying one or more access tokens in the TOKENS environment variable (or in the .env file).  \n\nIf any tokens are specified, access to the API requies a valid value in the `access_token` url query parameter.  Botkit will automatically use the Botkit Studio `studio_token` value for this.\n\n## Building Project\n\nModifications to the front end application or css should be done to their original source files, then compiled by the build process. To build the Javascript and CSS files from their source locations, run the following command:\n\n```bash\nnpm run build\n```\n\nThe front end editor application included in this project is built with Angular. The source code of the this application is broken up into several component files in the `js/` folder. These are compiled into a single source file and moved to a final home at `public/js/scripts.js`  by the build process.\n\nThe CSS is controlled by SASS files in the `sass/` folder. These are compiled into a single source file and moved to a final home at `public/css/new.css`  by the build process.\n\n\n## Alternate: Use this as a component in your Botkit App\n\nFirst, npm install this:\n\n```bash\nnpm install --save botkit-cms\n```\n\nGet your existing scripts from an instance of Botkit CMS, and put the resulting `scripts.json` into your bot project.\n\nThen, add to your bot's main file, just after defining your controller object:\n\n```js\nvar cms = require('botkit-cms')();\ncms.useLocalStudio(controller);\n\ncms.loadScriptsFromFile(__dirname + '/scripts.json').catch(function(err) {\n  console.error('Error loading scripts', err);\n});\n```\n\nNote that you might need to modify the call to `cms.loadScriptsFromFile` depending on where you put the scripts.json file.\n","funding_links":[],"categories":["📦 Legacy \u0026 Inactive Projects","JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowdyai%2Fbotkit-cms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhowdyai%2Fbotkit-cms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowdyai%2Fbotkit-cms/lists"}