CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

24 April, 2021

Build your own Slack Bot with this PHP library

 Programing Coderfunda     April 24, 2021     Packages, php     No comments   

Build your own Slack Bot with this PHP library


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.


  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook

Related Posts:

  • Get Helpful Information about Models in Laravel Laravel Model Info is a package by Spatie to get information on all the models in your Laravel project. This package is help… Read More
  • Meilitools offers advanced Meilisearch index features in Laravel Scout Laravel Meilitools provides additional tools for Laravel Scout 9+ integration with MeiliSearch. This package aims to open the possibil… Read More
  • Creating Installer Commands for Laravel PackagesThe Laravel Package Tools package by Spatie added a nifty feature we wanted to help share with the community: streamlined install commands f… Read More
  • Remove Sensitive Information from Laravel Apps Laravel Scrubber is a Laravel package to scrub sensitive information that breaks operational security policies from being leaked on ac… Read More
  • Handle Webhooks in Laravel with Receiver Laravel Receiver is a drop-in webhook handling library for Laravel. It makes handling incoming webhooks easy, with built-in support fo… Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Features CodeIgniter
    Features CodeIgniter There is a great demand for the CodeIgniter framework in PHP developers because of its features and multiple advan...
  • Write API Integrations in Laravel and PHP Projects with Saloon
    Write API Integrations in Laravel and PHP Projects with Saloon Saloon  is a Laravel/PHP package that allows you to write your API integratio...
  • Laravel Breeze with PrimeVue v4
    This is an follow up to my previous post about a "starter kit" I created with Laravel and PrimeVue components. The project has b...
  • Fast Excel Package for Laravel
      Fast Excel is a Laravel package for importing and exporting spreadsheets. It provides an elegant wrapper around Spout —a PHP package to ...
  • Send message via CANBus
    After some years developing for mobile devices, I've started developing for embedded devices, and I'm finding a new problem now. Th...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (68)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh - 9/21/2024
  • pyspark XPath Query Returns Lists Omitting Missing Values Instead of Including None - 9/20/2024
  • SQL REPL from within Python/Sqlalchemy/Psychopg2 - 9/20/2024
  • MySql Explain with Tobias Petry - 9/20/2024
  • How to combine information from different devices into one common abstract virtual disk? [closed] - 9/20/2024

Laravel News

  • Manipulate Image URLs in Laravel with the Image Transform Package - 6/19/2025
  • Handle Nested Arrays Elegantly with Laravel's fluent() Helper - 6/18/2025
  • Laravel 12.19 Adds a useEloquentBuilder Attribute, a FailOnException Queue Middleware, and More - 6/18/2025
  • Test Deferred Operations Easily with Laravel's withoutDefer Helper - 6/18/2025
  • Larallow is a Permissions Package With Support for Scopes - 6/17/2025

Copyright © 2025 CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda