2016-03-31 13 views
1

Ich versuche, einen Bot mit neuen Microsoft Bot Framework und Node.JS zu erstellen.Microsoft VerificationBotFramework() von Microsoft Bot immer wieder Forbidden

Das Problem ist, dass, selbst wenn ich der VerifyBotFramework() Methode die richtige AppId und App Secret gebe, werde ich immer verboten.

Der Bot funktioniert gut im Emulator, aber wenn ich versuche, es über Telegram zu erreichen, heißt es "Forbidden".

Auch kann ich nicht die "Test-Verbindung zu Ihrem Bot" verwenden, da es nicht einmal eine Fehlermeldung zurückgibt.

geht hier meinen Code:

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); 
}); 

Und nein, ich bin nicht mit "myappsecret" und "myappid", ich sie hier nur ersetzt.

PS: Ich verwende das App-Secret, das vom Framework-Kontrollfeld generiert wird. Ich habe sowohl das primäre als auch das sekundäre App Secrets ausprobiert.

+0

Einrichten von HTTPS mit Let's Encrypt Zertifikat und Schlüssel löste das Problem. –

+1

Beachten Sie, dass Sie seit der Verwendung von Bot Framework SDK Version 3+ nicht mehr "verifyBotFramework" aufrufen müssen. –

Antwort

0

Stellen Sie sicher, dass Sie HTTPS verwenden. Wenn Sie HTTP verwenden, müssen Sie Basic Auth deaktivieren, da BotFramework Ihr appSecret nicht im Klartext sendet.

+0

Danke! Und kann das Zertifikat ein selbstsigniertes sein? –

+0

Nein, es muss ein korrekt verkettetes Zertifikat sein, das für Ihren Hostnamen gültig ist, sorry. –

+0

Kein Problem, ein Let's Encrypt cert und es hat perfekt funktioniert =) –

Verwandte Themen