APIを使ってslackにメッセージを送るときにエラーが出た
slackにメッセージを送るために下記の関数を使っていました。(コードはGoogleAppsScriptです)
function sendToSlack(url, text) {
const payload = {
"blocks": [
{
type: "section",
text: {
type: "mrkdwn",
text: text
}
}
]
};
const options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}
これまでは問題なかったのですが、ある時下記のエラーが出ました。
Exception: Request failed for https://hooks.slack.com returned code 400. Truncated server response: invalid_blocks (use muteHttpExceptions option to examine full response)
結論: テキストの上限は3000文字
上記サンプルでいうと、text.length
が 3000以下の場合は問題ないのですが、3001以上になると上記のエラーになることが確認できました。
ポイントとしては、markdownとしての修飾文字 (*
とか _
など)や、 emoji (:smile:
など) も文字数としてカウントされるので、markdown使うときは注意ですね!