Skip to content

Instantly share code, notes, and snippets.

@derchrisuk
Created October 14, 2019 10:39
Show Gist options
  • Save derchrisuk/765eb2ae14dc3806c1d4c47298592cf1 to your computer and use it in GitHub Desktop.
Save derchrisuk/765eb2ae14dc3806c1d4c47298592cf1 to your computer and use it in GitHub Desktop.
// __ __ ___ ___
// |__) / \ | |__/ | |
// |__) \__/ | | \ | |
// This is the main file for the grumpy-dev bot.
// Import Botkit's core features
const { Botkit } = require('botkit');
const { BotkitCMSHelper } = require('botkit-plugin-cms');
// Import a platform-specific adapter for webex.
const { WebexAdapter } = require('botbuilder-adapter-webex');
const { MongoDbStorage } = require('botbuilder-storage-mongodb');
// Load process.env values from .env file
require('dotenv').config();
let storage = null;
if (process.env.MONGO_URI) {
storage = mongoStorage = new MongoDbStorage({
url : process.env.MONGO_URI,
});
}
const adapter = new WebexAdapter({
// REMOVE THIS OPTION AFTER YOU HAVE CONFIGURED YOUR APP!
enable_incomplete: true,
access_token: process.env.access_token,
public_address: process.env.public_address,
//secret: process.env.secret,
webhook_name: 'grumpy-dev'
})
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
storage
});
let PORT = 3000;
// Spark Websocket Intialization
const SparkWebSocket = require('./libs/SparkWebSocket.js');
//var SparkWebSocket = require('ciscospark-websocket-events');
sparkwebsocket = new SparkWebSocket(process.env.access_token);
sparkwebsocket.connect(function (err, res) {
if (!err) {
sparkwebsocket.setWebHookURL("http://localhost:" + PORT + "/api/messages");
}
else {
console.log("Error starting up websocket: " + err);
}
});
if (process.env.cms_uri) {
controller.usePlugin(new BotkitCMSHelper({
uri: process.env.cms_uri,
token: process.env.cms_token,
}));
}
// Once the bot has booted up its internal services, you can use them to do stuff.
controller.ready(() => {
// load traditional developer-created local custom feature modules
controller.loadModules(__dirname + '/features');
/* catch-all that uses the CMS to trigger dialogs */
if (controller.plugins.cms) {
controller.on('message,direct_message', async (bot, message) => {
let results = false;
results = await controller.plugins.cms.testTrigger(bot, message);
if (results !== false) {
// do not continue middleware!
return false;
}
});
}
});
//controller.ready(async function () {
// await controller.adapter.registerAdaptiveCardWebhookSubscription('/api/messages');
//});
controller.webserver.get('/', (req, res) => {
res.send(`This app is running Botkit ${ controller.version }.`);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment