digitalicagroup/slack-hook-framework

用于轻松创建您自己的 Slack 命令处理器的框架

v0.3 2016-09-29 15:21 UTC

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)的小公司,我们热衷于新技术和帮助我们更好地工作的方式。这个项目是我们测试和尝试新事物的作品的一个扩展。