- Create a Luis Chat Bot on Azure Bot Service - Part 1
- Create a Luis Chat Bot on Azure Bot Service - Part 2
1. Install Nginx
Download the latest version for Windows from: http://nginx.org/en/download.html
Unpack it on a folder (e.g. C:\nginx ) and click nginx.exe to run nginx. Open your browser, run http://localhost/. If you see a screen like below, it means Nginx is running well.
2. Run your chat bot
Assuming that you've coded a wonderful chat bot, let run it. For example, I have a super chat bot by echoing what user says, it is in app.js file as the following:
var restify = require('restify');Run app.js:
var builder = require('botbuilder');
// Create chat bot
var connector = new builder.ChatConnector({
appId: 'app id of your bot on MS Bot Framework',
appPassword: 'password of your bot on MS Bot Framework'
});
// Receive messages from the user and respond
var bot = new builder.UniversalBot(connector, function(session) {
session.send("You said: %s", session.message.text);
});
// Setup Restify Server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 5678, function() {
console.log('%s listening to %s', server.name, server.url);
});
// Listen for messages from users
server.post('/api/messages', connector.listen());
node app.jsNote that appId and appPassword will be replaced by your real values when you register your bot on MS Bot Framework.
3. Set up Nginx as proxy for your chat bot
Assuming that you want to run your chat bot on the link: yourdomain.com/bot. Open nginx.conf file (e.g. C:\nginx\conf\nginx.conf) and add a server configuration for your domain:
Now you can open the chat emulator for testing with the link http://yourdomain.com/bot to see if it works (see section 3 of Create a Luis Chat Bot on Azure Bot Service - Part 1 for setting the emulator with ngrok):server {
listen *:80;
server_name yourdomain.com www.yourdomain.com;location / {
root your_web_site_root_folder;
index index.html index.htm;
}location /bot {
proxy_pass http://localhost:5678/api/messages;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
4. Set up HTTPS
MS Bot Framework just allows to register a bot with HTTPS end point message. So that's why we need to set up HTTPS. Luckily, we can setup HTTPS with free SSL Certificate from Let's Encrypt. You can read my article WAMP 64 Bits + Free SSL (section 5) for how to create a free SSL certificate.
Below is the configuration on nginx for a server with SSL:
Test again on the emulator with https://yourdomain.com/botserver {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;ssl_certificate C:/ProgramData/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/www.yourdomain.com-crt.pem;
ssl_certificate_key C:/ProgramData/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/www.yourdomain.com-key.pem;
ssl_trusted_certificate C:/ProgramData/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/ca-<hex number>-crt.pem;ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_prefer_server_ciphers on;location / {
root your_web_site_root_folder;
index index.html index.htm;
}location /bot {
proxy_pass http://localhost:5678/api/messages;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
5. Register your bot
Go to https://dev.botframework.com, sign in and click My bots menu for registering your bot. Remember to select Register an existing bot built using Bot Builder SDK when creating new bot.
It will open a page for you keying your bot info. Note that Messaging endpoint is https://yourdomain.com/bot.
Click Create Microsoft App ID and password to create app id & password for your bot. Paste your app ID to the required box then copy the app id & password into the source code of your bot (e.g. appId & appPassword in section 2). Save the setting.
Now you can click Test button on top right for testing your bot directly from the website https://dev.botframework.com. For example:
You can also connect your chat bot to other channel like Facebook (see Create a Luis Chat Bot on Azure Bot Service - Part 2 for how to connect with Facebook).
Alright, you have known how to set up a production environment for your chat bot which can be hosted any where.
Have fun! Any comment is welcome.