Slack channel can be overridden to post to another channel/private group or send direct messages. Need to make these database changes:

INSERT INTO settings VALUES ('integration_slack_webhook_channel', '');
ALTER TABLE project_integrations ADD COLUMN slack_webhook_channel text;
This commit is contained in:
Ash Bike
2015-07-05 02:16:18 +05:30
parent 33669c1bac
commit bc6b443c3d
4 changed files with 37 additions and 0 deletions

View File

@@ -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);
}