Laravel 5.7:我可以通过编程方式强制Slack将较长的消息不拆分为两个或更多吗?

时间:2019-01-05 02:11:44

标签: laravel slack

有趣的是,我写了一个Slack通知,每次cron作业清除某些文件时都会发送该消息。

一天晚上,已清理文件的列表足够长,以至于懒散地将其拆分为两个单独的帖子。除了我通过以下方式将内容包装在pre标签中之外,没有任何问题:

public function toSlack()
{
    return (new SlackMessage)
        ->success()
        ->content(sprintf('*Garbage Collector*```%s```', $this->message));
}

通过拆分一条消息,最终结果是,第一条松弛消息的标签为pre,但没有关闭标签,而第二条消息的标签为未打开,并且也有关闭标签。视觉结果是两条消息均未以纯文本显示。

  

所需的效果(当内容不太长时发生)

enter image description here

  

我认为是一个错误,我不知道如何解决(此错误发生)   当内容太长时):

enter image description here

第二部分:

enter image description here

我在下面的str_replace中使用的存根:

Garbage Collected

Environment:     {app_env}
Date:            {date}
{separator}

List of files deleted from the temporary directory:

{garbage}
{separator}
Reason:          {reason}
Space recovered: {garbage_size}

Have a nice day!

我可以以某种方式在Laravel中解决此问题,还是由Slack的男孩来解决?

1 个答案:

答案 0 :(得分:0)

经过一些测试后,这里是在Slack中创建消息的相关限制的列表:

  • 邮件将自动拆分:在text中> 4.000个字符(未记录)
  • 邮件将被截断:> textSource)中的40.000个字符
  • 附件将被截断:> attachments / text中的8.000个字符(未记录)

据我所知,行为无法更改,并且对于发送消息的所有不同方式都是相同的:

  • 通过Web API(chat.postMessage)
  • 通过传入Webhook
  • 作为对Slack请求(斜线/交互式消息)的响应

以下是解决方法的一些想法:

  1. 在您的应用中拆分文本,并将其作为单独的消息发送给Slack
  2. 生成文本,以便在4.000处的剪切将始终在任何格式标记之外
  3. 使用file.upload将整个文本作为文本片段上传。然后,Slack将自动显示文本的预览,用户可以通过单击打开整个内容。

我建议3.因为它更易于使用。

有关Slack消息中所有已知文本限制的概述,另请参见this documentation