NotifyUtil - グローバル

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:17分
  • NotifyUtil スクリプトインクルードは、サーバーサイドスクリプトを使用して通知コールや SMS メッセージを操作するときに使用するユーティリティメソッドを提供します。

    このスクリプトインクルードを使用するには、通知 (com.snc.notify) プラグインを有効にする必要があります。

    NotifyUtil スクリプトインクルードを使用すると、次のことができます。

    • 指定されたソースレコードからすべての Notify 電話番号とそれに関連する Notify 情報を取得します。
    • 一意の Notify 電話番号のリストを取得します。
    • 指定されたソースレコードに対してアクティブな電話会議があるかどうかを確認します。
    • 指定された Notify ユーザーに関連付けられた SMS 対応の番号を取得します。
    • 指定された Notify 電話番号を検証します。

    NotifyUtil - NotifyUtil()

    NotifyUtil クラスのオブジェクトをインスタンス化します。

    表 : 1. パラメーター
    名前 タイプ 説明
    なし

    この例では、NotifyUtil オブジェクトをインスタンス化します。

    var notifyUtil = new NotifyUtil(); 
    notifyUtil.getTelephonyProviers();

    NotifyUtil - getListOfNotifyNumbersAndProviders(文字列 sourceTable, 文字列 sourceSysId, 文字列 notifyGroupSelectorSysId, ブーリアン filterSMSCapableNums)

    インシデントなどの指定されたソースレコードから、すべての Notify 電話番号とそれに関連する Notify 情報を返します。

    この情報を使用して、特定のソースレコードで通話を開始したり SMS メッセージを送信したりすることができます。返される情報は、Notify プロバイダーセレクターフレームワークの構成に基づいて決定されます。詳細については、「 通知」を参照してください。

    表 : 2. パラメーター
    名前 タイプ 説明
    filterSMSCapableNums ブーリアン オプション。SMS 対応の番号のみを返すかどうかを示すフラグ。
    有効な値:
    • true:SMS 対応の電話番号と情報のみを返します。
    • false:すべての Notify 電話番号と情報を返します。

    デフォルト値:false

    notifyGroupSelectorSysId 文字列 オプション。Notify 番号と情報を返す対象の Notify グループの sys_id。

    デフォルト:すべてのグループ

    sourceSysId 文字列 Notify 番号と情報を返す対象のソースレコードの sys_id。たとえば、これはインシデント [incident] テーブルのレコードの sys_id です。
    sourceTable 文字列 目的の Notify 番号と情報を含むソースレコードが入ったテーブルの名前。
    表 : 3. 返される内容
    タイプ 説明
    confProviders 利用可能な会議プロバイダーのリスト。

    データタイプ:アレイ

    数字 それぞれが単一の Notify 番号を記述するオブジェクトのリスト。

    データタイプ:アレイ

    "numbers": [{
      "defaultFlag": Boolean,
      "name": "String",
      "number": "String",
      "shortCode": Boolean,
      "sysId": "String
    }]
    numbers.defaultFlag 関連付けられた Notify 番号がデフォルトの番号かどうかを示すフラグ。
    可能な値:
    • true:デフォルトの番号
    • false:デフォルトの数ではない

    データタイプ:ブーリアン

    numbers.name 番号の名前またはラベル。

    データタイプ:文字列

    numbers.number Notify 番号。

    データタイプ:文字列

    numbers.shortCode 関連する Notify 番号が短縮コードかどうかを示すフラグ。
    可能な値:
    • true:短縮コード
    • false:短縮コードではない

    データタイプ:ブーリアン

    numbers.sysId Notify 番号の sys_id。

    データタイプ:文字列

    この例では、指定されたソースレコードから Notify 電話番号とそれに関連する Notify 情報を取得する方法を示します。

    function updateConferenceBridges(sourceTable, sourceId) {
    
      var notifyUtil = new global.NotifyUtil();
      var numbersAndProviders = notifyUtil.getListOfNotifyNumbersAndProviders(sourceTable, sourceId);
      var confBridges = [];
      if (numbersAndProviders.confProviders) {
        numbersAndProviders.confProviders.forEach(function(provider){
        confBridges.push(provider);
        });
      }
      if (numbersAndProviders.numbers) {
        numbersAndProviders.numbers.forEach(function(number){
          confBridges.push(number.name);
        });
      }
    } 

    NotifyUtil - getSMSNumberForUser(文字列 userGrOrId)

    指定された Notify ユーザーに関連付けられた SMS 対応の番号を返します。

    表 : 4. パラメーター
    名前 タイプ 説明
    userGROrId 文字列または GlideRecord - グローバル ユーザーレコードのSys_id

    テーブル:ユーザー [sys_user] テーブルまたは SMS 対応電話番号を返すユーザーの sys_user GlideRecord

    表 : 5. 戻り値
    タイプ 説明
    文字列 ユーザーの SMS 対応電話番号。指定されたユーザーが見つからない場合は、null を返します。

    この例では、関連する GlideRecord を使用して SMS 対応の電話番号を取得する方法を示します。

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var nUtil = new NotifyUtil();
      var toNumber = nUtil.getSMSNumberForUser(sourceRecord.assigned_to.getRefRecord());
      var message = 'Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to you.';
      if (fromNumber && nUtil.validateOutboundNotifyPhoneNumber(fromNumber) && toNumber && nUtil.validatePhoneNumber(toNumber)) {
        var notifySMS = new NotifySMS();
        notifySMS.sendToNumber(fromNumber, toNumber, message, sourceRecord);
      }
    }
    
    function getFromNumber() {
      var prop = gs.getProperty('custom_property_name', '');
      if (!prop){
        return getFallbackFromNumber();
      }
      return prop;
    } 
    
    function getFallbackFromNumber() {
      var notifyNumGr = new GlideRecord("notify_number");
      notifyNumGr.addActiveQuery();
      notifyNumGr.addQuery('has_sms_out', 'yes');
      notifyNumGr.query();
      if (notifyNumGr.next()) {
        return notifyNumGr.number + '';
      }
      return '';
    } 

    NotifyUtil - getUniquePhoneNumbersForUsersAndGroups(アレイ numbers, アレイ users, アレイ groups, 文字列 type ,ブーリアン getData)

    一意の Notify 電話番号のリストを返します。

    コール内でパラメーターを渡さない場合、Notify 電話番号 [notify_number] テーブル内のすべての Notify 番号に重複がないかどうかがチェックされ、返されるリストに使用可能な各電話番号が 1 回だけ表示されます。チェックするユーザーまたはグループのリストを指定するか、一連の番号または番号タイプ (SMS または音声) を指定することで、返される結果を絞り込むことができます。一意の番号とともに、それぞれの番号に関連するメタデータを返すように要求することもできます。パラメーターを使用しない場合は、null をプレースホルダーとして渡します。例:return nUtil.getUniquePhoneNumbersForUsersAndGroups(null, userIds, null, 'sms', false);

    表 : 6. パラメーター
    名前 タイプ 説明
    getData ブーリアン オプション。一意の電話番号のリストとともにメタデータを返すかどうかを示すフラグ。
    有効な値:
    • true:メタデータを返します。
    • false:メタデータを返しません。

    デフォルト値:false

    groups アレイ オプション。確認する sys_id グループのリスト。

    デフォルト:すべてのグループをチェックします。

    テーブル: Group [sys_user_group]

    番号 アレイ オプション。確認する特定の Notify 電話番号のリスト。

    デフォルト:すべての電話番号を確認します。

    type 文字列 オプション。確認する電話番号のタイプ。
    有効な値 (大文字と小文字を区別):
    • voice
    • sms

    デフォルト:すべての電話番号タイプを確認する

    users アレイ オプション。チェックする特定のユーザーの sys_id のリスト。

    デフォルト:すべてのユーザーをチェックする

    テーブル: ユーザー [sys_user]

    表 : 7. 戻り値
    名前 説明
    numbers 複数の一意の Notify 電話番号。

    データタイプ:アレイ

    result getData が true に設定されている場合にのみ返されます。一意の番号それぞれに関連付けられたメタデータです。
    データタイプ:オブジェクト
    "result": {
      "number": "String",
      "sysId": "String",
      "type": "String",
      "valid": Boolean
    }
    result.number 一意の Notify 電話番号。

    データタイプ:文字列

    result.sysId Notify 電話番号を含むレコードの sys_id。

    データタイプ:文字列

    テーブル:電話番号の通知 [notify_number]

    result.type 常にユーザーを示す「u」が含まれます。

    データタイプ:文字列

    result.valid Notify 電話番号が有効な E.164 フォーマットかどうかを示すフラグ。
    可能な値:
    • true:有効な E.164 フォーマット。
    • false:E.164 フォーマットでない。

    データタイプ:ブーリアン

    この例では、SMS 機能を備えた一意の Notify 電話番号のセットを要求する方法を示します。

    var fromNumber = getFromNumber();
    var toNumbers = getRecipientNumbers();
    var message = 'This is an example SMS';
    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var notifySMS = new NotifySMS();
      notifySMS.sendToNumber(fromNumber, toNumbers, message, sourceRecord);
    }
    
    function getRecipientNumbers() {
      var userGr = new GlideRecord('sys_user');
      userGr.addActiveQuery();
      userGr.addQuery('first_name', 'STARTSWITH', 'A');
      userGr.setLimit(5);
      userGr.query(); 
      var userIds = [];
      while (userGr.next()) {
        userIds.push(userGr.getUniqueValue());
      }
      if (userIds.length > 0) {
        var nUtil = new NotifyUtil();
        return nUtil.getUniquePhoneNumbersForUsersAndGroups(null, userIds, null, 'sms', false);
      } 
    }
    
    function getFromNumber() {
      var prop = gs.getProperty('custom_property_name', '');
      if (!prop){
        return getFallbackFromNumber();
      } 
      return prop; 
    }
    
    function getFallbackFromNumber() {
      var notifyNumGr = new GlideRecord("notify_number");
      notifyNumGr.addActiveQuery();
      notifyNumGr.addQuery('has_sms_out', 'yes');
      notifyNumGr.query();
      if (notifyNumGr.next()) {
        return notifyNumGr.number + '';
      }
      return '';
    }

    NotifyUtil - hasActiveConferenceCalls(文字列 sourceRecSysId)

    指定されたソースレコードに対してアクティブな電話会議があるかどうかを確認します。

    表 : 8. パラメーター
    名前 タイプ 説明
    sourceRecSysId 文字列 アクティブな電話会議があるかどうかを確認するレコードの sys_id。たとえば、これはインシデントテーブルのレコードの sys_id です。
    表 : 9. 返される内容
    タイプ 説明
    ブーリアン 指定されたレコードにアクティブな電話会議が関連付けられているかどうかを示すフラグ。
    可能な値:
    • true:指定されたレコードに対してアクティブな電話会議が利用可能。
    • false:アクティブな電話会議なし。

    この例では、インシデントレコードに関連付けられたアクティブなカンファレンスがある場合に情報メッセージを表示します。

    (function executeRule(current, previous /*null when async*/) {
      var nUtil = new NotifyUtil();
      if (nUtil.hasActiveConferenceCalls(current.getUniqueValue())) {
        gs.addInfoMessage("There are active conference calls related to this Incident.");
      } 
    })(current, previous);

    NotifyUtil - validateOutboundNotifyPhoneNumber(文字列 number)

    指定された Notify 電話番号を検証します。

    このメソッドは、次の 3 つのタイプの検証を実行します。
    1. Notify 番号が Notify 電話番号 [notify_number] テーブルに存在するかどうか。
    2. Notify 番号に Notify グループが関連付けられているかどうか。
    3. Notify 番号がアクティブかどうか。
    これらの検証のいずれかが失敗した場合、メソッドは例外をスローします。
    表 : 10. パラメーター
    名前 タイプ 説明
    number 文字列 検証する Notify 番号。
    表 : 11. 返される内容
    タイプ 説明
    なし

    この例は、Notify 番号を検証する方法を示しています。

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var nUtil = new NotifyUtil();
      var toNumber = nUtil.getSMSNumberForUser(sourceRecord.assigned_to.getRefRecord());
      var message = 'Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to you.';
      if (fromNumber && nUtil.validateOutboundNotifyPhoneNumber(fromNumber) && toNumber && nUtil.validatePhoneNumber(toNumber)) {
        var notifySMS = new NotifySMS();
        notifySMS.sendToNumber(fromNumber, toNumber, message, sourceRecord);
      }
    }
    
    function getFromNumber() {
      var prop = gs.getProperty('custom_property_name', '');
      if (!prop){
        return getFallbackFromNumber();
      }
      return prop;
    } 
    
    function getFallbackFromNumber() {
      var notifyNumGr = new GlideRecord("notify_number");
      notifyNumGr.addActiveQuery();
      notifyNumGr.addQuery('has_sms_out', 'yes');
      notifyNumGr.query();
      if (notifyNumGr.next()) {
        return notifyNumGr.number + '';
      }
      return '';
    } 

    NotifyUtil - validatePhoneNumber(文字列 number)

    指定された番号が有効な E.164 電話番号であることを検証します。

    表 : 12. パラメーター
    名前 タイプ 説明
    number 文字列 検証する電話番号。
    表 : 13. 返される内容
    タイプ 説明
    ブーリアン 指定された番号が有効な電話番号であることを示すフラグ。
    可能な値:
    • true:有効な E.164 電話番号。
    • false:無効な電話番号。

    この例は、電話番号を検証する方法を示しています。

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var nUtil = new NotifyUtil();
      var toNumber = nUtil.getSMSNumberForUser(sourceRecord.assigned_to.getRefRecord());
      var message = 'Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to you.';
      if (fromNumber && nUtil.validateOutboundNotifyPhoneNumber(fromNumber) && toNumber && nUtil.validatePhoneNumber(toNumber)) {
        var notifySMS = new NotifySMS();
        notifySMS.sendToNumber(fromNumber, toNumber, message, sourceRecord);
      }
    }
    
    function getFromNumber() {
      var prop = gs.getProperty('custom_property_name', '');
      if (!prop){
        return getFallbackFromNumber();
      }
      return prop;
    } 
    
    function getFallbackFromNumber() {
      var notifyNumGr = new GlideRecord("notify_number");
      notifyNumGr.addActiveQuery();
      notifyNumGr.addQuery('has_sms_out', 'yes');
      notifyNumGr.query();
      if (notifyNumGr.next()) {
        return notifyNumGr.number + '';
      }
      return '';
    }