digitalicagroup/redmine-command

Redmine-Slack 集成以管理问题

v0.1.6 2014-12-11 01:54 UTC

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)的小公司,我们对新技术和有助于我们更好地工作的方式充满热情。