API経由でSlackのポストをチャンネルに送信するとき、たまに現れる不要な改行を消す


現象

API経由でSlackのポストをチャンネルに送信すると、なぜかたまに不要な改行が現れて困っていました。ここでは、それを修正します。

ポストとは

ポストを使うと、Slack 上で直接、書式付きのドキュメントを作成し、編集・共有することができます。プロジェクトの計画や議事録など、長文のコンテンツを共有して共同編集するのにおすすめです。
チャンネルへメッセージを送信するのとは異なり、ポストでは追加の書式設定オプションが利用でき、他のメンバーと共同作業することができます。

API経由でポストを普通に送信する場合

SlackのAPIドキュメント
APIで送信するArgumentsはこんな感じになります。

$content = 'ポストの本文\n\nこの下に不要な改行が現れるhttps://qiita.com/\n\nこういうときに、下の行に改行は現れないhttps://qiita.comこの下の行を見よう改行は現れなかった本文終わり'

{
    token: [access_token],
    channels: [channels],
    initial_comment: [initial_comment],
    content: $content,
    filetype: "post",
    title: [title]
}

しかし、このままでは冒頭の画像のように、なぜか2行目の下に謎の改行が現れてしまいます…

たまに現れる不要な改行を消す

改行の現れる条件

URLを文末として、そのすぐあとに改行が続くときに、余計な改行が増えます。
冒頭だとこの下に不要な改行が現れるhttps://qiita.com/に当たる部分です。

一方、文末がURLでない場合は改行が増えません。たとえば、以下のような場合です。
こういうときに、下の行に改行は現れないhttps://qiita.com この下の行を見よう

修正方法

URLが文末に来るときは、下記のように、半角スペースを改行前に1文字入れると正しくポストできるようになります。

// ここを
$content = 'ポストの本文\n\nこの下に不要な改行が現れるhttps://qiita.com/\n\nこういうときに、

// こうだ!
$content = 'ポストの本文\n\nこの下に不要な改行が現れるhttps://qiita.com/ \n\nこういうときに、

無事修正されました!
みなさま楽しいSlack連携ライフを!