暑い日が続きますがエアコンつけっぱなしでウーバーイーツ生活で外に出ないので実際暑いか知りません
あすてるです
さて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のログを表示