FileMakerのデータが編集された時、ChatworkのAPIを活用して携帯端末へ通知を送る 

# はじめに
FileMakerで重要なデータが編集・削除された際、すぐに気づくための方法として、前回は[FileMakerのデータが編集された時、SlackのAPIを活用して携帯端末へ通知を送る](https://qiita.com/JuppoWorks/items/880d445e6ee70a963b20)方法をご紹介しました。
内容は、あらかじめインストールしているアプリを通して、携帯端末にプッシュ通知を送ったりブラウザを通してデスクトップ通知を送ることでデータの状況を確認するというものでした。
この記事ではChatworkというチャットサービスのAPIを使って同じように携帯端末へ通知を送る方法をご紹介します。
前回と同じく、FileMakerでフィールド内容が編集された時にプッシュ通知の送信を試みます。
行程は以下の通りです。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/e6d3fb88-47d9-4dde-86fd-f7ca2f1a88c2.png)


Chatworkについて
Chatwork公式サイト [https://go.chatwork.com/ja/index.html](https://go.chatwork.com/ja/index.html)

APIについて
『API とは？』 https://qiita.com/jonathanh/items/6394ffb5b5ad86ae914f

# 環境
開発環境：FileMaker Pro 18 Advanced
通知を送りたい携帯端末：Chatworkのアプリをダウンロードしてサインインしておきます。

# Chatworkのアカウントを作成する
通知を送信する用と、通知を受け取る用に2つアカウントを作成してください。

※通知送信用と受信用にアカウントを分ける理由
今回のメッセージ投稿を行う方法は、Slackの時のようにWebhookを利用してBotから行うのではなく、あるアカウントを投稿主として行なう方法です。
自分が送ったメッセージに対して自分自身には通知は届かない仕様のため、送信用と受信用にアカウントは分ける必要があります。

2つのアカウントが用意できましたら、FileMakerを操作するPC端末のChatworkには「通知送信用アカウント」でログインをして、通知を受け取りたい携帯端末のChatworkアプリには「通知受信用アカウント」でログインをしてください。

# 2つのアカウント同士でメッセージのやり取りができるようにする
Chatworkでは特定のユーザーにメッセージを送る場合、送り相手をコンタクト追加する必要があります。
Twitterでいう相互フォローのような関係になって、はじめて共有のチャットスペースでメッセージのやり取りができるようになります。

画像は通知送信用アカウントでログインしたPCでの操作です。
**(1)画面上部の[コンタクト管理]ボタンをクリックします。**
**(2)ユーザーを検索タブ内の検索バーに通知受信用のアカウントの作成に使用したメールアドレスを入力して[検索]ボタンを押します。**
**(3)通知受信用のアカウントが出てきたら[コンタクトに追加]ボタンを押します。**
![01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/0ac4bf90-dae5-af7f-b604-8ebed61bcade.png)

**(4)続けて「コンタクト承認依頼」のダイアログメッセージが表示されますので[送信]ボタンを押します。**
![02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/6c59cd47-09fc-8e4d-c951-85146e236a93.png)

**(5)携帯端末で通知受信用のアカウントでログインしたChatworkのコンタクトを確認すると通知送信用のアカウントから申請が届いているので[承認]ボタンを押してください。**
![IMG_0013.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/5b6ec1a3-c54a-7130-09b5-b2171720afeb.png)

# 通知を送る用のチャットを作成する
FileMakerからメッセージを送るためのGroupチャットを作成します。
1対1でのチャットでも通知の送受信には問題はありませんが、Groupチャットの場合はそのチャットに参加しているメンバー全員に通知を一斉送信することができます。
FileMakerは複数人でデータを共有するために使うことが多いと思いますので、この記事ではGroupチャットで通知の送受信を行います。

通知送信用アカウントでログインしたPCの操作に戻ります。
**(1)画面左上にある[＋]ボタン→[Groupチャットを新規作成]ボタンを押します。**
![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/8d41a763-8646-286b-a60c-2cf63273cb6b.png)

**(2)チャット名に任意の名前を入力します。**
　ここではtestという名前にします。
　メンバー選択箇所にはコンタクトに追加したユーザーアカウントが表示されます。
　通知受信用のアカウントにチェックを入れ、[作成]ボタンを押します。
![04edt.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/1966f590-00f8-7ac3-69fa-a069e64db02d.png)

**(3)testというチャットが作成されました。**
![05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/50541bb8-e64b-6c95-7d7d-f2e70ead09a3.png)

# チャットのIDを確認する
作成したチャットのIDを確認します。
このIDは後ほどFileMakerでメッセージを自動送信するスクリプトを作成する際に必要となります。
手順は以下のChatwork公式のサポートサイトをご参考ください。
Chatwork公式 [https://help.chatwork.com/hc/ja/articles/360000142942-ルームIDを確認する](https://help.chatwork.com/hc/ja/articles/360000142942-%E3%83%AB%E3%83%BC%E3%83%A0ID%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B)

# APIトークンを発行する
作成したチャットにメッセージを送信するためにAPIトークンを取得します。
手順は以下のChatwork公式のサポートサイトをご参考ください。
Chatwork公式 [https://help.chatwork.com/hc/ja/articles/115000172402-APIトークンを発行する](https://help.chatwork.com/hc/ja/articles/115000172402-API%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%82%92%E7%99%BA%E8%A1%8C%E3%81%99%E3%82%8B)

#FileMakerでプッシュ通知を設定する
ファイルメーカーでの操作に移ります。
**(1)スクリプトを新規作成します**
　・使用するスクリプト：「URLから挿入」(画像A)
![06edt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/cadbca0a-27e8-b853-4ce9-d56b44877a3b.png)

　・ターゲットの指定：任意の変数を設定(画像B)
![07edt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/9fb9af8d-a33c-27bc-bb5b-92ec09d1fc48.png)

　・URLを指定："https://api.chatwork.com/v2/rooms/●●●/messages" をセット
　　※●●●はチャットIDに置き換えてください。(画像C)
![08edt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/98c2dbea-9287-b7ea-7dfe-e509727a13aa.png)

　・cURLオプションの指定：投稿内容をcURL形式で記述(画像D)
![09edt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/bdb43333-06a9-fe61-d0a0-bb71753780fb.png)

**cURL記述サンプル**

```
"-X POST 
 -H \"X-ChatWorkToken: fc1111111zz22d3334ba5555c66666x7\" 
 -d \"body= データが更新されました。 \" "
```

**cURL記述ルール**
`-X`= POST固定
`-H` = 自分のAPIトークン
`-d` = 投稿する文章

**！注！**
FileMakerでcURLを記述する際は<font color="Red">それぞれのクォーテーションマークの前にバックスラッシュを付ける</font>必要があります。
Chatwork公式API解説サイトの記述をコピペして使う場合、バックスラッシュを忘れないように注意が必要です。
参考：FileMakerPro18Adbancedヘルプ  [https://fmhelp.filemaker.com/help/18/fmp/ja/index.html#page/FMP_Help/curl-options.html](https://fmhelp.filemaker.com/help/18/fmp/ja/index.html#page/FMP_Help/curl-options.html)
　　　末尾のメモにバックスラッシュの件について記載されています。

**(2)編集された際に通知を送りたいフィールドのOnObjecrSaveスクリプトトリガに作成したスクリプトを設定します。**
![11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/474ce2d4-080f-471b-c07d-e4eecd35d216.png)

これで設定は完了です。
フィールド内容を編集して確定すると携帯端末にプッシュ通知が届きます。
![IMG_0014.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/9f479df3-943d-c267-e160-ffbe0d641567.png)

Chatworkアプリのtestチャット欄を見ると自動でメッセージが投稿されていることが確認できます。
![IMG_0015.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/04867a95-c53e-891c-c17d-9b26c725bf5a.png)

#サンプルファイル
サンプルファイルをご用意しました。
[ダウンロード](https://www.juppo.co.jp/Qiita/sample_Chatwork.zip)
はじめに「test」スクリプト→「URLから挿入」ステップ内の設定を以下のように書き換えてください。
　・URLを指定：●●●をメッセージを送信したいチャットIDに書き換える
　・cURLオプションの指定：▲▲▲をご自身が取得されたAPIトークンに書き換える

#留意点
・インターネットに接続されていない環境では通知を受け取ることができません。
　FileMakerでデータを編集するデバイスと、通知を受け取るデバイスの両方がインターネットに接続している必要があります。
・PCでデスクトップ通知を受け取る場合、ブラウザを立ち上げてChatworkにログインをしておく必要があります。
・携帯端末でChatworkのアプリをフォアグラウンドの状態で開いている際は通知が届きません。
　アプリを立ち上げていない時、バックグラウンドでアプリが立ち上がっている時、携帯端末がスリープ状態の時は通知が届くことを確認済みです。

#SlackとChatworkの比較
前回利用したSlackと、今回利用したChatwork、どちらも通知を送ることができましたが、逆に違いはないの？ということで比較してみました。
今回のFileMaker上のデータが編集された時に携帯端末に通知を送るという機能に関して重要と思われる箇所を比較してみました。
![比較表.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/a4fbbf57-1e9e-ee54-8745-14414564b401.png)

**比較①メッセージ内のURLからFileMakerを開けるか**
実際のメッセージ画面をまとめました。
![比較表new.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535677/1df7c73b-9538-c4e8-9afa-0651713ce311.png)
PCではFileMaker Pro Advanced、携帯端末ではFileMaker GOをインストールしていると「fmp://」で始まるURLでファイルを開くことができます。
さらにURLの末尾にスクリプトを指定すると編集が行われたレコードに移動することも可能になるので、携帯端末に通知が届く→FileMakerを開いて、編集されたレイアウトに移動してさらにそこから対象のレコードを探す…という動作をメッセージ内のURLをタップだけで行うことができます。
重要なデータが編集された時はなるべく手間を省いて瞬時にアクセスしたいですよね。
そのような点ではメッセージ内のURLからFileMakerを開けるかどうかは重要かと思います。

**比較②携帯端末の通知が届かない条件**
Slackの場合、通知を送る用のチャンネル以外を見ている時は通知が届きますが、Chatworkの場合は通知を送る用のチャット以外を見ていても通知が届きません。
もしChatworkを日常使いされていて頻繁にチェックする人は通知の取得漏れに注意が必要です。

基本的な機能の比較は既にまとめられているサイトがありますのでそちらをご参考ください。
『ChatworkとSlackどちらを採用すべき？2大チャットツールを徹底比較！』[https://boxil.jp/mag/a110/](https://boxil.jp/mag/a110/)