PreferenceDestination - スコープ指定、グローバル

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む10読むのに数分
  • PreferenceDestination API は、ユーザーの通知設定を更新します。

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

    ユーザーは自分の通知設定を更新でき、管理者は任意のユーザーの通知設定を更新できます。ユーザー通知設定は、どの宛先がどの通知を受信するかを制御します。

    この API は Preferences 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. パラメーター
    名前 タイプ 説明
    notification 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. パラメーター
    名前 タイプ 説明
    notification 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 通知, ブーリアン active)

    宛先で通知を受信するかどうかのユーザー初期設定を設定します。

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

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

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

    有効な値:
    • 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.'); 
    }