2017-03-06 59 views
4

我有一個簡單的機器人,它根據用戶提示讀取新聞文章。整個流程在本地使用模擬器正常工作,但在部署到服務器後,當bot遇到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()); 
    
後的BOT框架頁面上測試
  • 博特經由網談接收消息和鬆馳
  • 博特還示出了針對每個信道0的問題時,接受

    我檢查了所有的日誌,似乎無法找到任何線索,因爲它的失敗相當默默。

  • 回答

    0

    您是否嘗試過使用builder.Prompts.number()而不是.text()?它只接受數字和(我猜你正在這樣做),你不需要將結果解析成數字。如果沒有提供錯誤消息或日誌,則很難提供幫助。

    有一件事你可能要注意(如果使用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也沒有返回任何東西給客戶端,也用session.sends替換了console.logs。 :(不知道發生了什麼 – mcclaskiem