| // author: Gary A. Stafford | |
| // site: https://programmaticponderings.com | |
| // license: MIT License | |
| // description: Azure Tech Facts LUIS-enabled Chatbot | |
| 'use strict'; | |
| /*----------------------------------------------------------------------------- | |
| A simple Language Understanding (LUIS) bot for the Microsoft Bot Framework. | |
| -----------------------------------------------------------------------------*/ | |
| /* CONSTANTS AND GLOBAL VARIABLES */ | |
| const restify = require('restify'); | |
| const builder = require('botbuilder'); | |
| const botbuilder_azure = require("botbuilder-azure"); | |
| const mongoClient = require('mongodb').MongoClient; | |
| const COSMOS_DB_CONN_STR = process.env.COSMOS_DB_CONN_STR; | |
| const DB_COLLECTION = "azuretechfacts"; | |
| const ICON_STORAGE_URL = process.env.ICON_STORAGE_URL; | |
| // Setup Restify Server | |
| const server = restify.createServer(); | |
| server.listen(process.env.port || process.env.PORT || 3978, function () { | |
| console.log('%s listening to %s', server.name, server.url); | |
| }); | |
| // Create chat connector for communicating with the Bot Framework Service | |
| const connector = new builder.ChatConnector({ | |
| appId: process.env.MicrosoftAppId, | |
| appPassword: process.env.MicrosoftAppPassword, | |
| openIdMetadata: process.env.BotOpenIdMetadata | |
| }); | |
| // Listen for messages from users | |
| server.post('/api/messages', connector.listen()); | |
| /*---------------------------------------------------------------------------------------- | |
| * Bot Storage: This is a great spot to register the private state storage for your bot. | |
| * We provide adapters for Azure Table, CosmosDb, SQL Azure, or you can implement your own! | |
| * For samples and documentation, see: https://github.com/Microsoft/BotBuilder-Azure | |
| * ---------------------------------------------------------------------------------------- */ | |
| const tableName = 'botdata'; | |
| const azureTableClient = new botbuilder_azure.AzureTableClient(tableName, process.env['AzureWebJobsStorage']); | |
| const tableStorage = new botbuilder_azure.AzureBotStorage({gzipData: false}, azureTableClient); | |
| // Create your bot with a function to receive messages from the user | |
| // This default message handler is invoked if the user's utterance doesn't | |
| // match any intents handled by other dialogs. | |
| const bot = new builder.UniversalBot(connector, function (session, args) { | |
| const DEFAULT_RESPONSE = `Sorry, I didn't understand: _'${session.message.text}'_.`; | |
| session.send(DEFAULT_RESPONSE).endDialog(); | |
| }); | |
| bot.set('storage', tableStorage); | |
| // Make sure you add code to validate these fields | |
| const luisAppId = process.env.LuisAppId; | |
| const luisAPIKey = process.env.LuisAPIKey; | |
| const luisAPIHostName = process.env.LuisAPIHostName || 'westus.api.cognitive.microsoft.com'; | |
| const LuisModelUrl = 'https://' + luisAPIHostName + '/luis/v2.0/apps/' + luisAppId + '?subscription-key=' + luisAPIKey; | |
| // Create a recognizer that gets intents from LUIS, and add it to the bot | |
| const recognizer = new builder.LuisRecognizer(LuisModelUrl); | |
| bot.recognizer(recognizer); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment