recime-message-responder
Advanced tools
Comparing version 1.0.4 to 1.0.5
@@ -35,6 +35,12 @@ "use strict"; | ||
try { | ||
const handler = vm.runInNewContext(this.code, sandbox); | ||
handler(data, (result) => { | ||
resolve(result); | ||
const local = require("domain").create(); | ||
local.run(() => { | ||
const handler = vm.runInNewContext(this.code, sandbox); | ||
handler(data, (result) => { | ||
resolve(result); | ||
}); | ||
}); | ||
local.on("error", (ex) => { | ||
reject(ex); | ||
}); | ||
} | ||
@@ -41,0 +47,0 @@ catch (ex) { |
@@ -0,5 +1,10 @@ | ||
import { Vars } from "./vars"; | ||
export interface RequestOptions { | ||
args: any; | ||
nlp: any; | ||
user: any; | ||
vars: Vars; | ||
} | ||
export declare class Request { | ||
private args; | ||
constructor(args: any); | ||
send(nlp: any, p: any): any; | ||
send(options: RequestOptions): any; | ||
} |
@@ -7,11 +7,8 @@ "use strict"; | ||
class Request { | ||
constructor(args) { | ||
this.args = args; | ||
} | ||
send(nlp, p) { | ||
if (nlp.response && nlp.response.length) { | ||
const response = nlp.response.map(message => () => { | ||
send(options) { | ||
if (options.nlp.response && options.nlp.response.length) { | ||
const response = options.nlp.response.map(message => () => { | ||
switch (message.type) { | ||
case 'text': { | ||
return Promise.resolve(__.text(__.processTemplate(message.content.text, p), message.content.buttons)); | ||
return Promise.resolve(__.text(message.content.text, message.content.buttons)); | ||
} | ||
@@ -22,20 +19,21 @@ case 'image': { | ||
case 'button-template': { | ||
return Promise.resolve(__.buttonTemplate(__.processTemplate(message.content.text, p), message.content.buttons)); | ||
return Promise.resolve(__.buttonTemplate(message.content.text, message.content.buttons)); | ||
} | ||
case 'generic-template': { | ||
return Promise.resolve(__.genericTemplate(message.content.elements.map(e => __.genericItem(__.processTemplate(e.title, p), __.processTemplate(e.subtitle, p), e.imageUrl, e.actionUrl, e.buttons)))); | ||
return Promise.resolve(__.genericTemplate(message.content.elements.map(e => __.genericItem(e.title, e.subtitle, e.imageUrl, e.actionUrl, e.buttons)))); | ||
} | ||
case 'code': { | ||
console.time("babel-compile"); | ||
const block = new code_block_1.CodeBlock(message.content.code); | ||
return block.execute({ | ||
args: this.args, | ||
nlp: nlp, | ||
sender: p | ||
}).then((r) => { | ||
console.timeEnd("babel-compile"); | ||
return r; | ||
}).catch((ex) => { | ||
try { | ||
const block = new code_block_1.CodeBlock(message.content.code); | ||
return block.execute(options).then((r) => { | ||
console.timeEnd("babel-compile"); | ||
return r; | ||
}).catch((ex) => { | ||
return Promise.resolve(__.text(ex.message)); | ||
}); | ||
} | ||
catch (ex) { | ||
return Promise.resolve(__.text(ex.message)); | ||
}); | ||
} | ||
} | ||
@@ -49,8 +47,10 @@ default: { | ||
return a.then((messages) => b().then((message) => { | ||
if (Array.isArray(message)) { | ||
messages.push(...message); | ||
if (message) { | ||
if (Array.isArray(message)) { | ||
messages.push(...message); | ||
} | ||
else { | ||
messages.push(message); | ||
} | ||
} | ||
else { | ||
messages.push(message); | ||
} | ||
return messages; | ||
@@ -57,0 +57,0 @@ })); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const handlebars_1 = require("handlebars"); | ||
const recime_bot_extension_1 = require("recime-bot-extension"); | ||
const recime_nlp_provider_1 = require("recime-nlp-provider"); | ||
const recime_bot_extension_1 = require("recime-bot-extension"); | ||
const request_1 = require("./request"); | ||
const vars_1 = require("./vars"); | ||
const __ = recime_bot_extension_1.default.default; | ||
@@ -12,6 +14,13 @@ class Responder { | ||
respond() { | ||
return recime_nlp_provider_1.default.request(this.args).then(result => { | ||
return __.profile(this.args).then(p => { | ||
const req = new request_1.Request(this.args); | ||
return req.send(result, p).then((result) => { | ||
const vars = new vars_1.Vars(); | ||
return recime_nlp_provider_1.default.request(this.args).then(res => { | ||
return __.profile(this.args).then(user => { | ||
const req = new request_1.Request(); | ||
user.nlp = res; | ||
return req.send({ | ||
nlp: res, | ||
vars: vars, | ||
args: this.args, | ||
user: user | ||
}).then((result) => { | ||
; | ||
@@ -32,3 +41,9 @@ switch (process.env.PLATFORM) { | ||
} | ||
return result; | ||
const values = vars.vals; | ||
for (const key in values) | ||
user[key] = values[key]; | ||
const template = handlebars_1.default.compile(JSON.stringify(result)); | ||
return JSON.parse(template(user)); | ||
}).catch(error => { | ||
return __.text(error.message); | ||
}); | ||
@@ -35,0 +50,0 @@ }); |
{ | ||
"name": "recime-message-responder", | ||
"version": "1.0.4", | ||
"version": "1.0.5", | ||
"description": "", | ||
@@ -31,2 +31,3 @@ "main": "dist/index.js", | ||
"babel-preset-env": "^1.6.0", | ||
"handlebars": "^4.0.11", | ||
"recime-bot-extension": "^1.5.2", | ||
@@ -33,0 +34,0 @@ "recime-nlp-provider": "^1.0.3" |
@@ -41,7 +41,15 @@ import fs = require("fs"); | ||
try { | ||
const handler = vm.runInNewContext(this.code, sandbox); | ||
handler(data, (result)=>{ | ||
resolve(result); | ||
const local = require("domain").create(); | ||
local.run (()=>{ | ||
const handler = vm.runInNewContext(this.code, sandbox); | ||
handler(data, (result)=>{ | ||
resolve(result); | ||
}); | ||
}); | ||
local.on("error", (ex)=>{ | ||
reject(ex); | ||
}); | ||
} catch (ex){ | ||
@@ -48,0 +56,0 @@ reject(ex); |
@@ -6,16 +6,18 @@ import Ext from 'recime-bot-extension'; | ||
import {CodeBlock} from "./code-block"; | ||
import {Vars} from "./vars"; | ||
export interface RequestOptions { | ||
args: any; | ||
nlp: any; | ||
user: any; | ||
vars: Vars | ||
} | ||
export class Request { | ||
private args: any; | ||
constructor(args){ | ||
this.args = args; | ||
} | ||
send(nlp, p) { | ||
if (nlp.response && nlp.response.length) { | ||
const response = nlp.response.map(message => ()=> { | ||
send(options: RequestOptions) { | ||
if (options.nlp.response && options.nlp.response.length) { | ||
const response = options.nlp.response.map(message => ()=> { | ||
switch (message.type) { | ||
case 'text': { | ||
return Promise.resolve(__.text(__.processTemplate(message.content.text, p), message.content.buttons)); | ||
return Promise.resolve(__.text(message.content.text, message.content.buttons)); | ||
} | ||
@@ -26,23 +28,23 @@ case 'image': { | ||
case 'button-template': { | ||
return Promise.resolve(__.buttonTemplate(__.processTemplate(message.content.text, p), message.content.buttons)); | ||
return Promise.resolve(__.buttonTemplate(message.content.text, message.content.buttons)); | ||
} | ||
case 'generic-template': { | ||
return Promise.resolve(__.genericTemplate(message.content.elements.map(e => | ||
__.genericItem(__.processTemplate(e.title, p), __.processTemplate(e.subtitle, p), e.imageUrl, e.actionUrl, e.buttons)))); | ||
__.genericItem(e.title, e.subtitle, e.imageUrl, e.actionUrl, e.buttons)))); | ||
} | ||
case 'code':{ | ||
console.time("babel-compile"); | ||
const block = new CodeBlock(message.content.code); | ||
return block.execute({ | ||
args: this.args, | ||
nlp: nlp, | ||
sender: p | ||
}).then((r) => { | ||
console.timeEnd("babel-compile"); | ||
return r; | ||
}).catch((ex)=>{ | ||
try { | ||
const block = new CodeBlock(message.content.code); | ||
return block.execute(options).then((r) => { | ||
console.timeEnd("babel-compile"); | ||
return r; | ||
}).catch((ex)=>{ | ||
return Promise.resolve(__.text(ex.message)); | ||
}); | ||
} catch(ex){ | ||
return Promise.resolve(__.text(ex.message)); | ||
}); | ||
} | ||
} | ||
@@ -56,6 +58,8 @@ default: { | ||
return a.then((messages)=> b().then((message)=> { | ||
if (Array.isArray(message)){ | ||
messages.push(...message); | ||
} else { | ||
messages.push(message); | ||
if (message){ | ||
if (Array.isArray(message)){ | ||
messages.push(...message); | ||
} else { | ||
messages.push(message); | ||
} | ||
} | ||
@@ -62,0 +66,0 @@ return messages; |
@@ -0,5 +1,8 @@ | ||
import HandleBars from "handlebars"; | ||
import Ext from 'recime-bot-extension'; | ||
import nlp from "recime-nlp-provider"; | ||
import Ext from 'recime-bot-extension'; | ||
import {Request} from "./request"; | ||
import {Vars} from "./vars"; | ||
@@ -16,6 +19,14 @@ const __ = Ext.default; | ||
respond(){ | ||
return nlp.request(this.args).then(result => { | ||
return __.profile(this.args).then(p => { | ||
const req = new Request(this.args); | ||
return req.send(result, p).then((result)=>{; | ||
const vars = new Vars(); | ||
return nlp.request(this.args).then(res => { | ||
return __.profile(this.args).then(user => { | ||
const req = new Request(); | ||
user.nlp = res; | ||
return req.send({ | ||
nlp : res, | ||
vars: vars, | ||
args: this.args, | ||
user: user | ||
}).then((result)=>{; | ||
switch (process.env.PLATFORM){ | ||
@@ -35,3 +46,12 @@ case "telegram": { | ||
} | ||
return result; | ||
const values = vars.vals; | ||
for (const key in values) | ||
user[key]= values[key]; | ||
const template = HandleBars.compile(JSON.stringify(result)); | ||
return JSON.parse(template(user)); | ||
}).catch(error => { | ||
return __.text(error.message); | ||
}); | ||
@@ -38,0 +58,0 @@ }); |
16319
20
438
5
+ Addedhandlebars@^4.0.11
+ Addedhandlebars@4.7.8(transitive)
+ Addedneo-async@2.6.2(transitive)
+ Addedsource-map@0.6.1(transitive)
+ Addeduglify-js@3.17.4(transitive)
+ Addedwordwrap@1.0.0(transitive)