intelligo
Version:
AI Chatbot Framework for Node.js
220 lines (155 loc) • 9.84 kB
Markdown
<p align="center">
<img src="https://raw.githubusercontent.com/intelligo-systems/intelligo/master/.github/intelligo-logo.png" height="150"/>
<br>
<b>Intelligo AI chatbot framework</b>
</p>
<p align="center">
<a class="badge-align" href="https://www.codacy.com/app/tortuvshin/intelligo?utm_source=github.com&utm_medium=referral&utm_content=techstar-inc/intelligo&utm_campaign=Badge_Grade"><img src="https://api.codacy.com/project/badge/Grade/c7f41b9927fe4d2a9b18e564e23294cc"/></a>
<a href="https://www.npmjs.com/package/intelligo">
<img alt="npm downloads" src="https://img.shields.io/npm/dt/intelligo.svg?style=flat-square">
</a>
<a href="https://www.npmjs.com/package/intelligo">
<img alt="undefined" src="https://img.shields.io/npm/v/intelligo.svg?style=flat-square">
</a>
<a href="https://github.com/tortuvshin/">
<img src="https://img.shields.io/github/followers/tortuvshin.svg?style=social&label=Follow"
alt="Followers"></a>
<a href="https://github.com/intelligo-systems/intelligo/blob/master/LICENSE">
<img alt="License" src="https://img.shields.io/github/license/intelligo-systems/intelligo.svg?colorB=blue&style=flat-square">
</a>
<a href="https://twitter.com/intent/tweet?text=Wow:&url=https://github.com/intelligo-systems/intelligo">
<img alt="Tweet" src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social">
</a>
</p>
Intelligo is a AI Chatbot Framework for Node.js.
## Installation
[](https://nodei.co/npm/intelligo/)
## Documentation
You can find the Intelligo documentation [on the website](https://intelligo.js.org).
Check out the [Getting Started](https://intelligo.js.org/start) page for a quick overview.
You can improve it by sending pull requests to this repository.
## Related projects
| Project | Build Status | NPM version |
|-----------|--------------|---------------------------|
| [neuro](https://github.com/intelligo-systems/neuro.js) | [](https://ci.appveyor.com/project/tortuvshin/intelligo-cli) | [](https://www.npmjs.com/package/neuro) |
| [intelligo-generator](https://github.com/intelligo-systems/intelligo-generator) | [](https://ci.appveyor.com/project/tortuvshin/intelligo-cli) | [](https://www.npmjs.com/package/intelligo-cli) |
## Example
```js
import express from 'express';
import { MessengerBot } from 'intelligo';
const app = express();
const bot = new MessengerBot({
PAGE_ACCESS_TOKEN: 'PAGE_ACCESS_TOKEN',
VALIDATION_TOKEN: 'VALIDATION_TOKEN',
APP_SECRET: 'APP_SECRET',
app: app,
});
bot.initWebhook();
//Train the neural network with an array of training data.
bot.learn([
{ input: 'I feel great about the world!', output: 'happy' },
{ input: 'The world is a terrible place!', output: 'sad' },
]);
//Subscribe to messages sent by the user with the bot.on() method.
bot.on('message', (event) => {
const senderID = event.sender.id,
message = event.message;
if (message.text) {
const result = bot.answer(message.text);
bot.sendTextMessage(senderID, result);
}
});
app.set('port', process.env.PORT || 5000);
app.listen(app.get('port'), function() {
console.log('Server is running on port', app.get('port'));
});
```
### Training
Use `bot.learn()` to train the neural network with an array of training data. The network has to be trained with all the data in bulk in one call to `bot.learn()`. More training patterns will probably take longer to train, but will usually result in a network better at classifying new patterns.
Example using strings with inputs and outputs:
```js
bot.learn([
{ input: 'I feel great about the world!', output: 'happy' },
{ input: 'The world is a terrible place!', output: 'sad' },
]);
const result = bot.answer('I feel great about the world!'); // 'happy'
```
#### `bot.on('message', (event));`
Triggered when a message is sent to the bot.
```js
bot.on('message', (event) => {
if (message.text) {
const result = bot.answer(message.text);
bot.sendTextMessage(event.sender.id, event.message);
}
});
```
## Quick Start
The quickest way to get started with intelligo is to utilize the [`intelligo-generator`](https://github.com/intelligo-systems/intelligo-generator) to generate an bot as shown below:
Install the command line tool
```bash
$ npm install intelligo-cli -g
```
### Intelligo Generator basic usage
Generate the your messenger bot project:
<p align="center">
<img width="100%" src="https://raw.githubusercontent.com/intelligo-systems/intelligo-cli/master/.github/intelligo-cli-messenger.gif">
</p>
Set the values in `config/default.json` before running the bot. Using your Facebook Page's / App's `ACCESS_TOKEN`, `VERIFY_TOKEN` and `APP_SECRET`
- `ACCESS_TOKEN:` A page access token for your app, found under App -> Products -> Messenger -> Settings -> Token Generation
- `VERIFY_TOKEN:` A token that verifies your webhook is being called. Can be any value, but needs to match the value in App -> Products -> Webhooks -> Edit Subscription
- `APP_SECRET:` A app secret for your app, found under App -> Settings -> Basic -> App Secret -> Show
**Note:** If you don't know how to get these tokens, take a look at Facebook's [Quick Start Guide](https://developers.facebook.com/docs/messenger-platform/guides/quick-start) .
## Install dependencies:
```bash
$ npm install
```
## Run your bot
Start your bot app:
```bash
$ npm start
```
## Examples
Collection of examples for using Intelligo Framework.
- **Hello, world** The [hello world bot](https://github.com/intelligo-systems/intelligo/blob/master/samples/hello-bot) is a minimal Messenger bot.
- **Jisho bot** The [jisho bot](https://github.com/intelligo-systems/jisho-bot) Japanese-English dictionary Messenger bot using [www.jisho.org](https://jisho.org/) public API.
## Stay In Touch
- Blogging at [Medium](https://medium.com/intelligo-systems)
- Chatting on [Slack](https://slack.intelligo.systems/)
## Contributors
- 📥 Pull requests and 🌟 Stars are always welcome.
- You may contribute in several ways like creating new features, fixing bugs, improving documentation and examples
or translating any document here to your language. [Find more information in CONTRIBUTING.md](CONTRIBUTING.md).
<a href="https://github.com/intelligo-systems/intelligo/graphs/contributors">Contributors</a>
This project exists thanks to all the people who contribute.
<a href="https://github.com/intelligo-systems/intelligo/contributors"><img src="https://opencollective.com/intelligo/contributors.svg?width=890&button=false" /></a>
## Supporting
If you'd like to join them, please consider:
<a href='https://www.ko-fi.com/turtuvshin' target="_blank">
<img src='https://az743702.vo.msecnd.net/cdn/kofi3.png?v=0' height='35' alt='Buy Me a Coffee at ko-fi.com' />
</a>
<a href='https://www.patreon.com/turtuvshin' target="_blank">
<img src='https://c5.patreon.com/external/logo/become_a_patron_button@2x.png' height='35' alt='Become a Patron!' />
</a>
<a href="https://opencollective.com/intelligo/donate" target="_blank">
<img src="https://opencollective.com/intelligo/donate/button@2x.png?color=blue" height='35'/>
</a>
## Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/intelligo#backer)]
<a href="https://opencollective.com/intelligo#backers" target="_blank"><img src="https://opencollective.com/intelligo/backers.svg?width=890"></a>
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/intelligo#sponsor)]
<a href="https://opencollective.com/intelligo/sponsor/0/website" target="_blank"><img src="https://opencollective.com/intelligo/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/intelligo/sponsor/1/website" target="_blank"><img src="https://opencollective.com/intelligo/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/intelligo/sponsor/2/website" target="_blank"><img src="https://opencollective.com/intelligo/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/intelligo/sponsor/3/website" target="_blank"><img src="https://opencollective.com/intelligo/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/intelligo/sponsor/4/website" target="_blank"><img src="https://opencollective.com/intelligo/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/intelligo/sponsor/5/website" target="_blank"><img src="https://opencollective.com/intelligo/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/intelligo/sponsor/6/website" target="_blank"><img src="https://opencollective.com/intelligo/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/intelligo/sponsor/7/website" target="_blank"><img src="https://opencollective.com/intelligo/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/intelligo/sponsor/8/website" target="_blank"><img src="https://opencollective.com/intelligo/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/intelligo/sponsor/9/website" target="_blank"><img src="https://opencollective.com/intelligo/sponsor/9/avatar.svg"></a>
## License
> Copyright (C) 2019 Intelligo Systems.
> Intelligo framework is open-sourced software licensed under the [MIT](https://opensource.org/licenses/MIT) license.
> (See the [LICENSE](https://github.com/intelligo-systems/intelligo/blob/master/LICENSE) file for the whole license text.)