How to use botbuilder-azure - 10 common examples

To help you get started, we’ve selected a few botbuilder-azure examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github VoxaAI / voxa / test / botframework / BotFrameworkPlatform.spec.js View on Github external
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);
  });
github VoxaAI / voxa / test / botframework / BotFrameworkPlatform.spec.js View on Github external
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);
  });
github microsoft / botframework-solutions / templates / Enterprise-Template / src / typescript / src / index.ts View on Github external
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 {
github microsoft / botframework-solutions / templates / Enterprise-Template / src / typescript / src / index.ts View on Github external
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;
github benc-uk / smilr / botv3 / app.js View on Github external
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;
github pnp / PnP / Solutions / O365.Modern.Provisioning / VeronicaBot / app.js View on Github external
// 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');
github microsoft / BotBuilder-Samples / Node / core-CustomState / app.js View on Github external
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();
github martinkearn / AI-Services-Workshop / Bots / End / Node / app.js View on Github external
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;
github proyecto26 / MyBot / src / nodejs / bot / index.js View on Github external
// 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')
    }
github microsoft / botframework-solutions / templates / Virtual-Assistant-Template / typescript / samples / sample-assistant / src / adapters / defaultAdapter.ts View on Github external
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());