2016-10-13 3 views
0

Microsoft Bot Frameworkを試しています。私の実験では、 "Hello World"を既存のWebアプリケーションに統合しようとしています。私のWebアプリケーションは、高速のNode.jsアプリケーションです。Microsoft BotフレームワークとNode Express Webサイトの統合

私のNode.jsアプリケーションでは、ボットにメッセージを送信できるテキストボックスを持つWebページが必要です。基本的には、Webページにフレームワークチャネルエミュレータを模倣しようとしています。これを実行しようとする試みで、私は次のようでWebページを持っている。そして、

<form> 
    <div class="input-group"> 
    <input id="message" type="text" class="form-control" placeholder=""> 
    <span class="input-group-btn"> 
     <button id="sendButton" class="btn btn-secondary" type="button">send</button> 
    </span> 
    </div> 
</form> 

...

$('#sendButton').click(onSendButtonClick); 
function onSendButtonClick() { 
    var message = $('#message').val(); 
    if (message) { 
     $.post('/my-bot', function(data, status) { 
      console.log(data); 
      console.log(status); 
     }); 
    } 
    return false; 
} 

bot.html

、サーバ側で、私の中にExpressを使用しているNode.jsアプリには次のものがあります:

// This route is intended to listen for messages POSTed from the text box on my web site. 
app.post('/my-bot', function(req, res) { 
    try { 
     // Not sure about this... 
     let connector = new BotBuilder.ConsoleConnector().listen();    
     let bot = new BotBuilder.UniversalBot(connector); 
     bot.dialog('/', function (session) {     
      session.send('Hello World'); 
     }); 
    } catch (ex) { 
     res.status(500); 
     res.end(); 
    } 
}); 

// The following serves up my web page 
app.use('/my-bot', function(req, res) { 
    let view = './bot.html';   
    res.render(view, {}); 
}); 

私はいません「Hello World」を私のWebページに戻す方法を教えてください。 session.sendへの呼び出しが表示されますが、sessionresオブジェクトを接続する方法はありません。あるいは私は建築全体を誤解していますか?

答えて

0

Direct Line APIをお試しください。

ダイレクトラインAPIは、単一のボットに直接接続するための簡単なREST APIです。このAPIは、Webチャットコントロール、モバイルアプリ、またはそのボット

2

に話をするサービス・ツー・サービスのアプリケーションは、コールバックはconnector.listen()こと、そして、あなたがしなければならない必要がありますあなたのapp.postに、独自のクライアントアプリケーションを作成する開発者を対象としてい一度だけconnectorを定義/呼び出ししてください。 connector.listen()を呼び出すと、エクスプレススタイルのコールバックに適した関数が返され、コネクタがbotに配線されているため、POST時にボットのダイアログルートがアクティブになります。ここで

は、サンプルアプリです:

var express = require('express') 
    , http = process.env.HTTPS == 'on' ? require('https') : require('http') 
    , builder = require('botbuilder'); 

var app = express() 
    , server = http.createServer(app) 
    , port = process.env.port || 3000 
    , config = { appId: process.env.MICROSOFT_APP_ID, appPassword: process.env.MICROSOFT_APP_PASSWORD } 
    , connector = new builder.ChatConnector(config) 
    , bot = new builder.UniversalBot(connector); 

// define bot dialog routes 
bot.dialog('/', function(session) { 
    session.send('Hello World'); 
}); 

// define app HTTP routes 
app 

    // respond to basic HTTP GET 
    .get('/', function(req, res) { 
    res.send('hello world'); 
    }) 

    // respond to bot messages 
    .post('/api/messages', connector.listen()); 

// start the server 
server.listen(port, function() { 
    console.log('Listening on %s', port); 
}); 

そして、私はあなたが潜在的なエラーを処理しようとしていることがわかります。あなたがクライアントに失敗を通信する必要がある場合は、session.send()の代わりにsession.error()を呼び出す必要があります:

bot.dialog('/', function (session) { 

    // do some processing 
    var gotError = true; 

    // respond with error 
    if (gotError) { 
    session.error(new Error('oops')) 

    // respond normally 
    } else { 
    session.send('Hello World'); 
    } 
}); 
関連する問題