0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

slackのリアクションを監視してHasura経由でReact画面をリアルタイムに更新する

Posted at

Slackのメッセージのリアクションを監視して、ReactのUIにリアルタイムに反映させたい。
スクリーンショット 2020-10-16 17.35.00.png

やることは大きく分けて以下の3つ

  • slackのメッセージにおけるリアクションの監視
  • 対象メッセージのリアクション回数の更新
  • ReactのUIに反映

slackのメッセージにおけるリアクションの監視

slack APIのEvent Subscriptionsを使う。

URLの指定

エンドポイントをここに入力。
今回はFlaskで事前に用意したエンドポイントを利用。
このエンドポイントでslackからjsonを受け取ってHasuraにクエリを投げる。

発火条件の指定

Subscribe to events on behalf of usersで発火条件を指定する。
今回は、リアクションが押された時に発火させたいので、以下の二つを有効にする。

  • reaction_added
  • reaction_removed

これでリアクションがあった時にエンドポイントにjsonが投げられる。

対象メッセージのリアクション回数の更新

Flaskで処理を行う。
今回は、指定のチャンネルのメッセージのリアクションのみ監視したかったため、チャンネル名でフィルターをかける。
次に、受け取ったjsonの中にメッセージのユニークなidが入っているので、これを元にHasuraの方にクエリを投げてリアクション回数を取得する。
その後、reaction_addedかreaction_removedでそのリアクション回数を増減させて最後にmutation。

ReactのUIに反映

apollo-clientを使ったsubscriptionは公式documentに沿えばok。

参考

Setting up GraphQL subscriptions using apollo-client
https://hasura.io/docs/1.0/graphql/core/guides/integrations/apollo-subscriptions.html#write-your-subscription

Create Subscription and Render Result
https://hasura.io/learn/graphql/react/subscriptions/3-create-subscription/

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?