Slack API chat.postMessageで改行を利用する方法

created
updated

Slack API「chat.postMessage」を利用して、JavaScriptからSlackへ改行入りのメッセージを送信しました。

しかし、上手く反映されなかったので、対応方法をまとめました。

Slack API chat.postMessage のドキュメント

chat.postMessage method | Slack

今回は、

  • token(必須)
  • channel(必須)
  • text

のパラメータを利用し、fetchでURLにクエリパラメータを付与して送信する仕様とします。

改行が反映されなかった方法

const token = `{YOUR TOKEN KEY}`;
const channel = `random`;
const text = `ようこそ!¥nSlackへ!`;
const url = `https://slack.com/api/chat.postMessage?token=${token}&channel=${channel}&text=${text}`;

fetch(url).then(function(response) {
  console.log(response);
});

この送信方法の場合

ようこそ!Slackへ!

となり、改行が消えてしまいました。

改行が反映された方法

URLSearchParamsを利用

URLSearchParams - Web API | MDN

const token = `{YOUR TOKEN KEY}`;
const channel = `random`;
const text = `ようこそ!¥nSlackへ!`;
const url = `https://slack.com/api/chat.postMessage?token=${token}&channel=${channel}&text=${new URLSearchParams(text).toString().slice(0, -1)}`

fetch(url).then(function(response) {
  console.log(response);
});

末尾に記号(=)がついてしまう

URLSearchParamsを利用すると、末尾の文字に=が付与されるため、sliceを利用して末尾の文字を削除しました。

Array.prototype.slice() - JavaScript | MDN

負のインデックスを使って、列の終わりからのオフセットとして指定することができます。slice(2,-1) は列の 3 番目から、最後から 2 番目までの要素を取り出します。

出典:Array.prototype.slice() - JavaScript | MDNhttps://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
new URLSearchParams(text).toString().slice(0, -1);

この送信方法の場合

ようこそ!
Slackへ!

となり、改行を反映させることができました。

TOP