🐥

esa で記事の定期投稿を自動化するためにやったこと

2021/05/19に公開

ドキュメントとしてesaを使っているんですが,定期ミーティングの議事録を作って Slack の関係者に通知しています.定期的に作るので議事録の内容をテンプレート化し,議事録作成は指定時間に投稿する仕組みを作りたいということでやってみました.

esa の API

esa の API は下記で公開されてます.この API を使ってコードを書きました.

API

実際のコード例

コードは Python 3.9 のバージョンで作ってます.

import requests
from requests.auth import AuthBase
import json
import slackweb
import datetime

TOKEN = 'esaのトークン'
TEAM_NAME = 'チーム名'

session = requests.session()
session.headers['Authorization'] = 'Bearer {}'.format(TOKEN)
session.headers['Content-Type'] = 'application/json'
api_endpoint = 'https://api.esa.io'


body = dict(
        post=dict(
            category='議事録を作るパス',
            template_post_id=xxx,
            wip=False)
            )
response = session.post('{}/v1/teams/{}/posts'.format(api_endpoint, TEAM_NAME), data=json.dumps(body).encode('utf-8'))
json_result = response.json()
esa_url = json_result['url']

slack=slackweb.Slack(url="https:/incoming webhook の URL")
member = ['xxx', 'xxx', 'xxx'] # メンションの ID
mention_list = []
for i in member:
    mention_list.append("<@" + i + ">")
mention_str = map(str, mention_list)
mention_name = ' '.join(mention_str)

slack.notify(text=mention_name + "今週の議事録です\n" + esa_url, channel="#投稿のチャンネル", username="議事録通知bot", icon_emoji=":esa:", mrkdwn=True)

投稿された内容

こんな感じでポストされます.これで毎週議事録を作る手間が省けました.

Discussion