chatwork to Discord webhookを使ったLambda python

Pocket

暑い日が続きますがエアコンつけっぱなしでウーバーイーツ生活で外に出ないので実際暑いか知りません
あすてるです

さてchatworkが色々あって嫌いなのでdiscordやslackに流そうとしました
大体検索で出てくるのは gasを使ってサーバーレスでこのコピペで5分おきとかにapi叩いて差分持ってきますよってやつ
それをやりたいわけじゃない
割とリアルタイムで送りたいのでchatworkのwebhookを使う

流れ
chatwork webhook -> API Gateway(aws) -> Lambda(aws) -> discord webhook

discordのwebhookのキー取得に関しては各自で(簡単なので)

まずlambdaから
python 3.8でimport requestsを使うのでレイヤーにrequestsを追加します

macで

mkdir python
cd python
pip3 install -t ./ requests
cd ..
zip -r requests.zip python/

AWS Lambda -> その他のリソース -> レイヤー
レイヤーの作成 -> 適当に名前をつけて .zipファイルをアップロード

Lambda -> 関数 -> 関数の作成
一番下のレイヤー -> レイヤーの追加 -> さっき作ったものを選択

lambda_function.py

import json
import requests
def lambda_handler(event, context):
    jsonItem = json.dumps(event)
    j = json.loads(jsonItem)
    webhook_body = eval(j["body"])
    account_id = webhook_body["webhook_event"]["account_id"]
    webhook_text = webhook_body["webhook_event"]["body"]

    webhook_url = 'https://discord.com/api/webhooks/1234567890/swedrftgyhujikol3edrftgyhujikedrftghyujikrfgthyujikdsadsadsadsadsa'
    main_content = {
        "content":  "account_id(" + str(account_id) + "): " + webhook_text
    }
    
    requests.post(webhook_url,main_content)
    
    return {
        'statusCode': 200,
    }

Lambdaは終わり

API Gateway -> API作成
HTTP API -> 統合を追加 -> Lambda -> さっき作ったやつを選択 -> 次へ
ルートを設定
メソッド -> POST
リソースパス -> /ch -> 次へ
ステージを設定 -> 次へ -> 作成

作成したAPIのURLをコピー
https://abcd123abc.execute-api.ap-northeast-1.amazonaws.com

chatwork
サービス連携 -> Webhook
さっきのURLに/chをつけて貼り付け
Webhook URL: https://abcd123abc.execute-api.ap-northeast-1.amazonaws.com/ch
イベント: 流したいものを設定する
今回は特定ルームのものを流したいのでルームイベント -> メッセージ作成 -> ルームID(対象書く)

作成した後時間がかかる場合がありますみたいなこと書いてるけど以外とすぐ反映されてる

設定した部屋でチャット打つ
discordに流れる

終わり、良かったですね

ログを見たい
作ったLambda -> モニタリング -> CloudWatchのログを表示

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください