Skip to content
This repository was archived by the owner on Jun 17, 2024. It is now read-only.

Provide posibility to use model and project. #9

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"author": "[email protected]",
"license": "ISC",
"dependencies": {
"axios": "^0.18.0",
"debug": "^2.6.8",
"request": "^2.81.0",
"request-promise": "^4.2.1"
Expand Down
35 changes: 30 additions & 5 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,39 @@
This plugin provides Botkit developers a way to use the [rasa NLU](https://rasa.ai/) open source, self hosted natural language API.


```
var rasa = require('botkit-rasa')({rasa_uri: 'http://localhost:5000'});
controller.middleware.receive.use(rasa.receive);

controller.hears(['my_intent'],'message_received', rasa.hears, function(bot, message) {
## Setup

Add botkit-rasa as a dependency to your Botkit-bot.
`npm install botkit-rasa`

Enable the middleware:

```javascript
var rasa = require('botkit-rasa')({
rasa_uri: "my_rasa_url",//if no url was provided http://localhost:5000 will be used.
project: "my_project",//project to use, if no project was provided project won't be used in the request.
model: "my_model"//model to use, if no model was provided model won't be used in the request.
});

//if you chose to not include the project or the model you should adapt your rasa_uri to include these
//mind the 'parse' route in this case.
var rasa = require('botkit-rasa')({
rasa_uri: "localhost:5000/parse?&model=<model>&project=<project>"
});

controller.middleware.receive.use(rasa.receive);

//Eventually set rasa hears as the standard hears method.
controller.changeEars(rasa.hears);
```
Setup a controller to use the hears middleware.
```javascript
controller.hears(['my_intent'],'message_received', rasa.hears, function(bot, message) {
console.log('Intent:', message.intent);
console.log('Entities:', message.entities);

});
```



39 changes: 23 additions & 16 deletions src/middleware.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
const request = require('request-promise')
const debug = require('debug')('botkit:rasa')

const axios = require('axios');
module.exports = config => {
if (!config) {
config = {}
}

if (!config.rasa_uri) {
if (!config.rasa_uri) {
config.rasa_uri = 'http://localhost:5000'
}
const rasa = axios.create({
baseURL: config.rasa_uri
})


var middleware = {
receive: (bot, message, next) => {
Expand All @@ -18,21 +21,25 @@ module.exports = config => {
}

debug('Sending message to Rasa', message.text)
const options = {
method: 'POST',
uri: `${config.rasa_uri}/parse`,
body: {
var request={
method: 'get',
params: {
q: message.text
},
json: true
}
};

if(config.project && config.model){
request.url="/parse"
request.params.project=config.project;
request.params.model=config.model;
}

request(options)
.then(response => {
debug('Rasa response', response)
message.intent = response.intent
message.entities = response.entities
next()
rasa(request).then(function (response) {
debug('Rasa response', response);
message.intent = response.data.intent;
message.entities = response.data.entities;
next();
}).catch(function (err) {
debug("Couldn't retrieve response from rasa. Check if your url, project and model are set correctly.",err);
})
},

Expand Down