SEが教えるEC運営のブログ ウェブ運用と開発現場を経験したSEのTIPS
TOP > BLOG > IT記事

Chatwork APIとPython&Flaskで時間指定のメッセージ送信機能を作ってみた

早川朋孝 早川朋孝
EC専門のSE

ChatworkやSlackのtoの扱いには悩む人も多いだろう。Toがくるとスマホアプリで通知をしている利用者も多いだろうから、それだけに「メッセージは送りたいけど、今みたいな遅い時間や営業時間外に相手に通知がいくと悪いな」と遠慮する人がいるのも納得できる。みんな真面目なのだ。

この問題の解決方法はいたって簡単で、時間指定でメッセージを送信する機能をChatworkが開発すればいいだけなのだが、なぜかこの時間指定機能がないのである。理由はよう分からん。

そこで、好きな時間を指定して指定のルームにメッセージ送信する機能をAPIを作ってみた。

使用言語とライブラリー、ミドルウェアなど

  • Python
  • Flask
  • mysql
  • nginx

Flask

Flaskは書籍が少ない。ネット記事はいくつかあった。それらを参考にしながらも動かすのに少し時間がかかったが、慣れればどうってことない。PHPを書ける人なら、少し勉強すればすぐ慣れると思う。PythonでWebアプリを開発したいならFlaskは選択肢の一つになるだろう。

Chatwork API

ChatworkのAPIの仕様はこちら
https://developer.chatwork.com/ja/

今回はメッセージ送信なのでroomsのエンドポイントを利用する。
https://api.chatwork.com/v2/rooms/{room_id}/messages

簡単な動作確認なら、API KEYがあればcurlですぐ確認できる。上記Chatwork API公式マニュアルに記載があるので楽ちんです。

curl -X POST -H “X-ChatWorkToken: 自分のAPIトークン” -d “body=Hello+Chatwork%21&self_unread=0” “https://api.chatwork.com/v2/rooms/{room_id}/messages”

Pythonのサンプル

ChatworkのAPIを扱うPythonのcodeサンプルは以下の通り。メッセージやroom_idなどの必要な情報は問い合わせフォームから得たものを利用している。「resp」という記載のある行でリクエストが実行される。そして念のためstatus_codeを確認し、問題なければTrueを返し、必要に応じてゴニョゴニョする。

def job(room_id, apikey, body):
    url = 'https://api.chatwork.com/v2/rooms/' + str(room_id) + '/messages'
    headers = { 'X-ChatWorkToken': apikey }
    params = {'body': body}
    resp = requests.post(url, headers=headers, params=params)
    if resp.status_code == 200:
        return True
    else:
        return  False
   return result

基本的なデータの流れは以下の通り。いたって普通のタイマー機能です。

  1. Chatworkへの送信データ入力し、併せて時間を指定し、DBに登録する
  2. 登録したデータを定期的にPythonで実行し、指定時間に上記のプログラムでデータを送信する
  3. 不要なデータの定期削除

はい。たったこれだけです。ま、本格的なサービスとして運用するには考慮事項が増えるだろうけど、個人的に使う分にはシンプルで十分。その他考慮事項はセキュリティは言うに及ばず、実行済みのデータの定期削除したりするくらい。

私でもこんなに簡単にすぐできるのだから、腕のいいChatworkのエンジニアが指定時間のメッセージ送信機能を実装できないはずがない。なんらかの政治的な理由があるとか、作っても儲からないとか、実は設計が悪くてエンジニアが面倒がってるとか、そんなところだろう。

×

メルマガ登録

SEが商品登録、在庫管理、発注などのEC業務を効率よくプログラムで実施する方法を無料配信します。

  • APIやツールによる業務効率化
  • 広告運用に関するTips
  • CVRを改善するアクセス解析のコツ
このブログを書いてる人
早川 朋孝 EC専門のSE
IT業界歴20年のエンジニアです。ネットショップ勤務で苦労した経験から、EC・ネットショップ事業者に向けて、バックオフィス業務の自動化・効率化を提案するSEをしています。
Web運用の経験もあり、アクセス解析、広告運用が得意で、広告APIとプログラムとの合わせ技で並の広告代理店にはできない提案が可能です。
プロフィール
API連携の相談にのります
趣味は読書、ピアノ、マリノスの応援など
PAGE TOP