LoginSignup
0
1

More than 5 years have passed since last update.

Mastodon複数インスタンスのnotificationsをプッシュ通知する

Posted at

目的

マストドン複数インスタンスの各種通知をiPhoneへプッシュ通知したい。
(すでに複数インスタンス対応のアプリが出てきているので必要性は薄れてしまったが勉強のために。)

利用言語・サービス

リポジトリ

以下の2つに分けて実装。1つにまとめても問題はないはず。

mastodon-notifications-sqs

複数マストドンインスタンスに対してStreamingAPIを利用してnotificationsを待ち続ける。
notificationを取得したらAWS SQSのキューに対してメッセージをプッシュする。

sqs-to-ifttt-webhook

AWS SQSの特定のキューから定期的にメッセージを取得。
取得した内容をvalue1というPOSTデータとしてIFTTTのwebhookURLに対してPOSTする。

下準備

AWS SQSのキューの準備

AWS Management Console-> Simple Queue Serviceからキューの作成を実施。
設定の内容は任意。
作成後キューのURL(例:https://sqs.ap-northeast-1.amazonaws.com/111111111/hogehoge)を確認しておく。このURLに対してメッセージをPOST/GETする。

IFTTTのサービス設定

IFTTTのmaker webhooksを利用可能状態にし、
「webhook受信->プッシュ通知」のイベントを作成する。
プッシュ送信内容は今回はvalue1だけを指定する。

スクリーンショット 2017-04-30 18.03.42.png

WebhookのURLは作成したWebhookの詳細にあるURLに対してブラウザでアクセスすると利用方法がわかる。
URLの一部にevent名、クエリにシークレットが入りそれで認証している。

[webhook-URL例]
https://maker.ifttt.com/trigger/[event_name]/with/key/[secret_key]

AWSの認証情報設定

SQSが利用できるAWSのIAMユーザの認証情報をサーバの~/.aws/credentialsに記述する。

[default]
aws_access_key_id = xxxxxxxxxxxx
aws_secret_access_key =  xxxxxxxxxxxxxx

通知を受けたいインスタンスの認証情報を取得

moru3/mastodon-notifications-sqsのREADMEにも記述しているが、
マストドンのAPIを利用するためには、対象のインスタンスに対してclient_idとclient_secretを取得する必要がある。
curlで取得可能。

# 取得
curl -X POST -sS https://xxxxxxxxxxxxxx/api/v1/apps \
   -F "client_name=xxxxxxxxxx" \
   -F "redirect_uris=urn:ietf:wg:oauth:2.0:oob" \
   -F "scopes=read write follow"

# 結果
{"id":1,"redirect_uri":"urn:ietf:wg:oauth:2.0:oob","client_id":"xxxxxxxxxxxxxx","client_secret":"xxxxxxxxxxxxxxxxxxxxx"}%

利用

実行環境にて以下を実行する。
実行前にsetting.ymlを作成しておく。

  • moru3/mastodon-notifications-sqs
  • moru3/sqs-to-ifttt-webhook

少し動かしてみた感想

  • 通知多すぎ問題
  • なぜか認証が通らないインスタンスがあった(閉じている?)
  • 1インスタンスへの通知監視が止まってしまっていることがあった
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1