2017-03-06 9 views
4

私は、ユーザープロンプトに基づいてニュース記事を取り出す単純なボットを持っています。全体の流れはエミュレータを使用してローカルで正常に動作しますが、サーバーにデプロイされた後、builder.Prompts.textブロックにヒットしたときにボットが失敗します。以下は私のコードです。「物品の数を問い合わせる」プロンプトが表示され、そこではフローが停止します。builder.Prompts.textはリモートでホストされた後に動作しません

var bot = new builder.UniversalBot(connector); 
var intents = new builder.IntentDialog(); 
bot.dialog('/', intents); 

var HHCC = require('./hhcc.js'); 



intents.matches(/^news/i, [ 
    function(session) { 
     console.log("Intent Given!"); 
     session.beginDialog('/news'); 
    }, 
    function(session, results) { 
     session.send('Enjoy reading!'); 
    } 
]); 

bot.dialog('/news', [ 
    function(session) { 
     console.log("Asking article count"); 
     builder.Prompts.text(session, 'How many articles would you like to see?'); 
    }, 
    function(session, results) { 
     session.sendTyping(); 
     session.conversationData.count = results.response; 
     HHCC.getNews(session.conversationData.count, session, function(newsArticles) { 
      newsArticles.forEach(function(newsCard) { 
       session.send(newsCard); 
      }); 
      session.conversationData.news = newsArticles; 
      console.log(newsArticles); 
      session.endDialog(); 
     }); 
    } 
]); 


server.post('/api/messages', connector.listen()); 
相互作用した後
  • ボットは、ウェブチャットを介してメッセージを受信し、
  • ボットはまた、各チャンネルの0の問題を示すスラックれるBOTフレームワークページでテストする際

    • ボットショーは受け付け

      Iveはすべてのログをチェックしてしまい、かなり静かに失敗したという手がかりは見つけられないようです。

  • 答えて

    0

    .text()の代わりにbuilder.Prompts.number()を使用しようとしましたか?それは数字だけを受け入れ、(あなたがこれをやっていると推測しています)結果を解析して数字にする必要はありません。提供されたエラーメッセージやログがなければ、手助けするのは難しいです。

    (builder.Prompts.numberを使用している場合)は、ユーザーが小数点を入力した場合、プロンプトがこの入力を受け入れ、ボットに最も近い整数に丸める必要があるためです。

    また、セッションオブジェクトにresults.responseを保存した場合は、session.conversationData.countを別のパラメータとしてHHCC.getNews()に渡す必要はありません。代わりに、関数内のセッションからアクセスできます。

    +0

    回答ありがとう!今のところ私はどんなプラットフォームにも戻ってくるようなプロンプトを出すことさえしていないし、Botframeworkのログにアクセスできないので、どこにドロップオフが発生しているのか分からない。だから私が "ニュース"と入力すると、それは意図を引き起こし、サーバーのログに 'console.logs'が両方見えるが、私が使っているクライアントには何の応答も返らない。 – mcclaskiem

    +0

    'console.logs'はテスト目的ですか?彼らがおそらく干渉しているのではないかと思っています。ボットはエミュレータを使用してローカルで動作しますが、WebChatとSlackを通じてデプロイされアクセスされるとは限りません。開発者の利益のために 'console.logs'を使用しているのであれば、' session.send'のようなものを後に追加して変更を探します。 'session.sends'で同じイベントが発生した場合、それらのログを' session.send'に変更することで変更を探します。 –

    +0

    これを試してみましたが、session.sendはクライアントに何も返さず、console.logsもsession.sendsに置き換えました。 :(どういうことが起こっているのかわからない – mcclaskiem

    関連する問題