2016-03-31 97 views
1

我正在嘗試使用新的Microsoft Bot框架和Node.JS創建一個bot。Microsoft Bot Framework的verifyBotFramework()總是返回Forbidden

問題是,即使我認爲我給verifyBotFramework()方法正確的AppId和應用程序的祕密,我總是被禁止。

機器人在模擬器中工作得很好,但是當我試圖通過電報達到它時,它說「禁止」。

此外,我不能使用「測試連接到你的機器人」,因爲它甚至不會返回錯誤消息。

這裏去我的代碼:

var restify = require('restify'); 
var builder = require('botbuilder'); 

var server = restify.createServer(); 

//Criando bot e adicionando diálogos 
var bot = new builder.BotConnectorBot(); 
bot.add('/', new builder.CommandDialog() 
    .matches('^set name', builder.DialogAction.beginDialog('/profile')) 
    .matches('^quit', builder.DialogAction.endDialog()) 
    .onDefault(function(session) { 
     if (!session.userData.name) { 
      session.beginDialog('/profile'); 
     } else { 
      session.send('Hello, %s!', session.userData.name); 
     } 
    }) 
); 


bot.add('/profile', [ 
    function(session) { 
     if (session.userData.name) { 
      builder.Prompts.text(session, 'What would you like me to call you instead?'); 
     } else { 
      builder.Prompts.text(session, 'Hey there =). What\'s your name?'); 
     } 
    }, 
    function(session, results) { 
     session.userData.name = results.response; 
     session.endDialog(); 
    } 
]); 

//Configurando Restify 
server.use(bot.verifyBotFramework({ appId: 'myappid', appSecret: 'myappsecret' })); 
server.post('/v1/messages', bot.listen()); 
server.listen(process.env.port || 3978, function() { 
    console.log('%s listening to %s', server.name, server.url); 
}); 

不,我沒有使用 「myappsecret」 和 「myappid」,我剛剛更換他們在這裏。 PS:我正在使用由框架控制面板生成的應用程序密鑰。我嘗試了主要和次要應用程序的祕密。

+0

使用Let's Encrypt證書和Key設置HTTPS解決了問題。 –

+1

請注意,自Bot Framework SDK版本3+以後,您不再需要調用'verifyBotFramework'。 –

回答

0

確保您使用的是HTTPS。如果您使用的是HTTP,則需要禁用基本身份驗證,因爲BotFramework不會清晰地發送您的appSecret。

+0

謝謝!證書可以是自簽名的嗎? –

+0

不,它必須是適用於您的主機名的正確鏈接的證書,對不起。 –

+0

沒問題,得到了一個讓我們加密證書,它工作完美=) –

相關問題