Honeycodeでデータ更新&Slackへの通知を行ってみた
いわさです。
前回は、SlackのメッセージをHoneycodeで受信し、データを作成しました。
今回は以下を行ってみます。
- 受信したデータの自動更新
- 画面操作による手動更新
- Slackへの更新通知
はじめに
Amazon Honeycodeは現在ベータ版です。
バージョンアップ時、正式リリース時には変わっている可能性がありますのでご注意ください。
受信したデータの自動更新
オートメーションを使って、データのInsert発生時に特定フィールドの更新を行いたいと思います。
Requestsテーブルにレコードが作成された時に、Statusフィールドを初期値"None"を設定してみます。
左のメニューからAutomationsにて新規作成を選択します。
上記設定で、「Requestsテーブルに行が追加されたとき」というトリガーになります。
続いてアクションを設定します。
上記設定は、「対象行のStatusフィールドを"None"という値で更新する」というアクションになります。
ここの各項目は式が使えます。
関連テーブルの更新の場合はSimple Todoテンプレートでも使われているように、FindRow関数などを使うと良いでしょう。
Honeycode関数リファレンスは以下です。
さて、オートメーションが作成できたら、右上のPublishを押してください。
Publishするまではdraft状態で残ります。
Publish出来たら、Slackからメッセージを送信し、動作確認してみます。
1分周期のAppFlowで自動受信されるはずです。
データが受信出来ました。
StatusもNoneに自動更新されていますね。
画面操作による手動更新
ここまでで、SlackからステータスNoneのデータを蓄える仕組みが出来ました。
UIを作成し、データの表示と操作による更新を行ってみます。
まずはアプリを新規作成しましょう。
少し慣れてきたので今回はスクラッチでの作成で進めてみます。
アプリの構想としては以下で進めてみようと思います。
- ステータスNoneのデータをリスト表示する画面がある
- リストをタップすると詳細画面に遷移する
- 詳細画面でApproveかRejectを選択できる。選択するとステータスを更新し、リスト画面に戻る
ステータスNoneのデータのみリスト表示&詳細画面への遷移
"Add objects"を選択し、"Column list"を追加します。
"Insert column list"ダイアログにて情報を入力してください。
リストのデータソースを"Requests"、表示対象フィールドは"Content"を選択します。
そして "Add a detail screen"をチェックしましょう。
詳細画面が作成され、ナビゲーションも自動設定されます。(便利!)
これでRequestsテーブルをリスト表示する画面が作成出来ました。
次に、ステータスNoneのみを表示するよう修正したいと思います。
作成したリストの"Set source"プロパティでフィルタリングを行います。
以下を入力してください。
=Filter(Requests,"Requests[Status] = ""None""")
これで、ステータスがNoneのレコードのみを表示対象とすることが出来ました。
次に、詳細画面で更新処理を作成します。
自動生成された詳細画面を開いてください。
詳細情報の表示画面が自動生成されていると思います。
少し設定内容を見てみましょう。
リストには、ソースとして =$[InputRow]
が設定されています。
InputRowについては下記を参照してください。
リスト内のセルでは表示対象のフィールドが指定されています。
更新ボタンを配置します。
"Add objects" からボタンを2つ追加しましょう。
配置されたボタンをダブルクリックし、それぞれ Approve と Reject と入力しておきます。
ここから更新処理を設定していきます。
Approveボタンのプロパティで"ACTIONS"タブを開きます。
開いたら、"Create an automation"を選択してください。
"Add actions"でボタンクリック時のアクションを追加します。
今回はデータ更新を行いたいので、"Overwrite"を選択します。
更新内容を設定します。
先程詳細画面で使われていた、$[InputRow]を使ってみましょう。
詳細画面の対象レコードのステータスフィールドを Approve という値で更新するよう指定してみました。
アクションを追加して、データ更新後にリスト画面(前画面)に戻るように設定しておきましょう。
Rejectボタンも同様に設定しておきます。
動作確認してみます。
222を承認、444を却下してみます。
222が表示されなくなりました。
リアクティブな感じがとても良いですね。
444の却下操作をしたあと、テーブルを確認してみます。
ステータスが更新されていますね。
Slackへの更新通知
最後に、更新時にSlackへ通知を行います。
ボタンのActionにWebhookがあるので、SlackのIncoming Webhookを利用したいと思います。
Slack側の仕様は以下を参考にしました。
まずはActionを追加します。
Webhook情報を入力します。
textキーに値を設定するとメッセージとして扱われるようです。
設定したので試してみます。
Noneのレコードを承認してみましょう。
通知されました。
さいごに
今回はHoneycode内部のデータの更新と、外部への送信を行いました。
受信についてはAppFlowのコネクタに依存しているため、AppFlowの連携先がどれだけ充実するかでHoneycodeの可能性も広がりそうだなと感じました。
一方、送信についてはWebhookが使えるので汎用的に使えそうです。
また、画面の更新はデータに反応して即更新されます。
コントロールオブジェクトの表示・非表示は式が使えるので、データに応じた動的なレイアウトの作成も出来そうですね。