slack-bundle

Symfony bundle integration of the nexylan/slack library.

MIT License

Downloads
1.1M
Stars
109
Committers
7

NexySlackBundle

Symfony bundle integration of the nexylan/slack library (old popular maknz/slack).

Documentation

All the installation and usage instructions are located in this README. Check it for specific version:

  • 1.x with support for Symfony >=2.7
  • 2.x with support for Symfony >=3.4

Prerequisites

This version of the project requires:

  • PHP 7.1+
  • Symfony 3.4+

Installation

First of all, you need to require this library through composer:

$ composer require nexylan/slack-bundle php-http/guzzle6-adapter

Why php-http/guzzle6-adapter? We are decoupled from any HTTP messaging client thanks to HTTPlug.

Then, enable the bundle on the AppKernel class:

// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Http\HttplugBundle\HttplugBundle(),
        new Nexy\SlackBundle\NexySlackBundle(),
    );

    // ...

    return $bundles
}

Configuration

If it is not already done, you have to configure httplug-bundle first. Check the official documentation for this.

Configure the bundle to your needs (example with default values):

nexy_slack:

    # If you want to use an another httplug client service.
    http:
        client: httplug.client

    # The Slack API Incoming WebHooks URL.
    endpoint:             ~ # Required
    channel:              null
    username:             null
    icon:                 null
    link_names:           false
    unfurl_links:         false
    unfurl_media:         true
    allow_markdown:       true
    markdown_in_attachments: []

Excepted endpoint, all the other configuration keys are related to the Slack client default settings.

All those settings are described on the nexylan/slack documentation.

Usage

The Slack client instance can be retrieved from the nexy_slack.client service.

Here is an example:

<?php

namespace AppBundle\Controller;

use Nexy\Slack\Attachment;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller
{
    public function indexAction()
    {
        $slack = $this->get('nexy_slack.client');

        $message = $slack->createMessage();

        $message
            ->to('#test')
            ->from('John Doe')
            ->withIcon(':ghost:')
            ->setText('This is an amazing message!')
        ;

        $message->attach((new Attachment())
             ->setFallback('Some fallback text')
             ->setText('The attachment text')
         );

        $slack->sendMessage($message);
    }
}

All the how to manipulate the Slack client is on the nexylan/slack documentation.