gpt4 book ai didi

javascript - smooch-bot-example 不切换到另一个 block

转载 作者:行者123 更新时间:2023-12-02 14:14:54 25 4
gpt4 key购买 nike

我正在研究smooch-bot-example ,我已经设置好并上传到Heroku Git了。我收到机器人回复成功。

我陷入了下面的场景。这是我的 script.js 文件(请参阅我的 ADD_MOVIE block )

'use strict';

const Script = require('smooch-bot').Script;


var YtsHelper = require('./libs/YtsHelper.js');
const FirebaseHelper = require('./libs/FirebaseHelper.js');
var firebaseHelperObj = new FirebaseHelper();

module.exports = new Script({

processing: {
prompt: (bot) => bot.say('Beep boop...'),
receive: () => 'processing'
},

start: {
receive: (bot) => {
return bot.say('Hi! I\'m Smooch Bot!')
.then(() => 'showUserMenu');
}
},

showUserMenu: {

prompt: (bot) => bot.say("Here are the areas I can help you out. %[Add Movie](postback:ADD_MOVIE) %[Serve Food](postback:SERVE_FOOD)"),
receive: () => 'finish'
},

ADD_MOVIE : {

prompt: (bot) => bot.say('Enter movie name or keywords you want to search please.'),
receive: (bot) => {

bot.say("Search in progress...")
.then(() => {
// Call API Here
return bot.say("Search Finished.")
.then(() => 'TEST_ROUT') // Go to TEST_ROUT
});

}

},

TEST_ROUT: {
prompt: (bot) => bot.say("Test rout called"),
receive: () => 'showUserMenu'
},


finish: {
receive: (bot, message) => {
return bot.getProp('name')
.then((name) => bot.say(`Sorry ${name}, my creator didn't ` +
'teach me how to do anything else!'))
.then(() => 'showUserMenu');
}
}

});

我所做的是调用 yts Api在我的 ADD_MOVIE block 中,在成功响应后,我想转到 TEST_ROUT block ,但我在 Heroku 日志中得到了这个。

2016-08-24T09:48:15.304174+00:00 app[web.1]: Undefined state
undefined for user 1c91f4b02bf493fc6e8c606a,reverting to default state 'start'

我被重定向到“开始” block 。这是我与机器人对话的 Facebook Messenger 屏幕截图

enter image description here

我在这里做错了什么?请记住,我必须调用 API,并且成功后我必须重定向 TEST_ROUT block 。

更新1

应用解决方案后,我得到了奇怪的输出。看图片:

enter image description here

  • TEST_ROUT 在 API 结果之前调用

现在这是我更新的 ADD_MOVIE block

TEST_ROUT: {
prompt: (bot) => bot.say("Test rout called"),
receive: () => 'showUserMenu'
},

ADD_MOVIE : {

prompt: (bot) => bot.say('Enter movie name or keywords you want to search please.'),
receive: (bot, message) => {
const movie_name_searched = message.text;
return bot.say('Search in progress...')
.then(() => {
return YtsHelper.getMoviesList(movie_name_searched,function(movies_array){

if(movies_array[0] != "ERROR_FOUND" && movies_array[0] != "NO_MOVIE_FOUND"){

var movies_postbacks = "";
for (var i = 0; i < movies_array.length ; i++){
movies_postbacks = movies_postbacks + " %["+movies_array[i]+"](postback:ADD_TO_FIREBASE)";
}

movies_postbacks = "Click any movie to add into firebase." + movies_postbacks;
bot.say(movies_postbacks);

}else{

if(movies_array[0] == "ERROR_FOUND"){
bot.say("ERROR Occured");
}else if(movies_array[0] == "NO_MOVIE_FOUND"){
bot.say("No movie found");
}
}
});
})
.then(() => "TEST_ROUT");
}
},

最佳答案

您在 ADD_MOVIEreceive 中缺少 return 语句:

ADD_MOVIE : {
prompt: (bot) => bot.say('Enter movie name or keywords you want to search please.'),
receive: (bot) => {
return bot.say("Search in progress...")
.then(() => {
return callMyApi();
})
.then(() => bot.say("Search Finished."))
.then(() => 'TEST_ROUT');
}
}

更新1

您的消息显示无序的原因是您对 getMoviesList 的调用使用了回调,而不是 promises .

如果您将调用包装在 Promise 中,然后返回它,它应该可以工作:

return new Promise((resolve) => {
YtsHelper.getMoviesList(movie_name_searched, function(movies_array) {
if (movies_array[0] != 'ERROR_FOUND' && movies_array[0] != 'NO_MOVIE_FOUND') {
var movies_postbacks = '';
for (var i = 0; i < movies_array.length; i++) {
movies_postbacks = movies_postbacks + ' %[' + movies_array[i] + '](postback:ADD_TO_FIREBASE)';
}

movies_postbacks = 'Click any movie to add into firebase.' + movies_postbacks;
resolve(bot.say(movies_postbacks));
} else {
if (movies_array[0] == 'ERROR_FOUND') {
resolve(bot.say('ERROR Occured'));
} else if (movies_array[0] == 'NO_MOVIE_FOUND') {
resolve(bot.say('No movie found'));
}
}
});
});

关于javascript - smooch-bot-example 不切换到另一个 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39120185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com