PreferenceDestination:スコープ対象、グローバル

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:10分
  • PreferenceDestination API は、ユーザー通知設定を更新します。

    通知先とは、特定のメールアドレスや電話番号など、通知を配信できる場所です。この API は、通知 [sys_notification] テーブルからの通知に基づいています。通知は、メールや ワークスペースなどのチャネルを介して送信されます。チャネルを使用して、複数のタイプの宛先に通知を送信できます。たとえば、メールチャネルは、個人用メールと仕事用メールの両方の宛先に通知を送信できます。宛先タイプは、通知宛先タイプ [sys_notif_destination_type] テーブルに一覧表示されます。

    ユーザーは自分の通知設定を更新でき、アドミニストレーターは任意のユーザーの通知設定を更新できます。ユーザー通知設定は、どの宛先がどの通知を受信するかを制御します。

    この API を 設定 API とともに使用します。このクラスのメソッドを呼び出す前に、 Preferences.getDestinations() メソッドまたは Preferences.getDestinationsByChannel() メソッドを呼び出して PreferenceDestination オブジェクトをインスタンス化する必要があります。

    このクラスは、 sn_notification 名前空間識別子を使用します。

    PreferenceDestination:getChannel()

    宛先に通知を送信するために使用されるチャネルを返します。

    表 : 1. パラメーター
    名前 タイプ 説明
    なし
    表 : 2. 戻り値
    タイプ 説明
    GlideRecord 宛先に通知を送信するために使用されるチャネルの通知チャネル [sys_notification_channel] テーブルからの GlideRecord。

    この例では、Abel Tuter の各宛先への通知を送信するために使用されるチャネルを出力します。

    var recipient = new GlideRecord('sys_user');
    recipient.get('last_name', 'Tuter');
    var prefs = new sn_notification.Preferences(recipient);
    var dests = prefs.getDestinations();
    for (var i=0; i<dests.length; i++) {
         gs.print('Channel for destination '+(i+1)+' is '+dests[i].getChannel().name); 
    }

    出力:

    Channel for destination 1 is Workspace

    PreferenceDestination:getDeliverTo()

    宛先の識別子を返します。

    表 : 3. パラメーター
    名前 タイプ 説明
    なし
    表 : 4. 戻り値
    タイプ 説明
    文字列 宛先の識別子。たとえば、メールアドレス、プッシュアプリケーションインストールトークン、sys_idなどです。

    この例では、Abel Tuter の各宛先の識別子を出力します。出力は、Abel の ワークスペース 先の識別子がユーザー sys_idであることを示しています。

    var recipient = new GlideRecord('sys_user');
    recipient.get('last_name', 'Tuter');
    var prefs = new sn_notification.Preferences(recipient);
    var dests = prefs.getDestinations();
    for (var i=0; i<dests.length; i++) {
         gs.print('The identifier for '+recipient.first_name+'\'s '+dests[i].getDestinationType().name+' destination is '+dests[i].getDeliverTo());
    }

    出力:

    The identifier for Abel's Workspace destination is 62826bf03710200044e0bfc8bcbe5df1

    PreferenceDestination:getDestinationType()

    宛先のタイプ (個人用メールや仕事用メールなど) を返します。

    表 : 5. パラメーター
    名前 タイプ 説明
    なし
    表 : 6. 戻り値
    タイプ 説明
    GlideRecord 宛先タイプの通知宛先タイプ [sys_notif_destination_type] テーブルからの GlideRecord。

    この例では、Abel Tuter の各宛先の識別子を出力します。出力は、Abel の ワークスペース 先の識別子がユーザー sys_idであることを示しています。

    var recipient = new GlideRecord('sys_user');
    recipient.get('last_name', 'Tuter');
    var prefs = new sn_notification.Preferences(recipient);
    var dests = prefs.getDestinations();
    for (var i=0; i<dests.length; i++) {
         gs.print('The identifier for '+recipient.first_name+'\'s '+dests[i].getDestinationType().name+' destination is '+dests[i].getDeliverTo());
    }

    出力:

    The identifier for Abel's Workspace destination is 62826bf03710200044e0bfc8bcbe5df1

    PreferenceDestination:isActive(GlideRecord 通知)

    宛先に通知を受信する権限があるかどうかを確認します。

    表 : 7. パラメーター
    名前 タイプ 説明
    通知 GlideRecord オプション。宛先にその通知を受信する権限があるかどうかを確認する通知。通知が存在しない場合、または宛先のユーザーが通知を読み取ることができない場合は、例外がスローされます。通知が指定されていない場合、このメソッドは、宛先に通知を受信する権限があるかどうかを確認します。
    表 : 8. 戻り値
    タイプ 説明
    ブール 宛先に通知を受信する権限があるかどうかを示すフラグ。
    可能な値:
    • true:宛先には通知を受信する権限があります。
    • false:宛先には通知を受信する権限がありません。

    この例では、Abel Tuter の各宛先に承認要求通知を受信する権限があるかどうかを確認します。

    var recipient = new GlideRecord('sys_user');
    recipient.get('last_name', 'Tuter');
    var prefs = new sn_notification.Preferences(recipient);
    var dests = prefs.getDestinations();
    var notif = new GlideRecord('sys_notification'); 
    notif.get('name', 'Approval Request'); 
    for (var i=0; i<dests.length; i++) {
       var active = dests[i].isActive(notif) ? 'active' : 'inactive'; 
       gs.print(dests[i].getDestinationType().name + ' ' + dests[i].getDeliverTo() + ' is ' + active + ' for this notification');
    }

    出力:

    Workspace 62826bf03710200044e0bfc8bcbe5df1 is active for this notification

    PreferenceDestination:isOverriden(GlideRecord 通知)

    通知が宛先に対するユーザーの設定を上書きするかどうかを確認します。

    表 : 9. パラメーター
    名前 タイプ 説明
    通知 GlideRecord 宛先のユーザー設定を上書きするかどうかを確認する通知を指定します。通知は、通知 [sys_notification] テーブルの GlideRecord である必要があります。
    表 : 10. 戻り値
    タイプ 説明
    ブール

    通知が宛先のユーザー設定を上書きするかどうかを示すフラグ。

    有効な値:
    • true:この通知では、宛先のユーザー設定は無視されます。
    • false:宛先は、ユーザー設定に従って通知を受信するかどうかを受信しません。

    この例では、承認要求通知が Abel Tuter の宛先の 1 つのユーザー設定を上書きするかどうかを確認します。通知がユーザー設定より優先されない場合、宛先には通知を受信する権限が与えられます。それ以外の場合は、通知が設定を上書きするため、設定は設定されません。

    var recipient = new GlideRecord('sys_user');
    recipient.get('last_name', 'Tuter');
    var prefs = new sn_notification.Preferences(recipient);
    var dests = prefs.getDestinations();
    var notif = new GlideRecord('sys_notification'); 
    notif.get('name', 'Approval Request'); 
    var firstDest = dests[0]; 
    if (!firstDest.isOverridden(notif)) { 
         dests[0].setActive(notif, true); 
    } else { 
         gs.print('This notification overrides user preference, so don't bother to set a preference.'); 
    } 

    PreferenceDestination - setActive(GlideRecord notification, ブールアクティブ)

    通知を受信するまたは受信しない宛先のユーザー設定を設定します。

    isOverriden() メソッドを最初に呼び出して、ユーザー設定が無視されるかどうかを確認することもできますが、必須ではありません。

    表 : 11. パラメーター
    名前 タイプ 説明
    通知 GlideRecord オプション。通知が指定されている場合、その通知を受信するかどうかを宛先に設定します。通知は、通知 [sys_notification] テーブルの GlideRecord である必要があります。通知を指定しない場合、すべての通知を受信するかどうかを宛先に設定します。
    アクティブ ブール

    宛先に通知を受信する権限があるかどうかを示すフラグ。

    有効な値:
    • true:宛先には通知を受信する権限があります。
    • false:宛先には通知を受信する権限がありません。
    表 : 12. 戻り値
    タイプ 説明
    なし

    この例では、承認要求通知が Abel Tuter の宛先の 1 つのユーザー設定を上書きするかどうかを確認します。通知がユーザー設定より優先されない場合、宛先には通知を受信する権限が与えられます。それ以外の場合は、通知が設定を上書きするため、設定は設定されません。

    var recipient = new GlideRecord('sys_user');
    recipient.get('last_name', 'Tuter');
    var prefs = new sn_notification.Preferences(recipient);
    var dests = prefs.getDestinations();
    var notif = new GlideRecord('sys_notification'); 
    notif.get('name', 'Approval Request'); 
    var firstDest = dests[0]; 
    if (!firstDest.isOverridden(notif)) { 
         dests[0].setActive(notif, true); 
    } else { 
         gs.print('This notification overrides user preference, so don't bother to set a preference.'); 
    }