ラベル Slack の投稿を表示しています。 すべての投稿を表示
ラベル Slack の投稿を表示しています。 すべての投稿を表示

2022年7月26日火曜日

Slack の過去の投稿を再投稿して 90 日制限を回避する

えっと。はじめに断っておきますが、ネタ記事です。

Slack 初の料金改定とフリープランの内容変更のお知らせ | Slack

Slack の改定により、フリープランでは 90 日間の履歴しか閲覧できなくなりました。
この変更は結構困っている人は多そうで、Twitter などでもちょこちょこつぶやいている人を見かけました。
これを機に Slack から別ツールへ移行する人も多いようですが、私は今現在は主に通知用として使っているだけなので、特になにもせずに使い続けようと思ってます。
ただ、メモ置きとして使っていたような気もするので、実はそのうち困るかもしれません。。

そこでひらめきました!(のび太の画像)
90 日前までの履歴しか見えないのであれば、見えなくなる前に投稿し直せばいいのでは?

というわけでサクッと Make formary Integromat でシナリオ書いてみたのが冒頭のツイート。
ネタだけどちょこっと解説していきます。Integormat についてはこのブログでも何度か書いてるのでそのへんを参考にしてください。

シナリオ解説
概要
処理の流れは大体こんな感じ。トリガーは一日一回。
  1. 検索日(現在時刻から指定日数前の YYYY-MM-DD)と検索チャンネルの変数をセット
  2. Slack Search モジュールで検索
  3. 一度バンドルを集計(ホントはここで filter かけて集計したかった)
  4. 再投稿用のスレッドの親メッセージを投稿
  5. 集計したバンドル配列で以下の処理を各要素繰り返し
    1. 投稿ユーザー情報を取得(ユーザーのアイコンつけたかっただけ)
    2. 検索したメッセージとユーザー情報を使って、内容を再投稿
5 の前に検索結果が空でないかのフィルターをセットしてます。
また 6.1 の前にユーザー情報が取得可能でフィルターをセットしてます。

検索結果のバンドルをそのまま流して再投稿することも可能ですが、スレッドにしたかったので一度集計してバンドルを1つにしてます。(Integromat はモジュールの output バンドルの数だけ以降のシナリオが実行される仕組みです。集計してバンドルを1つにすることで、スレッドの親メッセージの投稿処理を1回だけにしてます。)

関係ないけど Slack の Block Kit Builder を初めて使いました。便利でした。
Blue print
Integromat は Blue print でシナリオの export/import が可能なので Gist に置いておきました。これを見る、もしくは import してもらって見たほうが理解しやすいと思います。

補足

  • Blue print の connection は筆者の Integromat のものなのでそのままでは使えません。もし import したら conection を更新してください。
  • 今回のシナリオは Twitter モジュール使ってないので Integromat のフリープランの範囲で使えます。
  • ただし、そこそこオペレーター数を使うシナリオ、かつ Slack のメッセージごとに消費するので、メッセージが多いと Integromat のフリープランを超えてしまします。
    Pricing & Subscription Packages | Make
    ざっくり計算で1日あたり 7 件のメッセージを処理するのが限界じゃないかなーと思います。
    動作優先でオペレーターの最適化してないのでもっと減らせる(※)とは思いますが、仮に不可能ではありますが 1 オペレーターでシナリオが書けたとしても、Integromat のフリープランの最大 1,000 件は越えられないです。
    (※スレッドやめるとかアイコンやめるとか、1週間分まとめて処理するとか)
  • あと再投稿したスレッドがまた期日を迎えたときにどうなるかとか、ボットどうするかとか、添付ファイルとか、いろいろ確認してないので、ちゃんとやりたい人は頑張ってください。

(期日内であれば)件数無制限という点について

これは Slack からのお知らせのスクリーンショットです。

変更前だと直近 10,000 件しか閲覧できてなかったのですが、今回の改定で期日以内であればこの件数制限がなくなったようです。
(この記事書いてて気づいたレベルなので自分は困ってなかったみたいだ)

さて、もうお気づきかと思いますが、実は紹介した方法を使うとなんと!日数制限も超えてメッセージを無限に扱えるようになっちゃいます!

やってることは検索して再投稿なので Slack API 叩けば誰でもどこでも出来ちゃいます。GitHub Actions とかでやらせることもできちゃうと思います。(それなら Integromat とかの RPA よりも無料の範囲でできそう)

つまり(使いやすいかどうかは置いておいて)実質無制限になったわけですw

いやー、私はまぁそこまでして使おうと思いませんが。。

(でもこれ書いてて思ったけどファイルストレージは意外と?)

最後に
なんか書けそうな気がする。。

2021年4月13日火曜日

Jinja2 cli な kamidana の additonals として slack 拡張を書いてみた

 Jinja2 は python のテンプレートエンジンです。
そして kamidana は Jinja2 の CLI です。
今回はふと思い立って Jinja2 で API 叩いてそのレスポンスを加工したいなーと思い、その練習の1つとして slack API を叩いてみました。

kamidana には --additionals オプションがあり、 .py ファイルを指定するとフィルターなどを拡張することができます。
最初は自分で Jinja2 組み込みで cli 書こうと思ってたんですが、↓を読んで additionals が便利そうだったので、この構成にしました。
悩んだ末に自分で自分の使うツールを作った話 - Qiitaできたもの

https://github.com/srz-zumix/yurumikuji

Slack = ゆとり・ゆるみ
Jinja2 = 神社
kamidana = 神棚
ということで、「ゆるみくじ」という名前にしました。
(ゆるみくじは干支などの動物の形したおみくじとか、ちょっとかわいいおみくじのことを指すみたいです。知らんかった)

実装したのはユーザー・ユーザーグループの情報取得と検索フィルターです。
使い方はリポジトリの README を読んでもらうとして・・・
例えば以下のテンプレートファイルを kamidana で処理すると

{{ ("srz_zumix" | slack_user_id | slack_user_info).profile.image_512 }}
{{ ("srz_zumix" | slack_user_id | slack_user_profile).image_512 }}
{{ "srz_zumix" | slack_user_id | slack_user_presence }}

このようになります。

https://secure.gravatar.com/avatar/a7614593f3f6f46b73da348c89beba81.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0023-512.png
https://secure.gravatar.com/avatar/a7614593f3f6f46b73da348c89beba81.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0023-512.png
active
書いてみた感想

使ってみると何に使えるかわかんないけど面白い。
レスポンスをそのまま返してるだけだけど、 Jinja2 の基本的な書き方で必要なものにアクセスできるので可能性を感じました。

とりあえず、しょっちゅう変わる所属を Slack のカスタムフィールドから取ってきて、メール署名のテンプレートでも作ってみようと思います。
あとは、本当にやりたかったことも簡単にできそうなことがわかったので kamidana additionals でやろうと思います。

では。

2021年4月6日火曜日

【Ruboty】Slack のリアクションに反応できるようにするプラグインを公開

 Ruboty で Slack のリアクション(スタンプ)に反応するハンドラーを書けるようにするプラグインを作成し、公開しました。
https://github.com/srz-zumix/ruboty-slack_reaction_added
https://rubygems.org/gems/ruboty-slack_reaction_added
なんかボットに対してコマンドを投げるのも面倒くさいし覚えきれない、「あとでやる」「TODO」「メモ」とかリアクションをしつつ忘れてしまったり、ということがあったのでリアクションをトリガーになんかアクションできたら便利だよなーと思って書きました。

サンプル

ruboty-slack_reaction_added を追加するとデフォルトのアクションが有効になります。
リアクションにも反応をする ping => @bot reaction ping
リアクションの名前を教えてくれる => @bot reaction name
bookmark リアクションをすると parmalink を教えてくれる (all)
+1 リアクションするとボットも +1 してくれる (all)


ハンドラーの書き方

ruboty-slack_reaction_added で使えるようになるハンドラーのオプションは2つです。

allow_reaction

allow_reaction: true にすると、リアクションに対してもそのアクションが実行されるようになります。

        on /reaction ping\z/,
          name: 'reaction_able_ping',
          description: 'ping allow reaction',
          allow_reaction: true
  
raction_only

raction_only: true にすると、リアクションした場合のみそのアクションが実行されるようになります。ただのメッセージ投稿には反応しません。

        on /.*\z/m,
          name: 'thumbup',
          description: 'thumbup',
          reaction_only: true,
          all: true
  
リアクション情報のとり方

アクションでなんのリアクションをしたのか場合分けしたい場合は、message から取得してください。また、誰がリアクションしたのかも取れるようになっています。

        def call
          # Ruboty.logger.info message.reaction
          # Ruboty.logger.info message.reaction_by
          unless message.reaction_by == message.robot.name
            case message.reaction
            when '+1'
              message.add_reaction('thumbsup')
            end
          end
        end
  

ハンドラーのほうでリアクション名/ユーザー名で条件づけできるようにしても良かったのですが、面倒くさかったのでやめました

デフォルトアクションを無効にする

ruboty-slack_reaction_added デフォルトアクションを無効にしたい場合は、環境変数に「DISABLE_DEFAULT_REACTION_HANDLERS=1」を設定してください。

最後に

結構便利なものができた気がする。

2019年5月20日月曜日

Walterbot の「View log」 がすごく便利!

ブログズミ: [Wercker] Walterbot + Slack を試してみた

この記事を書いた時点では「View log」はなかったので紹介してませんでしたが、
これがすごく便利なので改めて紹介します。
(Walterbot については↑を参考にしてください)

View Log ボタンでエラーの周辺ログが見れる!!


「View Log」ボタンを押すと以下のようにログが見れます。


iutest の Wercker でのテストは
fused したコード(1ファイル化したもの)をさらに圧縮して(js の min.js みたいな) Wandbox に投げつけてコンパイル&実行しているので、エラーがすごく見づらいのですが・・・

ともあれ、すごく便利なので Wercker 使いの方は、ぜひ Walterbot を使いましょう!!

2019年4月9日火曜日

Slack のステータス(障害情報)を通知する

ついこの間 Slack の障害が発生し、メッセージが正しく届かなかったり、スタンプが押せなかったりなどの影響がありましたね。
Slack の状態はステータスページで確認できます。また、Twitter アカウントもあります。


あとは、Atom feed と RSS も用意されているので、お好きな方法で状況を確認できます。


ただ、ステータスページを都度都度見るのはめんどくさいですし、twitter もタイムラインをずっと見てるわけじゃないので気づかなそう。RSS や Atom feed はリーダーを使ってない。。。

RPA で任意のツールに通知する
というわけで、RPA 組みました。
今回使ったのは Integromat です。最近のお気に入りです。

出来上がったシナリオは3オペレーションになりました。(こだわらなければ2ステップでできます)


Trigger は RSS で、Slack Status の RSS url をセットします。


間にある Text Parser はステータスからアイコンのファイル名を摘出するためのステップです。
アイコン画像にこだわらなければ、このステップは不要です。


最後は通知するステップです。Slack で通知してますが、ここはなんでも良いです。お好きなもので通知してください。
接続設定(slack ならスペースとチャンネル)をしたら、本文をセットしましょう。
RSS で取得した内容が使えるので、その内容を流しています。(特に決まりはないので、ここもお好きに編集してください。)


Slack ではアイコンを指定できるので、Text Parser で取得したステータスからアイコンの url をセットしました。



最後に、Slack Status は 30 分更新のようなので、Trigger の Interval も 30 分にします。


これで完成です。
シナリオを有効にしたら、以下のように通知が飛んできます。


最後に
Integromat はシナリオの Export/Import が可能です。
今回紹介したシナリオの blueprint を Gist で公開しているので、こちらを Import して始めることもできます。
Integromat 便利なので是非使ってみてください。では~


2018年6月19日火曜日

Dockerhub Automated Build が終わったら Slack に通知する

Dockerhub から slack 通知の方法は先人の方々が紹介されています。
これらの方法を採用しても良かったのですが、今回は自分なりに一番簡単な方法で通知するようにしたので、紹介したいと思います。





Zapier を使う

Zapier を使います。
以上!







いやいや紹介してませんがな(`・ω・´)ゞ

Zapier とは?という方は、以前使った時の記事があるので、そちらを参照していただければと思います。
ブログズミ: CIサービスの結果を Twitter に投稿する
簡単にいうと IFTTT みたいなやつです。


設定
レシピは簡単です。
Webhook をトリガーに Slack の send message をアクションに設定します。


メッセージはこんな感じにしました。



New image was pushed to {{38337844__repository__repo_name}}:{{38337844__push_data__tag}}
{{38337844__repository__repo_url}}


最後に、Dockerhub の webhook に Zapier で作成した URL を設定します。


こんな感じに通知が来ますー

今回は以上です。