Asteria WarpフローデザイナーとSlackその2:SlackDeleteを使用してSlackに投稿したメッセージを削除する

はじめに

本記事では、ASTERIA WarpのSlackDeleteを用いてSlackのメッセージを削除するフローと手順を解説します。今回は前回解説したSlackGetによってTimestampを取得することで、それを使用してメッセージを削除します。

SlackDeleteについて

Slackに投稿されたメッセージをタイムスタンプで指定して削除します。

SlackDeleteのプロパティ設定

SlackDeleteのプロパティにおいて設定した項目は以下の通りです。これらを設定することで、Slackに投稿されたメッセージを削除できます。ここで設定していない項目はデフォルトの値を使用しています。

  • コネクションを使用:はい(コネクションを使用して接続する場合は必ず「はい」にします)
  • コネクション名:使用するSlackコネクション名を入力します。(Slackその①で使用したコネクションを引き続き使用できます)
SlackDeleteのプロパティ

SlackDeleteではメッセージのタイムスタンプで削除するメッセージを指定するのですが、SlackDeleteのプロパティではタイムスタンプを指定できません。今回はSlackDeleteより前のSlackGetで取得したタイムスタンプをストリームから取得する予定です。

今回使用するフローの解説

SlackDeleteを用いてSlackからメッセージを削除するため、下図のフローを作成しました。フローの実行後、Slackを確認すると指定したメッセージが削除されています。

SlackDeleteの動作確認フロー
削除対象のSlackに投稿されたメッセージ

今回は下図にある3件のメッセージを削除する想定で進めます。(Slackのメッセージはこの3件以外には存在しないものとして進めます)

今回削除するSlackのメッセージ
SlackGet

SlackDeleteで削除するメッセージを指定するためのTimestampを取得します。Slackからプロパティで指定した範囲のメッセージを取得する際にTimestampも取得できるので、ここではプロパティで削除したいメッセージを取得するように設定します。
今回は10:53と11:00に投稿されたメッセージを取得したいので、プロパティを下図の通りに設定しました。

SlackGetのプロパティ設定
マッパー(SlackGetの後)

前のSlackGetで取得した値の中からTimestampを次のSlackDeleteにストリームで渡します。これでSlackDeleteで削除するメッセージを指定できます。
また、ここで条件付きレイヤーを使用することで、さらに削除するメッセージの絞り込みを行うことができます。このマッパーの前にRecordFilterを使用しても絞り込みを行えます。この件はフローの実行結果の後に解説します。

マッパー(SlackGetの後)の設定
SlackDelete

「SlackDeleteのプロパティ」の画像にあるように、コネクションを使用する場合はSlackDeleteのプロパティで設定する項目は「コネクションを使用」と「(使用する)コネクション」だけです。(下のエラー処理は今回設定しません)
直前のマッパーから受け取ったTimestampを使用してSlackに投稿されたメッセージを削除します。

マッパー(SlackDeleteの後)

SlackDeleteから出力された「IsSuccess(メッセージ削除の成否)」と「Timestamp(削除したメッセージのタイムスタンプ)」をconcatでつなげて1行ごとに改行ながら出力します。IsSuccess,Timestampの順番で出力されます。

マッパー(SlackDeleteの後)の設定

実行結果

フロー実行時の表示は下図のようになります。SlackDeleteの後のマッパーで設定していた通り、「IsSuccess,Timestamp」の形で出力されます。
IsSuccessがTrueになっているのでメッセージは3件とも削除に成功しており、この後Slackを確認したところ実際に指定したメッセージは削除されていました。

フローの実行結果

---------------------

SlackGetで取得したメッセージをRecordFilterや条件付きマッパーでさらに絞り込む方法

SlackGetで取得する日時や件数以外で絞り込みを行いたい場合、取得してからRecordFilterや条件付きマッパーで対象から外す手法で絞り込みを行えます。

例えば下図のように投稿された時間が同じメッセージで日時や件数での指定が難しい中央のメッセージ(SlackPost_HabukuMessage)だけを取得してSlackDeleteで削除できます。

SlackPost_HabukuMessageだけを取得してSlackDeleteで削除したい

絞り込みに使用するフローの解説

RecordFilterと最初のマッパーに条件付きレイヤーを追加しただけで、他は今回のフローと同じです。SlackGetで取得した後に、RecordFilterとマッパーの条件付きレイヤーで絞り込みを行っています。

SlackGetで取得した後絞り込むフロー
RecordFilterとマッパー(SlackDeleteの前)の設定

条件式での絞り込みを行います。RecordFilterでは2、条件付きレイヤーでは1が含まれないメッセージをのみを処理対象にするように設定しているので、RecordFilterではSlackPost_NokosuMessage_2が、条件付きレイヤーではSlackPost_NokosuMessage_1が削除対象から外されます。

RecordFilterのプロパティ設定
マッパー(SlackDeleteの前)条件付きレイヤーの設定

実行結果

実行結果から1件だけ削除されていることが確認できます。

フローの実行結果

また、Slackを確認しても中央のメッセージ(SlackPost_HabukuMessage)のみが削除されていることが確認できます。

中央のメッセージ(SlackPost_HabukuMessage)のみが削除された