2023年5月25日木曜日

HuginnでWebhookを試してみる

HuginnでWebhookを試してみる

概要

Huginn は IFTTT や Zapier のようなオートメーションツールです
IFTTT や Zapier の無料プランではいろいろと制限があるので自分で構築してみました
今回は Webhook を使ってみます

環境

  • macOS 11.7.6
  • docker 23.0.5
  • Huginn 2022.08.18

起動

公式の推奨は docker なので docker を使います
とりあえず起動してアクセスできることを確認しましょう (あとで停止していろいろ設定を入れ込み再起動します)

  • docker run -it -p 3000:3000 ghcr.io/huginn/huginn
Rails 6.1.7.2 application starting in production http://0.0.0.0:3000

というログが出るまでしばらく時間がかかるので待ちます
起動後は http://localhost:3000 で管理 UI にアクセスできます
admin/password でログインできます

Twitter アプリの作成

アプリを作成して OAuth 用の権限設定と API キー/シークレットキーの取得をします

アプリの権限などを設定します
コールバック URL に localhost は設定できますがサイト URL に localhost は設定できないのでまだサイトがない場合は適当な URL を入力しましょう

  • App permissions・・・Read and write
  • Type of App・・・Web App, Automated App or Bot
  • App info (Callback URI)・・・http://your.huginn.site.com:3000/auth/twitter/callback
  • App info (Website URL)・・・http://your.huginn.site.com:3000

設定が完了するとクライアントIDとクライアントシークレットキーが払い出されます
が huginn では使用しないので無視します

権限設定ができたら Consummer Keys を再作成してメモしておきます
huginn ではこちらの API キーとシークレットキーを使います

キーを huginn に登録して起動

取得した Twitter の クライアントIDとクライアントシークレットキー情報を huginn に渡します
基本的には環境変数として渡します

docker run -it -p 3000:3000 \
-e HUGINN_TWITTER_OAUTH_KEY=xxx -e HUGINN_TWITTER_OAUTH_SECRET=xxx \
ghcr.io/huginn/huginn

huginn と Twitter を連携する (サービスの登録)

http://localhost:3000/services にアクセスすると Twitter の OAuth が使えるようになっています
huginn 経由でツイートするユーザでログインしましょう

We're sorry, but something went wrong (500) となる場合は HUGINN_TWITTER_OAUTH_KEY と HUGINN_TWITTER_OAUTH_SECRET に正しい API キー/シークレットキーが設定されているか確認してください (クライアントIDとクライアントシークレットキーではないので注意してください)

Webhook エージェントの作成

次に Webhook エージェントを作成します http://localhost:3000/agents/new から作成します

Type・・・Webhook Agent Name・・・test_webhook Schedule・・・そのまま Controllers・・・そのまま Keep events・・・そのまま Sources・・・そのまま Receivers・・・そのまま Scenarios・・・そのまま

これで OK です
作成した Webhook エージェントを確認するとコールする URL が発行されるのでメモしておきます
この URL に POST リクエストでアクセスすると Webhook を実行できます

Twitter Publish Agent の作成

あとは Webhook した際に実行されるエージェントを作成します

http://localhost:3000/agents/new から Twitter Publish Agent を作成します

Type・・・Twitter Publish Agent Name・・・test Service・・・Twitter アカウントで連携したサービスを選択 Schedule・・・そのまま Controllers・・・そのまま Keep events・・・そのまま Sources・・・test_webhook Propagate immediately・・・チェックしない Receivers・・・そのまま Scenarios・・・そのまま

Sources に先程作成した Webhook エージェントを指定します
これでツイートする用のエージェントの作成は完了です

動作確認

Webhook をリクエストしてみましょう
そして問題なくツイートされているか確認してください

内部的に順番にジョブが処理されるので少しラグがあるかもしれません

最後に

huginn で Twitter と連携する方法を紹介しました
Twitter と連携する部分がやや面倒ですがそれができれば簡単に Webhook 経由でツイートできました

これで IFTTT や zapier を使わなくて済むかもしれません

参考サイト

0 件のコメント:

コメントを投稿