| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /**
- * slack
- */
- module.exports = function(crowi) {
- 'use strict';
- var debug = require('debug')('crowi:util:slack'),
- Config = crowi.model('Config'),
- Botkit = require('botkit'),
- slack = {};
- slack.controller = undefined;
- slack.createBot = function() {
- var bot;
- var config = crowi.getConfig();
- if (!slack.controller) {
- slack.configureSlackApp();
- }
- if (!slack.controller) {
- return false;
- }
- if (Config.hasSlackToken(config)) {
- bot = slack.controller.spawn({token: config.notification['slack:token']});
- } else {
- bot = slack.controller.spawn();
- }
- return bot;
- };
- slack.configureSlackApp = function ()
- {
- var config = crowi.getConfig();
- if (Config.hasSlackConfig(config)) {
- slack.controller = Botkit.slackbot();
- slack.controller.configureSlackApp({
- clientId: config.notification['slack:clientId'],
- clientSecret: config.notification['slack:clientSecret'],
- redirectUri: slack.getSlackAuthCallbackUrl(),
- scopes: ['chat:write:bot']
- });
- return true;
- }
- return false;
- }
- // hmmm
- slack.getSlackAuthCallbackUrl = function()
- {
- var config = crowi.getConfig();
- // Web アクセスがきてないと app:url がセットされないので crowi.setupSlack 時にはできない
- // cli, bot 系作るときに問題なりそう
- return (config.crowi['app:url'] || '') + '/admin/notification/slackAuth';
- }
- slack.getAuthorizeURL = function () {
- if (!slack.controller) {
- slack.configureSlackApp();
- }
- if (!slack.controller) {
- return '';
- }
- return slack.controller.getAuthorizeURL();
- }
- return slack;
- };
|