Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const { Botkit } = require('botkit');
const { MemoryStorage } = require('botbuilder');
const { SlackAdapter } = require('botbuilder-adapter-slack');
const express = require('express');
const WatsonMiddleware = require('botkit-middleware-watson').WatsonMiddleware;
const middleware = new WatsonMiddleware({
iam_apikey: process.env.ASSISTANT_IAM_APIKEY,
workspace_id: process.env.WORKSPACE_ID,
url: process.env.ASSISTANT_URL || 'https://gateway.watsonplatform.net/assistant/api',
version: '2018-07-10'
});
// Configure your bot.
const adapter = new SlackAdapter({
clientSigningSecret: process.env.SLACK_CLIENT_SIGNING_SECRET,
botToken: process.env.SLACK_TOKEN,
});
const controller = new Botkit({
adapter,
storage: new MemoryStorage(),
// ...other options
});
controller.hears(['.*'], ['direct_message', 'direct_mention', 'mention'], async (bot, message) => {
console.log('Slack message received');
await middleware.interpret(bot, message);
if (message.watsonError) {
console.log(message.watsonError);
await bot.reply(message, message.watsonError.description || message.watsonError.error);
controller.on('interactive_message', async (bot, message) => {
console.log('INTERACTIVE MESSAGE', message);
switch(message.actions[0].name) {
case 'replace':
await bot.replyInteractive(message,'[ A previous message was successfully replaced with this less exciting one. ]');
break;
case 'dialog':
await bot.replyWithDialog(message, new SlackDialog('this is a dialog', '123', 'Submit', [
{
type: 'text',
label: 'Field 1',
name: 'field1',
},
{
type: 'text',
label: 'Field 2',
name: 'field2',
}
]).notifyOnCancel(true).state('foo').asObject());
break;
default:
await bot.reply(message, 'Got a button click!');
}
});
controller.on('interactive_message', async (bot, message) => {
console.log('INTERACTIVE MESSAGE', message);
switch(message.actions[0].name) {
case 'replace':
await bot.replyInteractive(message,'[ A previous message was successfully replaced with this less exciting one. ]');
break;
case 'dialog':
await bot.replyWithDialog(message, new SlackDialog('this is a dialog', '123', 'Submit', [
{
type: 'text',
label: 'Field 1',
name: 'field1',
},
{
type: 'text',
label: 'Field 2',
name: 'field2',
}
]).notifyOnCancel(true).state('foo').asObject());
break;
default:
await bot.reply(message, 'Got a button click!');
}
});