作業メモ
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!' )
括弧 <>
とアットマークを忘れないように。