Build your own Slack Bot with this PHP library

Published on by

Build your own Slack Bot with this PHP library image

It seems like everyone is using Slack, from company channels to community groups including one for Laravel.

Bots have been the new rage within the service and if you’d like to build your own Marcel Pociot created a framework agnostic PHP Slackbot library to make this easy.

Bots built with SlackBot can hear things, say things and reply to what they hear. This allows you to create conversational applications the way real human people talk to each other.

Receiving Messages with Slack Bot

Here is an example of listening for “Hello” and replying with “Hello Yourself”. This example can be used either in a direct message (a private message inside Slack between the user and the bot) or in a message the bot user is invited to.

$slackbot = new SlackBot();
$slackbot->initialize(<my_slack_bot_token>);
 
// give the bot something to listen for.
$slackbot->hears('hello', function (SlackBot $bot, $message) {
$bot->reply('Hello yourself.');
});

The hears method takes a regular expression string to match and a callback with the response.

$slackbot->hears('open the {doorType} doors', function(SlackBot $bot, $doorType) {
//..
});

Sending Messages with Slack Bot

After the bot “hears” an incoming message you can send a reply through the reply method.

$slackbot->hears('keyword', function (SlackBot $bot, $message) {
 
// do something to respond to message
// ...
 
$bot->reply("Tell me more!");
 
});

You can also send an optional array with fields and attachments:

$slackbot->hears('keyword', function (SlackBot $bot, $message) {
 
// do something...
 
// then respond with a message object
//
$bot->reply("A more complex response",[
'username' => "ReplyBot",
'icon_emoji' => ":dash:",
]);
 
})

Slack Bot Conversations

Conversations allow you to string together several messages, including questions.

$slackbot->hears('free shirt', function (SlackBot $bot, $message) {
 
$bot->startConversation(new ShirtConversation);
 
});

Inside the ShirtConversation a run method will be called so you can control the flow:

class ShirtConversation extends Conversation
{
protected $size;
 
public function askSize()
{
$this->ask('What size do you wear?', function(Answer $answer) {
 
// Save size for next question
$this->size = $answer->getText();
 
$this->say('Thanks! A '.$answer->getText().' shirt will be sent to you');
 
});
}
 
public function run()
{
// This will be called immediately
$this->askSize();
}
 
}

This outlines some of the basics of this package and it provides even more options and configuration. You can get the code from GitHub.

Eric L. Barnes photo

Eric is the creator of Laravel News and has been covering Laravel since 2012.

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.

image
Honeybadger

Fix Laravel errors in record time. Fill in the gaps with uptime, cron, and heartbeat monitoring. Build trust with status pages and incident management—all in one simple platform.

Visit Honeybadger

The latest

View all →
Use Ollama LLM Models Locally with Laravel image

Use Ollama LLM Models Locally with Laravel

Read article
TallStackUI - a new component library for TALL Stack apps image

TallStackUI - a new component library for TALL Stack apps

Read article
Laravel 10.34 Released image

Laravel 10.34 Released

Read article
Laravel Tailwind Merge image

Laravel Tailwind Merge

Read article
Generate Validation Rules from a Database Schema in Laravel image

Generate Validation Rules from a Database Schema in Laravel

Read article
A Feature Flags Implementation for Filament image

A Feature Flags Implementation for Filament

Read article
Honeybadger logo

Honeybadger

Zero-instrumentation, 360 degree coverage of errors, outages and service degradation.

Honeybadger
Laravel Forge logo

Laravel Forge

Easily create and manage your servers and deploy your Laravel applications in seconds.

Laravel Forge
Oh Dear logo

Oh Dear

Oh Dear is the best all-in-one monitoring tool for all your Laravel apps.

Oh Dear
Tinkerwell logo

Tinkerwell

The must-have code runner for Laravel developers. Tinker with AI, autocompletion and instant feedback on local and production environments.

Tinkerwell
Kirschbaum logo

Kirschbaum

Providing innovation and stability to ensure your web application succeeds.

Kirschbaum
Shift logo

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift
Bacancy logo

Bacancy

Supercharge your project with a seasoned Laravel developer with 4-6 years of experience for just $2500/month. Get 160 hours of dedicated expertise & a risk-free 15-day trial. Schedule a call now!

Bacancy
LoadForge logo

LoadForge

Easy, affordable load testing and stress tests for websites, APIs and databases.

LoadForge
Paragraph logo

Paragraph

Manage your Laravel app as if it was a CMS – edit any text on any page or in any email without touching Blade or language files.

Paragraph
Lucky Media logo

Lucky Media

Bespoke software solutions built for your business. Partner with Lucky Media, your favorite Laravel Development Agency!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar: Laravel E-Commerce

E-Commerce for Laravel. An open-source package that brings the power of modern headless e-commerce functionality to Laravel.

Lunar: Laravel E-Commerce