Python で Slack にメッセージを送信する

作業メモ

Python を使って Slack にメッセージを送信するためには python-slack-sdk というパッケージを使う。以前までは slackclient が使われていたがレガシーなパッケージになっている(参考)。

また、事前に slack 側でアプリケーションを登録し、workspace にアプリを登録しておく必要がある。

最低限の実装

メッセージを送信するにはクライアントを作成して、chat_postMessage するだけで良い。

from slack_sdk import WebClient

client = WebClient(token='slack API のトークン')
client.chat_postMessage(channel='#random', text='Hello, World!')

ところが、ローカル環境で実行すると、以下のようなエラーが出た。

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate

SSLの問題のようだ。まずは API の使い勝手を把握したかったので次のようにしてこのエラーを回避した。セキュリティ上の問題はあるが、お試しスクリプトならこれで十分。

import ssl

ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE

client = WebClient(token=token, ssl=ssl_context)

Pythonでメンションする方法

メンションを送る際に、送信するテキストの内容に @foobar とユーザ名を入れても slack 側ではメンション扱いにならなかった。どうやら slack 上で見えているようにはいかないらしい。

この場合はユーザIDを使う必要があるようだ。slack でメンションしたいユーザのプロフィールを開き、オプションから「Copy member ID」を選択。これでコピーされるのがユーザの固有IDだ。このIDを使うことでメンションを送ることができる。

client.chat_postMessage(
    channel='#channel',
    text='<@U123ABCDEFG> Hello, World!'
)

括弧 <> とアットマークを忘れないように。

タイトルとURLをコピーしました