レコードの既読を確認したい

回覧のように特定の人へ情報を発信し、その人が既読かどうか確認したく下記を参考に作成しております。

お知らせアプリでレコードの既読チェックカスタマイズをしてみよう – cybozu developer network

サンプルのように確認ボタンが表示され、ボタンを実行すると確認済ユーザーに記録され既読確認は達成されました。

只、このサンプルのままだと通知したいユーザーである三宅さん他二名に具体的にどのような方法にて通知するのか解らなかった為、下記のようにプロセスに通知先を設定しました。

三宅さん他二名にはkintone上に通知され詳細表示の際に確認ボタンも表示され、クリックすると記録されるのですが、プロセスに通知先を追加したために、三宅さん他二名がアクションを実行しないとプロセスが完了できません。

確認ボタンの代わりにアクションの実行で処理できないかと思い、noteButton.jsの実行部分であるupdateRecord()をプロセス実行部分に組み入れたのですが、

kintone.events.on('app.record.detail.process.proceed', (event) => {

             if (event.status.value === '公開済み'){
              updateRecord();
           }
      return event;
  });

409(conflict)エラーとなり、alert(switchLang.revsionError);のアラートが表示され、且つ、確認済ユーザーが記録されません。

解決策が無いか思案しておりますが、良い方法はないでしょうか。

よろしくお願い致します。

このサンプルのままだと通知したいユーザーである三宅さん他二名に具体的にどのような方法にて通知するのか解らなかった為

こちらに対する回答ですが、 ステータスを「公開済み」に変更した際に「通知先ユーザー」に登録したユーザーに通知する 、ということでしたら、アプリ設定の「通知>レコードの条件通知」で下記を設定します。(プロセス設定はサンプルのまま特に変えていません)

  • 条件にステータスが「公開済み」を含むを設定
  • 通知先でフォームのフィールドを追加から「通知先ユーザー」を選択
  • 通知内容は任意のテキストを設定

 

以下のような通知が届きます。

 

アプリ内の通知

 

メール

 

※お知らせの一部が伝わるように、レコードタイトルに「タイトル」フィールドを設定しました。

※通知をメールで送る場合は下記リンクの設定が必要になります。
https://jp.cybozu.help/k/ja/id/04031.html#admin_feature_activation_20

以上になります。もし回答内容が的外れでしたら、条件や通知したいタイミングなどの詳細をお聞かせください。

川村様

ご指導ありがとうございました。

アプリ設定の「通知>レコードの条件通知」で通知案内ができるのですね。大変参考になりました、サンプルではどのようにしたら三宅さん他二名に対して案内ができるか不明でしたので通知方法にこのような手段もある事、勉強させていただきありがとうございました。

尚、アプリ設定の「通知」での設定では、通知を確認するだけで終わった場合、通知はやはり消えてしまうのですね。

開発者が求める確認を完了するまでしつこくアプリ名の右上にウィジットのように残るようにするためには、プロセスを絡めないとやはりダメでしょうか。

又、ご指導頂いた方法で運用には支障ありませんが、もし可能であれば勉強の為に「noteButton.jsの実行部分であるupdateRecord()をプロセス実行部分に組み入れた」方法にてのエラー原因が判明すれば教えて頂ければ助かります。

 

マルさん

単に通知すればよいだけでなく必ず確認してほしいようなものであれば、プロセス管理を使った方法は未処理一覧にも完了するまで表示されますし(プロセス管理で作業者を指定したときの機能)、良い手段だと思います。

プロセス管理で既読確認をするのであれば、下記のように各ユーザーごとの状況は確認できますし、「作業」という表現が気にならなければカスタマイズは不要かと思います。

 

一部のユーザーのみが確認している状態

 

全員が確認した状態

 

プロセス管理の設定は下記の通りです。

※通知(メール通知も含め)の設定は別途必要になります。

 

最後にカスタマイズのエラーの件ですが、ステータス保存前に処理完了を待たずにレコードを更新しているため、ステータスの更新処理とバッティングしていることが原因かと思われます。

また、updateRecord 関数は処理完了後に画面をリロードするように実装されていますが、この関数をそのまま使うと、app.record.detail.process.proceed  イベントでステータスの更新ができない可能性があるので、当イベント発生時に event.record の中身を更新して return event する実装が正攻法で良いかと思います。

以下サンプルです。

kintone.events.on('app.record.detail.process.proceed', (event) => {
  if (event.nextStatus.value === '確認完了') {
    const record = event.record;
    const notedUsers = record[common.notedUsers].value;
    notedUsers.push(kintone.getLoginUser());
    const counts = notedUsers.length;

    record[common.notedUsers].value = notedUsers;
    record[common.count].value = counts;
  }
  return event;
});

 

以上になります。参考になれば幸いです。

川村様

お忙しい中、アドバイス頂きましてありがとうございました。

プロセスを利用し確認を取る方法とアプリ設定の「通知>レコードの条件通知」にて確認を促す方法などを参考に運用と照らし合わせ利用させて頂きます。

又、エラーの原因とアドバイスをいただいたサンプルにてテストしたところ意図通りの結果も得ることができました。

ご丁寧な説明と共に重ねてお礼申し上げます。

ありがとうございました。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。