digitalicagroup / slack-hook-framework
用于轻松创建您自己的 Slack 命令处理器的框架
Requires
- php: >=5.4
- ext-curl: *
- katzgrau/klogger: 1.0.*
This package is not auto-updated.
Last update: 2024-09-28 17:31:46 UTC
README
一个简单的框架,可以轻松构建您自己的 Slack 命令处理器。它可以通过两种方式扩展
- (推荐) 创建另一个项目,并使用 composer 将框架作为库安装。
- 请参阅 slack-bot 了解可以做什么的示例。
- 安装框架并立即开始添加新命令。
用途
- 一个 Slack "Slash Commands" 和一个 "Incoming WebHooks" 集成(见安装)。
- KLogger
它如何工作?
- 它作为 PHP 应用程序安装到您的 Web 服务器上。
- 通过一个 "Slash Commands" Slack 集成,它接收请求。
- 它解析接收到的文本,检测要使用的命令,并转发参数。
- 将结果发布到原始渠道或私人组中的 "Incoming WebHooks" Slack 集成(框架使用 Slack API 来查找渠道信息)。
新增功能
- v0.3
- 一般清理。
- 参数解析的自定义正则表达式配置。将
"split_regexp": "/[\\s]+/"
属性添加到您的命令定义中,其中包含您要用于解析命令参数的正则表达式。默认为空格字符("/[\\s]+/"
)。
当前功能
- 支持的命令
- help: 显示有关其他命令的帮助信息。它从 custom_cmds.json(用户定义命令的文件)中收集信息。
- hello: 显示框架可以做什么的示例命令。
- Slack 令牌验证以限制来自一个 Slack 域的访问。
- 可以轻松添加自定义命令(见添加更多命令)。
- 为每个命令提供参数解析的自定义正则表达式配置。
待办事项
- 创建一个内建的 "添加到 Slack",以在客户端应用程序上使用 OAuth 2.0。
要求
- PHP >= 5.4,具有 cURL 扩展
- Slack 集成(见安装)
- Composer.
安装
只需添加对 slack-hook-framework 的依赖项或运行
$ php composer.phar require digitalicagroup/slack-hook-framework:~0.3 $ cp vendor/digitalicagroup/slack-hook-framework/index-example.php . $ cp vendor/digitalicagroup/slack-hook-framework/custom_cmds.json .
查看 index-example.php 了解如何配置库和如何调用命令处理器。custom_cmds.json 将允许您定义自己的新命令。您可以通过查看 vendor/digitalicagroup/slack-hook-framework/lib/SlackHookFramework/CmdHello.php 了解命令应该做什么。
在 Slack 上
-
使用以下数据创建一个新的 "Slash Commands" 集成
-
命令: /bot(或您喜欢的任何内容)
-
URL: 指向您的 slack-hook-framework 安装的 index.php(或 index-example.php)的 URL
-
方法: POST
-
令牌: 复制此令牌,我们稍后会用到。
-
创建一个新的 "Incoming WebHooks" Slack 集成
-
发布到渠道: 选择一个,但 Slack-hook-framework 将会忽略它。
-
Webhook URL: 复制此 URL,我们稍后会用到。
-
描述性标签,自定义名称,自定义图标: 您喜欢的任何内容。
-
转到 Slack API > "身份验证" > "测试令牌" 并为您的团队生成一个测试令牌。框架需要它,因为
-
当从 Slack 接收到命令(在私人组中)时,有效负载不包含私人组名称。
-
它需要向 Slack API 发送请求以搜索组名称。
-
如果认证令牌有访问该组的权限,框架将能够向其发送消息。
在你的Web服务器上
在你的偏好文件夹中安装 composer(应可从Web服务器访问),然后运行
$ php composer.phar require digitalicagroup/slack-hook-framework:~0.3 $ cp vendor/digitalicagroup/slack-hook-framework/index-example.php . $ cp vendor/digitalicagroup/slack-hook-framework/custom_cmds.json .
编辑 index-example.php 并添加以下配置参数
/** * token sent by slack (from your "Slash Commands" integration). * It is used by the validator to skip command processing if the request * is from an unauthorized slack domain. */ $config->token = "vuLKJlkjdsflkjLKJLKJlkjd"; /** * URL of the Incoming WebHook slack integration. * Command processing results will be pushed to this URL. */ $config->slack_webhook_url = "https://hooks.slack.com/services/LKJDFKLJFD/DFDFSFDDSFDS/sdlfkjdlkfjLKJLKJKLJO"; /** * Slack API authentication testing token for your team. * We have not implemented an "Add to Slack" button yet, so a testing token * must be used in the meantime. * See README.md for instructions on how to get a testing token from slack. */ $config->slack_api_token = "xoxp-98475983759834-38475984579843-34985793845"; /** * Log level threshold. * The default is DEBUG. * * Available levels: * LogLevel::EMERGENCY; * LogLevel::ALERT; * LogLevel::CRITICAL; * LogLevel::ERROR; * LogLevel::WARNING; * LogLevel::NOTICE; * LogLevel::INFO; * LogLevel::DEBUG; */ $config->log_level = LogLevel::DEBUG; /** * logs folder, make sure the invoker(*) have write permission. */ $config->log_dir = __DIR__."/logs"; /** * Database folder, used by some commands to store user related temporal information. * Make sure the invoker(*) have write permission. */ $config->db_dir = __DIR__."/db"; /** * Custom commands definition. Use this file if you wish to add new commands to be * recognized by the framework. */ $config->custom_cmds = __DIR__."/custom_cmds.json";
给你的 logs/ 和 db/ 文件夹赋予Web服务器进程的权限。如果你在Linux下使用apache,通常为www-data
$ sudo chown -R :www-data logs/ $ sudo chown -R :www-data db/ $ sudo chmod g+w logs/ $ sudo chmod g+w db/
访问 Slack 并输入 /bot help
。
添加更多命令。
- 如果你希望添加更多命令(复制 custom_cmds.json 文件,除非你已经这样做过了)。
$ cp vendor/digitalicagroup/slack-hook-framework/custom_cmds.json .
- 在 custom_cmds.json 中为你的新类添加一个定义。
- 检查框架配置中是否定义了
$config->custom_cmds
(即index-example.php
)。 - 查看
vendor/digitalicagroup/slack-hook-framework/lib/SlackHookFramework/CmdHello.php
的内容以了解命令能做什么,或查看 slack-bot 以获取更多示例。 - 运行 composer update(《php composer.phar update》)。
故障排除
这是一个常见错误的列表
- “我在apache的错误日志中看到了一些关于权限的错误”。
- 运行 slack-hook-framework 的进程(通常是Web服务器)需要写入权限到你在 $config->log_dir 参数中配置的文件夹。
- 例如,如果你正在运行apache,该文件夹组必须分配给www-data,并且必须打开组的写入权限。
- 切换到你的 slack-hook-framework 目录
- chown -R :www-data logs/
- chmod -R g+w logs/
- “我按照步骤操作,但没有任何反应,Web服务器错误日志中没有,应用程序日志中也没有”。
- 如果你在日志中没有看到任何内容(并且已设置调试级别),那么可能应用程序在验证Slack令牌的过程中已经崩溃。slack-hook-framework验证请求是否与配置的Slack令牌匹配,如果匹配,则应用程序会死亡,或者应用程序在开始时就崩溃了。
- “Web服务器错误日志中没有错误,我在应用程序日志中看到了一些输出(以调试日志级别),但在我的频道/组中什么也没有”。
- 在应用程序日志中检查字符串 “[DEBUG] Util: group found!” 或 “[DEBUG] Util: channel found!”。如果你看不到这些字符串,请检查你的团队Slack认证令牌是否来自一个可以访问你正在写入的私有组的用户。
- 我刚刚开发了一个新的命令,但在 CommandFactory 上得到了找不到类的错误。
- 每次你添加一个新命令(因此是一个新类)时,你必须更新composer自动加载器;只需输入
php composer.phar update
- 如果你有任何bug或错误需要报告,请随时联系我:luis at digitalicagroup dot com。
关于Digitalica
我们是一家专注于移动应用程序开发(iOS,Android)的小公司,我们热衷于新技术和帮助我们更好地工作的方式。这个项目是我们测试和尝试新事物的作品的一个扩展。
- 此项目主页: slack-hook-framework
- Digitalica主页: digitalicagroup.com
- 我们的工程团队博客: blog.digitalicagroup.com