FileMaker から Slack へ投稿2

以前 FileMaker から Slack へ投稿する方法について書いた。

[Mac] FileMaker から Slack へ投稿 – with a Christian Wife
https://wacw.cf/2018/09/05/posting-slack-with-filemaker/

しかしこれはシェルスクリプトを使う方法なので FileMaker Server や FileMaker Go などでは動かせない。

そこで別の方法に挑戦した。

まず試したのが以下の方法。

SlackにFileMakerから通知を送信する – Qiita
https://qiita.com/yasuhikoc/items/f0fdc4365c7e0da34915

でもなぜか投稿がうまくいかない。これのやり方はシンプルでいいんだけどなあ。

別の方法は海外の掲示板で見つけた。

Insert from URL and Slack | FileMaker Community
https://community.filemaker.com/thread/180280

これはあまり美しくない方法だけど、一応投稿できた。以下にまとめ直してみよう。

(1)まず以下のフィールド(テキスト)を作成する。

・url
・options
・message
・result

以下、テーブル名は Table としている。

(2)そして、以下のようにレコードに記入する。

・url: Slack の Incoming Webhook 用 Webhook URL
・options: -X POST -H "Content-Type: application/json" -data-binary @$data
・message: {"text": "これはテストです。", "channel": "#[投稿チャンネル名]", "username": "[投稿の名前]", "icon_emoji": ":smile:"}
・result:(空欄)

備考:
・Webhook URL は以下のページで取得する。
https://slack.com/services/new/incoming-webhook
・options は -d とすると改行が反映されないので -data-binary にする。

参考:
コマンドの出力をそのままcurlでPOSTする – Qiita
https://qiita.com/edvakf@github/items/fb5c2f55292218a5446d

(3)以下のようにスクリプトを作成する。

Set Variable [ $data ; Value: Table::message ]

Insert from URL [ Select ; With dialog Off ; Table::result ; Table::url ; cURL options: Table::options ]
(Insert from URL のオプションで Target を result、Specify URL で Table::url 、Specify cURL options で Table::options とする。)

これでスクリプトを実行すると Slack へ投稿されるはずだ。同時に result フィールドに ok と入力される(失敗するとエラー内容が入力される)。

このやり方だと message フィールドにすべてチャンネル名や投稿内容を記述しているが、書き換えが難しい。なので実際に使う際はチャンネル名、投稿内容等は別フィールドにし値を引っぱってくるようにするのがいいだろう。