2017 © Pedro Peláez
 

library laravel-slack-slash-command

Make a Laravel app respond to a slash command from Slack

image

spatie/laravel-slack-slash-command

Make a Laravel app respond to a slash command from Slack

  • Monday, February 12, 2018
  • by Spatie
  • Repository
  • 6 Watchers
  • 143 Stars
  • 16,918 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 23 Forks
  • 1 Open issues
  • 21 Versions
  • 8 % Grown

The README.md

Logo for laravel-slack-slash-command

Making a Laravel app respond to Slack commands

[![Latest Version on Packagist](https://img.shields.io/packagist/v/spatie/laravel-slack-slash-command.svg?style=flat-square)](https://packagist.org/packages/spatie/laravel-slack-slash-command) [![MIT Licensed](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md) [![Build Status](https://img.shields.io/travis/spatie/laravel-slack-slash-command/master.svg?style=flat-square)](https://travis-ci.org/spatie/laravel-slack-slash-command) [![Quality Score](https://img.shields.io/scrutinizer/g/spatie/laravel-slack-slash-command.svg?style=flat-square)](https://scrutinizer-ci.com/g/spatie/laravel-slack-slash-command) [![Total Downloads](https://img.shields.io/packagist/dt/spatie/laravel-slack-slash-command.svg?style=flat-square)](https://packagist.org/packages/spatie/laravel-slack-slash-command)

This package makes it easy to make your Laravel app respond to Slack's Slash commands., (*1)

Once you've setup your Slash command over at Slack and installed this package into a Laravel app you can create handlers that can handle a slash command. Here's an example of such a handler that will send a response back to slack., (*2)

namespace App\SlashCommandHandlers;

use App\SlashCommand\BaseHandler;
use Spatie\SlashCommand\Request;
use Spatie\SlashCommand\Response;

class CatchAll extends BaseHandler
{
    /**
     * If this function returns true, the handle method will get called.
     *
     * @param \Spatie\SlashCommand\Request $request
     *
     * @return bool
     */
    public function canHandle(Request $request): bool
    {
        return true;
    }

    /**
     * Handle the given request. Remember that Slack expects a response
     * within three seconds after the slash command was issued. If
     * there is more time needed, dispatch a job.
     * 
     * @param \Spatie\SlashCommand\Request $request
     * 
     * @return \Spatie\SlashCommand\Response
     */
    public function handle(Request $request): Response
    {
        return $this->respondToSlack("You have typed this text: `{$request->text}`");
    }
}

Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects on our website., (*3)

Support us

, (*4)

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products., (*5)

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall., (*6)

Installation

You can install the package via composer:, (*7)

``` bash composer require spatie/laravel-slack-slash-command, (*8)


This service provider must be installed. ```php // config/app.php 'providers' => [ ... Spatie\SlashCommand\SlashCommandServiceProvider::class, ];

You can publish the config-file with:, (*9)

php artisan vendor:publish --provider="Spatie\SlashCommand\SlashCommandServiceProvider"

This is the contents of the published file:, (*10)

return [

    /*
     * At the integration settings over at Slack you can configure the url to which the 
     * slack commands are posted. Specify the path component of that url here. 
     * 
     * For `http://example.com/slack` you would put `slack` here.
     */
    'url' => 'slack',

    /*
     * The token generated by Slack with which to verify if a incoming slash command request is valid.
     */
    'token' => env('SLACK_SLASH_COMMAND_VERIFICATION_TOKEN'),

    /*
     * The signing_secret generated by Slack with which to verify if a incoming slash command request is valid.
     */
    'signing_secret' => env('SLACK_SIGNING_SECRET'),

    /*
     * Verify requests from slack with signing_secret signature
     */
    'verify_with_signing' => false,

    /*
     * The handlers that will process the slash command. We'll call handlers from top to bottom
     * until the first one whose `canHandle` method returns true.
     */
    'handlers' => [
        //add your own handlers here


        //this handler will display instructions on how to use the various commands.
        Spatie\SlashCommand\Handlers\Help::class,

        //this handler will respond with a `Could not handle command` message.
        Spatie\SlashCommand\Handlers\CatchAll::class,
    ],
];

Change verify_with_signing parameter to verify requests from slack by signing_secret:, (*11)

// config/laravel-slack-slash-command.php
'verify_with_signing' => true

Documentation

You'll find the documentation on https://docs.spatie.be/laravel-slack-slash-command., (*12)

Find yourself stuck using the package? Found a bug? Do you have general questions or suggestions for improving the media library? Feel free to create an issue on GitHub, we'll try to address it as soon as possible., (*13)

Changelog

Please see CHANGELOG for more information what has changed recently., (*14)

Testing

bash $ composer test, (*15)

Contributing

Please see CONTRIBUTING for details., (*16)

Security

If you've found a bug regarding security please mail security@spatie.be instead of using the issue tracker., (*17)

Postcardware

You're free to use this package, but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using., (*18)

Our address is: Spatie, Kruikstraat 22, 2018 Antwerp, Belgium., (*19)

We publish all received postcards on our company website., (*20)

Credits

The message and attachment functionalities were heavily inspired on Regan McEntyre's Slack package., (*21)

License

The MIT License (MIT). Please see License File for more information., (*22)

The Versions