---
title: フォームにリマインダー機能を追加する
description: Kurocoのカスタムメンバーフィルターは柔軟な設定で対象となるメンバーを絞り込むことができます。本チュートリアルではこちらを利用して、届いたフォームの対応が一定時間されていない場合に、担当者宛に通知を送るリマインダー機能を実装してみます。
---

## 概要
Kurocoのカスタムメンバーフィルターは柔軟な設定で対象となるメンバーを絞り込むことができます。
本チュートリアルではカスタムメンバーフィルターを利用して、届いたフォームの対応が一定時間されていない場合に、担当者宛に通知を送るリマインダー機能を実装してみます。

具体的には以下の条件に当てはまるお客様が存在する場合に、担当者宛に通知を送ります。  
- フォームが送信されてから4時間以上経過している
- 回答のステータスが「0::未対応」
- フォームの送信者が有償サポートのグループに所属する

### 学べること
以下の手順でリマインダー機能を実装します。
- [カスタムメンバーフィルターを作成する](#カスタムメンバーフィルターを作成する
)
- [バッチ処理を作成する](#バッチ処理を作成する)
- [動作確認をする](#動作確認をする)

### 前提条件
事前に次のフォームとメンバーを追加しておきます。  

#### メンバー

リマインドが必要なグループに所属するテストメンバーをいくつか追加しておきます。  
本チュートリアルでは「有償サポート契約」グループに所属するメンバーを準備しました。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/420d3d5a40813662a40aa03df11abd7c.png)

#### フォーム

リマインド機能を追加するフォームを準備します。  
基本設定のステータス一覧はデフォルトの設定にしてください。  

```
0::未対応
5::対応中
10::対応済
20::返信有り
```
他の項目は任意に作成して構いません。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/f4ed359097f46ffc98c6e22da5bb5498.png)

また、動作の確認に利用する為、テスト用のユーザーでログインした状態でフォームを送り、メンバーが紐づいた回答を作成しておきます。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/90d2ad03e12ab50934f8fd94ecfae533.png)

ログイン状態でフォームを送ると、回答の名前にメンバー情報詳細ページへのリンクが付きます。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/d1ef660798cb85a87391f86f1e5e3ab7.png)

## カスタムメンバーフィルターを作成する

まずは対象の条件に一致するお客様を絞り込むカスタムメンバーフィルターを作成します。  
絞り込む条件は以下になります。

- フォームが送信されてから4時間以上経過している
- 回答のステータスが「0::未対応」
- フォームの送信者が有償サポートのグループに所属する

[メンバー管理] -> [カスタムメンバーフィルター]をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/6b9ef56bec8c05db3b158cb461714110.png)

[追加]をクリックします。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/f129ff533b1751131a804c4baab80691.png)

|項目|値|
|:--|:--|
|タイトル|至急対応が必要なお客様|
|アクセス制限|全体|
|モジュール検索条件|AND|
|メンバータブ|`グループ` どれかを含む `有償サポート契約`|
|フォームタブ|`フォームID` = `対象とするフォームID(15)`<br/>AND<br/>`ステータス` = `0`<br/>AND<br/>`受信日時` 相対で日付指定 < `-4 hour`|

![Image from Gyazo](https://t.gyazo.com/teams/diverta/9d6cab442d8dc3b61f968a821a972abe.png)

![Image from Gyazo](https://t.gyazo.com/teams/diverta/1b3993435d6ae9b6fc6f0fd606aa6905.png)

![Image from Gyazo](https://t.gyazo.com/teams/diverta/e9c6c65b8f4aec1763958575e1f89e35.png)

:::info
カスタムメンバーフィルターのフォームタブでは、フォームの条件を元に、フォームを送信したメンバーを絞り込むことができます。  
ログイン状態でフォームの送信をし、回答とメンバーが紐づいている必要があります。  
:::

設定ができたら[追加する]をクリックしてカスタムメンバーフィルターを追加します。  

## バッチ処理を作成する

次に、作成したカスタムメンバーフィルター(至急対応が必要なお客様)で対象のユーザーが存在するかを定期的にチェックし、対象者がいる場合に、担当者宛に通知を送るバッチ処理を作成します。  

[オペレーション] -> [バッチ処理]をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/2d7157130e402e302a1555ed76cab1eb.png)

[追加]をクリックします。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/c894d4d2fda838d2a3325531375d1d54.png)

以下の内容を設定します。

|項目|値|
|:--|:--|
|タイトル|send_reminder|
|識別子|send_reminder|
|タイプ|1時間毎|
|処理|以下の内容|

```smarty reference title="send_reminder"
https://github.com/diverta/kuroco-documents/blob/main/sample_code/batch_processing/send_inquiry_response_reminder.txt
```

![Image from Gyazo](https://t.gyazo.com/teams/diverta/278f6b14ae1e191da63cad73567e3ed3.png)

:::caution
- `{assign       var='method_params.custom_search_id' value='21'}`の部分はご自身のカスタムメンバーフィルターのIDに変更してください。  
- `{$smarty.const.ROOT_MNG_URL}/・・・&inquiry_id=15`の部分はご自身のフォームのIDに変更してください。  
- `YOUR_MAIL_ADDRESS@example.com`には送信先のメールアドレスを記入してください。  
:::

## 動作確認をする
最後に動作の確認をします。  
バッチ処理が実行されるのを待つか、[すぐに実行する]をクリックしてバッチ処理を動作させます。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/8d4622f126afcf62e104c9494c146837.png)

以下のメールが届きます。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/c536315a140669f6a5462f7064c9093d.png)

メールに記載のリンクをクリックすると、受信から4時間以上経過したステータスが「0::未対応」の回答一覧が表示されます。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/570f65274e127a405f83dda11418aa3f.jpg)

以上で、フォームにリマインダー機能を追加する説明を終わります。

## 関連ドキュメント
- [KurocoとNuxt.jsで、フォーム画面を構築する](/ja/docs/tutorials/setting-up-inquiry-forms/)
- [カスタムメンバーフィルターを利用する](/ja/docs/tutorials/using-custom-member-filters/)
- [Smartyプラグイン](/ja/docs/reference/smarty-plugin/)