ayva
Version:
Library for developing cross-platform voice applications
74 lines (60 loc) • 2.05 kB
JavaScript
var FacebookBuilder = require('../FacebookBuilder')
var FacebookMessenger = function(_res){
var res = _res;
var repeatForRepromptFlag = false;
this.speechBuilder = new FacebookBuilder();
this.repromptBuilder = new FacebookBuilder();
var responseData = {
speech: "",
displayText: "",
data: {"google":{"is_ssml":false,"no_input_prompts":[], "expect_user_response": true}},
contextOut: [],
source: "",
followupEvent: {}
};
var resStatus = 200;
/* /////////////////////////////////
// Speech Builder Functions
*/ ///////////////////////////////
this.say = this.speechBuilder.say.bind(this);
this.play = this.speechBuilder.play.bind(this);
this.pause = this.speechBuilder.pause.bind(this);
this.reprompt = {
say: this.repromptBuilder.say.bind(this),
play: this.repromptBuilder.play.bind(this),
pause: this.repromptBuilder.pause.bind(this)
}
this.repeatForReprompt = function(){
repeatForRepromptFlag = true;
this.reprompt = null;
}
this.setContext = function(contextName, lifespan) {
let context = {
name: contextName,
lifespan: lifespan
}
responseData.contextOut.push(context)
return this;
}
this.data = function(_data){
responseData.data = _data;
return this;
}
this.error = function(errorCode){
resStatus = errorCode;
return this;
}
this.finish = function(opts){
if(opts){
if (opts.exit)
responseData.data.google.expect_user_response = false; // close the microphone
}
responseData.speech = this.speechBuilder.getSSML();
var reprompt = repeatForRepromptFlag ? responseData.speech : this.repromptBuilder.getSSML();
responseData.data.google.no_input_prompts.push({
ssml: reprompt
})
res.status(resStatus).send(responseData);
}
}
module.exports = FacebookMessenger;