【告知】値の参照時の仕様変更のお知らせ
このたび2024年11月11日に値の参照に関する仕様変更を予定しておりますので詳細について報告いたします。
more
2023.07.07に公開 | 2023.07.07に更新
Querier運営
「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。
管理画面の構築もWeb上で完結
エンジニアのためのローコードツール
近年、開発者コミュニティーにおいてチャットツールとして広く活用されているSlack。
その中でも「Slack Webhook」は、外部のシステムやサービスとSlackを繋げるための重要な手段です。
しかし、SlackのWebhookには新旧の方式が存在します。
本記事では、Slack Webhookについて深く掘り下げ、新しい方式のSlack Webhookの使い方やその活用法について解説していきます。
SlackのWebhookは、その歴史の中で大きく2つのフェーズがあります。
これらの問題点により、Incoming Webhookは現在非推奨となっています。
その代わりに、現在は新方式のSlack Webhookが主流となっており、Slack自体も新方式の利用を推奨しています。
旧式のIncoming Webhookを利用することも可能ですが、新たにSlack連携を検討している場合や、既存のIncoming Webhookを改善したい場合は、新方式のSlack Webhookを利用することをおすすめします。
新しい方式の「Slack Webhook」は、Slack Appsを利用して、より詳細な権限設定や複数のチャネルへの投稿を可能にします。この新方式により、開発者は自由度を享受できるようになりました。
新方式のSlack Webhookは、Web APIとして機能し、HTTPリクエストにより操作を行うことができます。これにより、あらゆるプログラミング言語からSlackとの連携が可能となります。
まずはじめに、Slackのアプリ管理ページを開きます。ページ右上の [Create New App] ボタンをクリックし、新しいAppを作成します。もし既存のAppを使用する場合は、該当のAppを選択します。
アプリケーションの設定ページに移動したら、左サイドバーの [Incoming Webhooks] をクリックします。
その後、右側の画面で [Activate Incoming Webhooks] をオンに切り替えます。
[Incoming Webhooks] 画面下部の [Add New Webhook to Workspace] ボタンをクリックします。
このボタンをクリックすると、新たなWebhookを設定するためのページに移動します。
設定が完了したら [Incoming Webhooks] ページに戻り、作成したWebhookの Webhook URL を確認します。このURLは、あとでPython、JS、Goなどのコードから利用しますので、安全な場所にコピーして保存しておいてください。
以上が新方式のSlack Webhookの設定とWebhook URLの確認方法です。設定自体は簡単で、いくつかのクリックと選択だけで完了します。
Pythonでは、requests
というライブラリを使用してWebhookを通じてSlackにメッセージを送ることができます。以下に簡単なサンプルコードを示します。
import json
import requests
webhook_url = 'your-webhook-url'
data = {
'text': 'Hello, World!',
'attachments': [
{
'fallback': 'Fallback text',
'color': '#36a64f',
'pretext': 'This is an attachment',
'author_name': 'Author',
'title': 'Title',
'text': 'This is the attachment text',
}
],
}
response = requests.post(
webhook_url,
data=json.dumps(data),
headers={'Content-Type': 'application/json'}
)
if response.status_code != 200:
raise ValueError(
'Request to Slack returned an error %s, the response is:\n%s'
% (response.status_code, response.text)
)
ここで、webhook_url
には先程取得したWebhook URLを指定します。
JavaScriptでは、axios
というライブラリを使用します。以下にNode.jsでのサンプルコードを示します。
const axios = require('axios');
const webhookUrl = 'your-webhook-url';
const data = {
text: 'Hello, World!',
attachments: [
{
fallback: 'Fallback text',
color: '#36a64f',
pretext: 'This is an attachment',
author_name: 'Author',
title: 'Title',
text: 'This is the attachment text',
}
],
};
axios.post(webhookUrl, data)
.then(response => {
console.log('Sended successfully');
})
.catch(error => {
console.error(error);
});
Go言語では、標準のnet/http
パッケージを使用します。以下にサンプルコードを示します。
package main
import (
"bytes"
"encoding/json"
"net/http"
)
type Attachment struct {
Fallback string `json:"fallback"`
Color string `json:"color"`
Pretext string `json:"pretext"`
AuthorName string `json:"author_name"`
Title string `json:"title"`
Text string `json:"text"`
}
type Message struct {
Text string `json:"text"`
Attachments []Attachment `json:"attachments"`
}
func main() {
webhookUrl := "your-webhook-url"
attachment := Attachment{
Fallback: "Fallback text",
Color: "#36a64f",
Pretext: "This is an attachment",
AuthorName: "Author",
Title: "Title",
Text: "This is the attachment text",
}
msg := Message{
Text: "Hello, World!",
Attachments: []Attachment{attachment},
}
b, err := json.Marshal(msg)
if err != nil {
panic(err)
}
resp, err := http.Post(webhookUrl, "application/json", bytes.NewBuffer(b))
if err != nil {
panic(err)
}
if resp.StatusCode != http.StatusOK {
panic("Request to Slack returned an error")
}
}
以上がPython, JavaScript, GoでのSlack Webhookの利用例です。
具体的なコードは各状況により調整が必要となりますが、基本的な使い方はこれになります。
詳細な仕様や最新の情報については、こちらの公式ドキュメントをご参照ください。
このように、新しい方式のSlack Webhookを使うことで、様々な言語から簡単にSlackと連携することができます。新旧のSlack Webhookについて理解し、開発の効率化に役立ててください。
本記事が「Slack Webhook」の設定や使い方についての理解の一助となれば幸いです。
Querier運営
「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。
このたび2024年11月11日に値の参照に関する仕様変更を予定しておりますので詳細について報告いたします。
more
データフローの通知設定機能・監査ログへのパラメータが追加されましたのでご紹介します。
more
データフローのアクションに永続化などに利用できるローカルストレージ機能を追加しました。
more
日本を健康に。多彩なフィットネスブランドを展開中。スタジオ付きの「JOYFIT」、24時間型の「JOYFIT24」、ヨガスタジオ「JOYFIT YOGA」、パーソナルジム「JOYFIT+」、家族向けの「FIT365」など、多彩なブランド展開で全国を席巻しているスポーツ事業。
more
管理画面の構築もWeb上で完結
エンジニアのためのローコードツール