溶液從Microsoft BotBuilder框架GitHub的回購給我的Maxpert。
<!-- language: lang-js -->
'use strict';
const Hapi = require('hapi');
const botbuilder = require('botbuilder');
const server = new Hapi.Server();
server.connection({ port: 3000 });
/**
* interface IWebResponse {
* end(): this;
* send(status: number, body?: any): this;
* send(body: any): this;
* status(code: number): this;
* }
*/
function responseWrapper(res) {
return {
end() {
res.end();
return this;
},
send(statusOrBody, maybeBody, callback) {
var responseCode = 200;
var responseBody = maybeBody;
if (typeof statusOrBody == 'number') {
responseCode = statusOrBody;
responseBody = maybeBody;
} else {
responseBody = statusOrBody;
}
if (typeof responseBody != 'string') {
responseBody = JSON.stringify(responseBody);
}
res.writeHead(responseCode);
res.setHeader("Content-Type", "application/json");
res.write(responseBody, callback);
res.end();
return this;
},
status(code) {
res.writeHead(code);
return this;
}
}
}
/**
*
* interface IWebRequest {
* body: any;
* headers: {
* [name: string]: string;
* };
* on(event: string, ...args: any[]): void;
* }
*
*/
function requestWrapper(request) {
return {
body: request.payload,
headers: request.headers,
on(event, listener) {
request.raw.req.on(event, listener)
return this;
}
}
}
// Initialize your connector
const connector = new botbuilder.ChatConnector({
appId: 'YOUR APP ID',
appPassword: 'YOUR APP PASSWORD'
});
const bot = new botbuilder.UniversalBot(connector);
const botHandler = connector.listen();
//=========================================================
// Bots Dialogs
//=========================================================
bot.dialog('/', function (session) {
session.send("Hello World");
});
server.route({
method: 'POST',
path: '/api/messages',
handler: function (request, reply) {
var wrappedResponse = responseWrapper(request.raw.res);
var wrappedRequest = requestWrapper(request);
botHandler(wrappedRequest, wrappedResponse); // Forwarded!!!
}
});
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
var req = request.raw.req,
res = request.raw.res;
reply('Hello, world!');
}
});
server.start((err) => {
if (err) {
throw err;
}
console.log(`Server running at: ${server.info.uri}`);
});