digitalicagroup / redmine-command
Redmine-Slack 集成以管理问题
Requires
- php: >=5.4
- ext-curl: *
- katzgrau/klogger: 1.0.*
- kbsali/redmine-api: ~1.0
This package is not auto-updated.
Last update: 2024-09-24 03:59:36 UTC
README
这是一个简单的 Redmine Slack 集成,用于管理问题。
使用
- 一个 Slack "Slash Commands" 集成和一个 "Incoming WebHooks" 集成(见安装)。
- php-redmine-api
- KLogger
它是如何工作的?
- 它作为 PHP 应用程序安装在您的 Web 服务器上(使用 composer)。
- 通过 "Slash Commands" Slack 集成,它接收请求。
- 它与您的 Redmine 安装通信以收集(或更新)数据。
- 将结果发布到创建者频道或私人组(是的,私人组!)中的 "Incoming WebHooks" Slack 集成。
当前功能
当前的稳定版本实现了一个可扩展的架构,支持轻松实现未来的命令。命令列表
- show . 显示 Redmine 问题(的问题)的详细信息。
- 使用(来自 Slack): /redmine show issue_numbers
- 示例:/redmine show 1 2 10
- 帮助 . 显示每个注册命令的帮助数据。
- 使用:/redmine help
待办事项
- 将所有字符串变量移动到全局定义文件中。
- 实现更多命令。目前的工作重点围绕创建问题。
要求
- PHP >= 5.4,具有 cURL 扩展,
- 在 Redmine 设置中(管理 > 设置 > 身份验证)启用“启用 REST Web 服务”
- 您的个人资料页面上的“API 访问密钥”。
- Slack 集成(见安装)。
安装
在 Slack 上
-
创建一个带有以下数据的“Slash Commands”集成
-
命令:/redmine(或您喜欢的任何内容)
-
URL:指向您的 redmine-command 安装 index.php 的 URL
-
方法:POST
-
令牌:复制此令牌,我们稍后会用到它。
-
创建一个新的“Incoming WebHooks”Slack 集成
-
发布到频道:选择一个,但 redmine-command 会忽略它。
-
Webhook URL:复制此 URL,我们稍后会用到它。
-
描述性标签,自定义名称,自定义图标:您喜欢的任何内容。
-
转到 Slack API 并复制您团队的认证令牌。
-
转到 Redmine 上的您的个人资料页面并复制您的“API 访问密钥”。
在您的 Web 服务器上
在您偏好的文件夹中安装 composer,然后运行
$ php composer.phar require digitalicagroup/redmine-command:~0.1 $ cp vendor/digitalicagroup/redmine-command/index.php .
最后一行将 index.php 从包含您需要修改的配置的包中复制出来。
编辑 index.php 并添加以下配置参数
/** * token sent by slack (from your "Slash Commands" integration). */ $config->token = "vuLKJlkjdsflkjLKJLKJlkjd"; /** * URL of the Incoming WebHook slack integration. */ $config->slack_webhook_url = "https://hooks.slack.com/services/LKJDFKLJFD/DFDFSFDDSFDS/sdlfkjdlkfjLKJLKJKLJO"; /** * Slack API authentication token for your team. */ $config->slack_api_token = "xoxp-98475983759834-38475984579843-34985793845"; /** * Base URL of redmine installation. */ $config->redmine_url = "https://your/redmine/install"; /** * Redmine API key. */ $config->redmine_api_key = "0d089u4sldkfjfljlksdjffj43099034j"; /** * Log level threshold. The default is DEBUG. * If you are done testing or installing in production environment, * uncomment this line. */ //$config->log_level = LogLevel::WARNING; /** * logs folder, make sure the invoker have write permission. */ $config->log_dir = "/srv/api/redmine-command/logs";
确保您为 log_dir 文件夹提供写权限。
故障排除
这是一个常见错误的列表
- "我在 Apache 错误日志中看到了一些关于权限的错误"。
- 运行 redmine-command 的进程(通常是 Web 服务器)需要您配置的 $config->log_dir 参数文件夹的写权限。
- 例如,如果您正在运行 Apache,则该文件夹组必须分配给 www-data,并且必须打开组的写权限。
- "我按照步骤进行了操作,但没有发生任何事,Web 服务器错误日志和应用程序日志中都没有任何内容"。
- 如果在日志中什么也没有看到(并且已将调试级别设置好),可能应用程序在验证 slack 令牌的过程中挂起了。redmine-command 验证请求是否与配置的令牌匹配,或者在开始时就挂起了。
- "在 web 服务器错误日志中没有错误,我在应用程序日志(以调试日志级别)中看到一些输出,但在我的频道/群组中却什么也没有看到"。
- 在应用程序日志中查找字符串 "[DEBUG] Util: group found!" 或 "[DEBUG] Util: channel found!" 。如果您看不到这些字符串,请检查您团队的 slack 身份验证令牌是否来自有权访问您正在写入的私有组的用户。
- 我刚刚开发了一个新的命令,但在 CommandFactory 上遇到了找不到类错误。
- 每次您添加一个新命令(因此是一个新类),您必须更新 composer 自动加载器。只需输入
- php composer.phar update
贡献
如果您想添加额外的命令,欢迎您贡献力量。您需要做的只是扩展 AbstractCommand 类,并在 commands_definition.json 文件中添加一个新的条目。(您可以通过 CmdShow.php 了解命令必须执行的操作示例)。
所有命令都通过相同的 "Slash 命令集成" 接收,所以 /redmine 后的第一个单词必须是命令触发器。接下来的单词通过一个或多个空格分割,并传递给触发命令。
活跃的开发在不稳定分支上进行。最新的稳定版本候选人在 master 分支上。
关于 Digitalica
我们是一家专注于移动应用开发(iOS、Android)的小公司,我们对新技术和有助于我们更好地工作的方式充满热情。
- 此项目主页: RedmineCommand
- Digitalica 主页: digitalicagroup.com