arouze/slack-message-builder

Slack消息构建器,让您轻松构建复杂消息。

v1.0.1 2024-03-05 14:42 UTC

This package is auto-updated.

Last update: 2024-09-07 11:45:22 UTC


README

用PHP编写的Slack消息构建器。

目标

使用块套件构建Slack消息相当困难。此包将帮助您轻松构建消息,并在您不遵守Slack限制(消息太大,动作块中元素过多)时警告您。

安装

composer require arouze/slack-message-builder

使用

    // Here an example with the first template of Slack Documentation
    // @see: https://api.slack.com/tools/block-kit-builder?template=1
    // Will return an array of Slack blocks
    // You can post them on the Slack webhook using json_encode
    $blocks = (new SlackMessageBuilder())
        ->addBlock(
            (new SectionBlock())
                ->setTextObject(
                    (new TextObject())
                        ->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
                        ->setText("You have a new request:\n*<fakeLink.toEmployeeProfile.com|Fred Enriquez - New device request>*")
                )
        )
        ->addBlock(
            (new SectionBlock())
                ->addFields(
                    (new TextObject())
                        ->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
                        ->setText("Type:*\nComputer (laptop)")
                )
                ->addFields(
                    (new TextObject())
                        ->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
                        ->setText("*When:*\nSubmitted Aut 10")
                )
                ->addFields(
                    (new TextObject())
                        ->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
                        ->setText("*Last Update:*\nMar 10, 2015 (3 years, 5 months)")
                )
                ->addFields(
                    (new TextObject())
                        ->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
                        ->setText("*Reason:*\nAll vowel keys aren't working.")
                )
                ->addFields(
                    (new TextObject())
                        ->setType(TextObject::TEXT_OBJECT_TYPE_MARKDOWN)
                        ->setText("*Specs:*\n\"Cheetah Pro 15\" - Fast, really fast\"")
                )
        )
        ->addBlock(
            (new ActionBlock())
                ->addElement(
                    (new ButtonElement())
                        ->setText(
                            (new TextObject())
                                ->escapeEmoji()
                                ->setText('Approve')
                        )
                        ->setStyle(ButtonElement::BUTTON_STYLE_PRIMARY)
                        ->setValue('click_me_123')
                )
                ->addElement(
                    (new ButtonElement())
                        ->setText(
                            (new TextObject())
                                ->escapeEmoji()
                                ->setText('Deny')
                        )
                        ->setStyle(ButtonElement::BUTTON_STYLE_DANGER)
                        ->setValue('click_me_123')
                )
        )
        ->render();

    // Or you can use the Sender to easily send message in your Slack channels.
    // @see https://api.slack.com/messaging/webhooks to configure a webhook on your Slack instance.
    (new Sender())->sendToChannel(
        'channel-name',
        'SERVICE_ID',
        'CHANNEL_ID',
        'CHANNEL_TOKEN',
        $blocks
    );

功能

  • 动作
  • 上下文
  • 分隔符
  • 文件
  • 标题
  • 图片
  • 输入
  • 富文本
  • 部分
  • 视频

元素

  • 按钮
  • 复选框
  • 日期选择器
  • 日期时间选择器
  • 电子邮件输入
  • 文件输入
  • 图片
  • 多选菜单
  • 数字输入
  • 溢出菜单
  • 纯文本输入
  • 单选按钮
  • 富文本输入
  • 选择菜单
  • 时间选择器
  • URL输入
  • 工作流程按钮

富文本元素

  • RichTextSection
  • RichTextList
  • RichTextPreformatted
  • RichTextQuote

组合对象

  • 确认对话框对象
  • 对话过滤器对象
  • 派发动作配置对象
  • 选项对象
  • 选项组对象
  • 文本对象
  • 触发对象
  • 工作流程对象
  • Slack文件对象

富文本对象类型

  • 频道
  • 表情
  • 链接
  • 文本
  • 用户
  • 用户组

想帮忙?有问题?