tatarko / yii-slack
Yii extension for accessing Slack API with Guzzle interface
Installs: 30 798
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- guzzlehttp/guzzle: ~5.0
- yiisoft/yii: ~1.1
This package is not auto-updated.
Last update: 2025-02-01 19:01:28 UTC
README
Yii extension for accessing Slack API in Yii framework via Guzzle.
Installation
Yii Slack is composer library so you can install the latest version with:
php composer.phar require tatarko/yii-slack
Configuration
To your application's config add following:
'components' => array( 'slack' => array( 'class' => 'Tatarko\\YiiSlack\\ApplicationComponent', 'appId' => '', // Your's application ID 'appSecret' => '', // Your's application secret code 'tokenStateName' => 'slack.access.token'; // optional - change name of the user's state variable to store access token in 'companyToken' => '', // optional - set global access token of your company's account to use slack component without user authentication ), )
For OAuth authentication add following method to the controller:
class SiteController extends Controller { public function actions() { return array( 'slack' => array( 'class' => 'Tatarko\\YiiSlack\\AuthenticationAction', 'onAuthSuccess' => function(CEvent $event) { // you can get $event->params->access_token and store it in some persistant database instead of user's states (that is basically sessions variable) $this->redirect('welcome'); }, 'onAuthError' => function(CEvent $event) { // $event->params is instance of Exception (CException or GuzzleHttp\Exception\TransferException) $this->redirect('login'); }, ), ); } }
Usage
For simple OAuth just create link in any view file:
<a href="<?= $this->createUrl('site/slack') ?>">Login with Slack</a>
After that you can check if current web user is logged using Slack by calling:
var_dump(Yii::app()->slack->isAuthenticated); // boolean
And in case that user is really authenticated you can make API call like:
var_dump(Yii::app()->slack->get('auth.test'));
That prints something likes:
array(6) { 'ok' => bool(true) 'url' => string(25) "https://myteam.slack.com/" 'team' => string(7) "My Team" 'user' => string(3) "cal" 'team_id' => string(6) "T12345" 'user_id' => string(6) "U12345" }
For additional arguments use:
Yii::app()->slack->post('channels.create', array('name' => 'mychannel'));
For complete list of all available methods and their arguments go to official Slack documentation.