Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'botbuilder-azure' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
beforeEach(() => {
app = new VoxaApp({ views, variables });
azureTableClient = new azure.AzureTableClient();
storage = new azure.AzureBotStorage({ gzipData: false }, azureTableClient);
// we need to mock this before instantiating the platforms cause otherwise
// we try to get the authorization token
adapter = new BotFrameworkPlatform(app, { recognizer, storage });
simple.mock(storage, 'getData')
.callbackWith(null, {});
simple.mock(storage, 'saveData')
.callbackWith(null, {});
simple.mock(adapter, 'botApiRequest')
.resolveWith(true);
});
beforeEach(() => {
app = new VoxaApp({ views, variables });
azureTableClient = new azure.AzureTableClient();
storage = new azure.AzureBotStorage({ gzipData: false }, azureTableClient);
// we need to mock this before instantiating the platforms cause otherwise
// we try to get the authorization token
adapter = new BotFrameworkPlatform(app, { recognizer, storage });
simple.mock(storage, 'getData')
.callbackWith(null, {});
simple.mock(storage, 'saveData')
.callbackWith(null, {});
simple.mock(adapter, 'botApiRequest')
.resolveWith(true);
});
const userState = new UserState(storage);
// Use the AutoSaveStateMiddleware middleware to automatically read and write conversation and user state.
// CONSIDER: if only using userState, then switch to adapter.use(userState);
adapter.use(new AutoSaveStateMiddleware(conversationState, userState));
// Transcript Middleware (saves conversation history in a standard format)
const AzureBlobTranscriptStore = require("botbuilder-azure").AzureBlobTranscriptStore;
const BLOB_CONFIGURATION = process.env.BLOB_NAME || ""; // this is the name of the BlobStorage configuration in your .bot file
const blobStorageConfig: IBlobStorageService = botConfig.findServiceByNameOrId(BLOB_CONFIGURATION) as IBlobStorageService;
if (!blobStorageConfig) {
console.log("Please configure your Blob storage connection in your .bot file.");
process.exit(BOT_CONFIGURATION_ERROR);
}
const blobStorage = new BlobStorageService(blobStorageConfig);
const transcriptStore = new AzureBlobTranscriptStore({
containerName: blobStorage.container,
storageAccountOrConnectionString: blobStorage.connectionString,
});
adapter.use(new TranscriptLoggerMiddleware(transcriptStore));
// Typing Middleware (automatically shows typing when the bot is responding/working) (not implemented https://github.com/Microsoft/botbuilder-js/issues/470)
// adapter.use(new ShowTypingMiddleware());
// Content Moderation Middleware (analyzes incoming messages for inappropriate content including PII, profanity, etc.)
import { ContentModeratorMiddleware } from "./middleware/contentModeratorMiddleware";
const CM_CONFIGURATION = process.env.CONTENT_MODERATOR_NAME || ""; // this is the name of the Content Moderator configuration in your .bot file
const cmConfig: IGenericService = botConfig.findServiceByNameOrId(CM_CONFIGURATION) as IGenericService;
if (cmConfig && cmConfig.configuration.key && cmConfig.configuration.region) {
const contentModerator = new ContentModeratorMiddleware(cmConfig.configuration.key, cmConfig.configuration.region);
adapter.use(contentModerator);
} else {
await turnContext.sendActivity("Sorry, it looks like something went wrong.");
};
// CAUTION: The Memory Storage used here is for local bot debugging only. When the bot
// is restarted, anything stored in memory will be gone.
// const storage = new MemoryStorage();
// For production bots use the Azure CosmosDB storage, Azure Blob, or Azure Table storage provides.
const CosmosDbStorage = require("botbuilder-azure").CosmosDbStorage;
const STORAGE_CONFIGURATION = process.env.STORAGE_NAME || ""; // this is the name of the cosmos DB configuration in your .bot file
const cosmosConfig: ICosmosDBService = botConfig.findServiceByNameOrId(STORAGE_CONFIGURATION) as ICosmosDBService;
if (!cosmosConfig) {
console.log("Please configure your CosmosDB connection in your .bot file.");
process.exit(BOT_CONFIGURATION_ERROR);
}
const storage = new CosmosDbStorage({
authKey: cosmosConfig.key,
collectionId: cosmosConfig.collection,
databaseId: cosmosConfig.database,
serviceEndpoint: cosmosConfig.endpoint,
});
// create conversation and user state with in-memory storage provider.
const conversationState = new ConversationState(storage);
const userState = new UserState(storage);
// Use the AutoSaveStateMiddleware middleware to automatically read and write conversation and user state.
// CONSIDER: if only using userState, then switch to adapter.use(userState);
adapter.use(new AutoSaveStateMiddleware(conversationState, userState));
// Transcript Middleware (saves conversation history in a standard format)
const AzureBlobTranscriptStore = require("botbuilder-azure").AzureBlobTranscriptStore;
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
* ---------------------------------------------------------------------------------------- */
var tableName = 'botdata';
var azureTableClient = new botbuilder_azure.AzureTableClient(tableName, process.env['AzureWebJobsStorage']);
var 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.
var bot = new builder.UniversalBot(connector, function (session, args) {
session.send('You reached the default message handler. You said \'%s\'.', session.message.text);
});
bot.set('storage', tableStorage);
// Make sure you add code to validate these fields
var luisAppId = process.env.LuisAppId;
var luisAPIKey = process.env.LuisAPIKey;
var luisAPIHostName = process.env.LuisAPIHostName || 'westus.api.cognitive.microsoft.com';
const LuisModelUrl = 'https://' + luisAPIHostName + '/luis/v2.0/apps/' + luisAppId + '?subscription-key=' + luisAPIKey;
// Graph
var graph = {};
// 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
* ---------------------------------------------------------------------------------------- */
var tableName = 'botdata';
var azureTableClient = new botbuilder_azure.AzureTableClient(tableName, process.env['AzureWebJobsStorage']);
var tableStorage = new botbuilder_azure.AzureBotStorage({ gzipData: false }, azureTableClient);
// Create your bot with a function to receive messages from the user
var bot = new builder.UniversalBot(connector);
bot.set('storage', tableStorage);
bot.dialog('/', [
function (session) {
if (session.privateConversationData["welcome"]) {
session.send("Hi I'm your SharePoint Bot to assist you to request a new SharePoint site or Teams, what do you want to request?");
}
session.privateConversationData["welcome"] = 'true';
session.beginDialog('makeYourChoice');
},
function (session, results) {
session.privateConversationData["SiteType"] = results.response;
session.beginDialog('askForTitle');
if (!session.privateConversationData[UserWelcomedKey]) {
session.privateConversationData[UserWelcomedKey] = true;
return session.send('Welcome back %s! Remember the rules: %s', userName, HelpMessage);
}
session.beginDialog('search');
}).set('storage', inMemoryStorage); // Register in memory storage
// Azure DocumentDb State Store
var docDbClient = new azure.DocumentDbClient({
host: process.env.DOCUMENT_DB_HOST,
masterKey: process.env.DOCUMENT_DB_MASTER_KEY,
database: process.env.DOCUMENT_DB_DATABASE,
collection: process.env.DOCUMENT_DB_COLLECTION
});
var botStorage = new azure.AzureBotStorage({ gzipData: false }, docDbClient);
// Set Custom Store
bot.set('storage', botStorage);
// Enable Conversation Data persistence
bot.set('persistConversationData', true);
// search dialog
bot.dialog('search', function (session, args, next) {
// perform search
var city = session.privateConversationData[CityKey] || session.conversationData[CityKey];
var userName = session.userData[UserNameKey];
var messageText = session.message.text.trim();
session.send('%s, wait a few seconds. Searching for \'%s\' in \'%s\'...', userName, messageText, city);
session.send('https://www.bing.com/search?q=%s', encodeURIComponent(messageText + ' in ' + city));
session.endDialog();
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
* ---------------------------------------------------------------------------------------- */
var tableName = 'botdata';
var azureTableClient = new botbuilder_azure.AzureTableClient(tableName, process.env['AzureWebJobsStorage']);
var 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.
var bot = new builder.UniversalBot(connector, function (session, args) {
session.send('You reached the default message handler. You said \'%s\'.', session.message.text);
});
bot.set('storage', tableStorage);
// Make sure you add code to validate these fields
var luisAppId = process.env.LuisAppId;
var luisAPIKey = process.env.LuisAPIKey;
var luisAPIHostName = process.env.LuisAPIHostName || 'westus.api.cognitive.microsoft.com';
const LuisModelUrl = 'https://' + luisAPIHostName + '/luis/v2.0/apps/' + luisAppId + '?subscription-key=' + luisAPIKey;
// Create chat connector for communicating with the Bot Framework Service
const connector = new builder.ChatConnector({
appId: microsoftAppId,
appPassword: microsoftAppPassword,
openIdMetadata: process.env.BotOpenIdMetadata
})
/*----------------------------------------------------------------------------------------
* 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, azureWebJobsStorage)
const tableStorage = new botbuilder_azure.AzureBotStorage({ gzipData: false }, azureTableClient)
const dialogs = require('require-all')(__dirname + '/dialogs')
const luis = require('./luis.js')
const _initialize = (server) => {
// Listen for messages from users
server.post('/api/messages', connector.listen())
// Create your bot with a function to receive messages from the user
const bot = new builder.UniversalBot(connector, (session, args) => {
// Prevent open dialogs when LUIS is enabled
if(!session.userData.luisEnabled) {
session.beginDialog('/menu')
}
databaseId: settings.cosmosDb.databaseId,
serviceEndpoint: settings.cosmosDb.cosmosDBEndpoint
};
const storage: CosmosDbStorage = new CosmosDbStorage(this.cosmosDbStorageSettings);
// create conversation and user state
this.conversationState = new ConversationState(storage);
this.userState = new UserState(storage);
this.proactiveState = new ProactiveState(storage);
if (settings.blobStorage === undefined) {
throw new Error('There is no blobStorage value in appsettings file');
}
this.transcriptStore = new AzureBlobTranscriptStore({
containerName: settings.blobStorage.container,
storageAccountOrConnectionString: settings.blobStorage.connectionString
});
if (settings.appInsights === undefined) {
throw new Error('There is no appInsights value in appsettings file');
}
this.telemetryClient = new TelemetryClient(settings.appInsights.instrumentationKey);
// Use the AutoSaveStateMiddleware middleware to automatically read and write conversation and user state.
this.use(new AutoSaveStateMiddleware(this.conversationState, this.userState));
// Currently not working https://github.com/Microsoft/botbuilder-js/issues/853#issuecomment-481416004
// this.use(new TranscriptLoggerMiddleware(this.transcriptStore));
// Typing Middleware (automatically shows typing when the bot is responding/working)
this.use(new ShowTypingMiddleware());