summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/Integration/SlackWebhook.php22
-rw-r--r--app/Template/config/integrations.php2
-rw-r--r--app/Template/project/integrations.php2
-rw-r--r--docs/slack.markdown11
4 files changed, 37 insertions, 0 deletions
diff --git a/app/Integration/SlackWebhook.php b/app/Integration/SlackWebhook.php
index 975ea21f..a584c132 100644
--- a/app/Integration/SlackWebhook.php
+++ b/app/Integration/SlackWebhook.php
@@ -38,6 +38,23 @@ class SlackWebhook extends \Core\Base
$options = $this->projectIntegration->getParameters($project_id);
return $options['slack_webhook_url'];
}
+
+ /**
+ * Get optional Slack channel
+ *
+ * @access public
+ * @param integer $project_id
+ * @return string
+ */
+ public function getChannel($project_id)
+ {
+ if (!empty($this->config->get('integration_slack_webhook_channel'))) {
+ return $this->config->get('integration_slack_webhook_channel');
+ }
+
+ $options = $this->projectIntegration->getParameters($project_id);
+ return $options['slack_webhook_channel'];
+ }
/**
* Send message to the incoming Slack webhook
@@ -68,6 +85,11 @@ class SlackWebhook extends \Core\Base
$payload['text'] .= $this->helper->url->href('task', 'show', array('task_id' => $task_id, 'project_id' => $project_id));
$payload['text'] .= '|'.t('view the task on Kanboard').'>';
}
+
+ $channel = $this->getChannel($project_id);
+ if (!empty($channel)) {
+ $payload['channel'] = $channel;
+ }
$this->httpClient->postJson($this->getWebhookUrl($project_id), $payload);
}
diff --git a/app/Template/config/integrations.php b/app/Template/config/integrations.php
index a1299806..9c80b499 100644
--- a/app/Template/config/integrations.php
+++ b/app/Template/config/integrations.php
@@ -77,6 +77,8 @@
<?= $this->form->label(t('Webhook URL'), 'integration_slack_webhook_url') ?>
<?= $this->form->text('integration_slack_webhook_url', $values, $errors) ?>
+ <?= $this->form->label(t('Channel/Group/User (Optional)'), 'integration_slack_webhook_channel') ?>
+ <?= $this->form->text('integration_slack_webhook_channel', $values, $errors) ?>
<p class="form-help"><a href="http://kanboard.net/documentation/slack" target="_blank"><?= t('Help on Slack integration') ?></a></p>
</div>
diff --git a/app/Template/project/integrations.php b/app/Template/project/integrations.php
index 698e438c..445e7bfb 100644
--- a/app/Template/project/integrations.php
+++ b/app/Template/project/integrations.php
@@ -85,6 +85,8 @@
<?= $this->form->label(t('Webhook URL'), 'slack_webhook_url') ?>
<?= $this->form->text('slack_webhook_url', $values, $errors) ?>
+ <?= $this->form->label(t('Channel/Group/User (Optional)'), 'slack_webhook_channel') ?>
+ <?= $this->form->text('slack_webhook_channel', $values, $errors) ?>
<p class="form-help"><a href="http://kanboard.net/documentation/slack" target="_blank"><?= t('Help on Slack integration') ?></a></p>
diff --git a/docs/slack.markdown b/docs/slack.markdown
index af60d38e..437098ac 100644
--- a/docs/slack.markdown
+++ b/docs/slack.markdown
@@ -26,3 +26,14 @@ This feature use the [Incoming webhook](https://api.slack.com/incoming-webhooks)
3. Copy the webhook url to the Kanboard settings page: **Settings > Integrations > Slack** or **Project settings > Integrations > Slack**
Now, Kanboard events will be sent to the Slack channel.
+
+### Overriding Channel (Optional)
+
+Optnally you can override the channel, private group or send direct messages by filling up **Channel/Group/User** textbox. Leaving it empty will post to the channel configured during webhook configuration.
+
+Examples:
+
+- #mychannel1 - Send message to channel 'mychannel1'
+- #myprivategroup1 - Send message to private group 'myprivategroup1'
+- @anotheruser1 - Send message to user 'anotheruser1'
+