alex-equity/php-slack-bot
Composer 安装命令:
composer require alex-equity/php-slack-bot
包简介
Slack bot user written in PHP
README 文档
README
A simple bot user written in PHP using the Slack Real Time Messaging API https://api.slack.com/rtm
Installation
With Composer
Create a new composer.json file and add the following
{
"minimum-stability" : "dev",
"require": {
"jclg/php-slack-bot": "dev-master"
}
}
Then run
composer install
Usage
Create a php file called bot.php with the following content
require 'vendor/autoload.php'; use PhpSlackBot\Bot; // Custom command class MyCommand extends \PhpSlackBot\Command\BaseCommand { protected function configure() { $this->setName('mycommand'); } protected function execute($message, $context) { $this->send($this->getCurrentChannel(), null, 'Hello !'); } } $bot = new Bot(); $bot->setToken('TOKEN'); // Get your token here https://my.slack.com/services/new/bot $bot->loadCommand(new MyCommand()); $bot->loadInternalCommands(); // This loads example commands $bot->run();
Then run php bot.php from the command line (terminal).
Example commands
Example commands are located in src/PhpSlackBot/Command/ and can be loaded with $bot->loadInternalCommands();
Ping Pong Command
Type ping in a channel and the bot should answer "Pong" to you.
Count Command
Type count several times in a channel and the bot should answer with 1 then 2...
Date Command
Type date in a channel and the current date.
Planning Poker Command
https://en.wikipedia.org/wiki/Planning_poker
Type pokerp start in a public channel with your team in order to start a planning poker session.
Direct message the bot with pokerp vote number. The bot will record your vote.
Type pokerp status to see the current status of the session (who has voted).
Type pokerp end in a public channel and the bot will output each vote.
Load your own commands
You can load your own commands by implementing the \PhpSlackBot\Command\BaseCommand.
Then call PhpSlackBot\Bot::loadCommand method for each command you have to load.
"Catch All" command
If you need to execute a command when an event occurs, you can set up a "catch all" command.
This special command will be triggered on all events.
require 'vendor/autoload.php'; use PhpSlackBot\Bot; // This special command executes on all events class SuperCommand extends \PhpSlackBot\Command\BaseCommand { protected function configure() { // We don't have to configure a command name in this case } protected function execute($data, $context) { if ($data['type'] == 'message') { $channel = $this->getChannelNameFromChannelId($data['channel']); $username = $this->getUserNameFromUserId($data['user']); echo $username.' from '.($channel ? $channel : 'DIRECT MESSAGE').' : '.$data['text'].PHP_EOL; } } } $bot = new Bot(); $bot->setToken('TOKEN'); // Get your token here https://my.slack.com/services/new/bot $bot->loadCatchAllCommand(new SuperCommand()); $bot->run();
Incoming webhooks
The bot can also listen for incoming webhooks.
Commands are triggered from users messages inside Slack and webhooks are triggered from web post requests.
Custom webhooks can be loaded using the PhpSlackBot\Bot::loadWebhook method.
This is useful if you need to control the bot from an external service. For example, with IFTTT https://ifttt.com/maker
To enable webhooks, use the enableWebserver method before the run method.
You can also set a secret token to prevent unauthorized requests.
$bot->loadInternalWebhooks(); // Load the internal "output" webhook $bot->enableWebserver(8080, 'secret'); // This will listen on port 8080 $bot->run();
Altered in this fork:
Use the parameter "webhook" to trigger the corresponding webhook. In the example case above, the "webhook" value is "output".
The input format can be either JSON or a POST with a json encoded payload, as described here in https://api.slack.com/incoming-webhooks. The webserver differentiates between the two using the Content-Type header.
JSON:
curl -X POST -H 'Content-Type: application/json; charset=utf8' --data '{"webhook":
"output", "type" : "message", "text": "This is a message", "channel": "#general"}' http://localhost:8080
POST Fields (json encoded payload):
curl -X POST --data-urlencode 'webhook=output' --data-urlencode 'payload={"type" : "message", "text": "This is a message", "channel": "#general"}' http://localhost:8080
Also, the response from a webhook is now json encoded. The return value from your custom webhook's execute() method will be inside the "data" property of a successful request. Otherwise, an "error" property will be populated.
alex-equity/php-slack-bot 适用场景与选型建议
alex-equity/php-slack-bot 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 34 次下载、GitHub Stars 达 0, 最近一次更新时间为 2017 年 02 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 alex-equity/php-slack-bot 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 alex-equity/php-slack-bot 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 34
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 10
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-02-04