私はsmooch-bot-exampleで作業しています。設定してHeroku Gitにアップロードしました。ボットの返信に成功しています。smooch-bot-exampleが別のブロックに切り替わらない
私は以下のシナリオで悩んでいます。ここに私のscript.js
ファイルは、私がブロックTEST_ROUT
に行きたい私は成功応答時に、私のADD_MOVIE
ブロックでyts Apiを呼び出してやっていること
'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');
}
}
});
(私のADD_MOVIE
ブロックを参照)であるが、私はHerokuのログでこれを取得しています。
2016-08-24T09:48:15.304174+00:00 app[web.1]: Undefined state
undefined for user 1c91f4b02bf493fc6e8c606a,reverting to default state 'start'
「開始」ブロックにリダイレクトされました。ここでは、ボット
私はここで間違ってやっている何との会話の私のFacebookメッセンジャーのスクリーンショットはありますか? APIを呼び出す必要があることを覚えておいてください。成功するとブロックTEST_ROUT
をリダイレクトする必要があります。溶液を塗布した後
アップデート1
、私は奇妙な出力を取得しています。
- APIはここ
を結果の前にTEST_ROUTが呼ばれた私の更新ADD_MOVIEブロックは、あなたがのreceive
でreturn
の文が欠落している今
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");
}
},
はい、私はこれを知っています。 bot.Say( "Search in progress ...")とbot.say( "Search Finished。")の間にAPIを呼び出す必要がありますが、これをどのように達成するのでしょうか –
また、内部にreturn文があります。再度確認してください –
私の答えを編集しました。あなたの 'callMyApi'関数が約束を返す限り、それは – michaels