NotifyUtil - グローバル

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

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

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

    • 指定されたソースレコードからすべての通知電話番号と関連する通知情報を取得します。
    • 一意の通知電話番号のリストを取得します。
    • 指定されたソースレコードに対してアクティブなカンファレンスコールがあるかどうかを判断します。
    • 指定された通知ユーザーに関連付けられた SMS 対応番号を取得します。
    • 指定された通知電話番号を検証します。

    NotifyUtil - NotifyUtil()

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

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

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

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

    NotifyUtil - getListOfNotifyNumbersAndProviders(文字列 sourceTable, 文字列 sourceSysId, 文字列 notifyGroupSelectorSysId, ブール値 filterSMSCapableNums)

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

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

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

    デフォルト値:false

    notifyGroupSelectorSysId 文字列 オプション。通知番号と情報を返す通知グループのSys_id。

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

    sourceSysId 文字列 通知番号と情報を返すソースレコードのSys_id。たとえば、これはインシデント [incident] テーブルのレコードのsys_idである可能性があります。
    sourceTable 文字列 目的の通知番号と情報を含むソースレコードが含まれているテーブルの名前。
    表 : 3. 戻り値
    タイプ 説明
    confProvider 利用可能な会議プロバイダーのリスト。

    データタイプ:アレイ

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

    データタイプ:アレイ

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

    データタイプ:ブール

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

    データタイプ:文字列

    numbers.number 番号に通知します。

    データタイプ:文字列

    numbers.shortCode 関連付けられた通知番号が短縮コードかどうかを示すフラグ。
    可能な値:
    • true:短縮コード
    • false:短縮コードではありません

    データタイプ:ブール

    numbers.sysId 通知番号のSys_id。

    データタイプ:文字列

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

    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)

    指定された通知ユーザーに関連付けられている SMS 対応番号を返します。

    表 : 4. パラメーター
    名前 タイプ 説明
    userGROrId String または 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(Array numbers, Array users, Array groups, String type, Boolean getData)

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

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

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

    デフォルト値:false

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

    デフォルト:すべてのグループをオンにします。

    テーブル: Group [sys_user_group]

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

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

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

    デフォルト:すべての電話番号タイプをオンにします

    ユーザー アレイ オプション。確認する特定のユーザーのsys_idsのリスト。

    デフォルト:すべてのユーザーをオンにします

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

    表 : 7. 戻り値
    名前 説明
    番号 一意の通知電話番号。

    データタイプ:アレイ

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

    データタイプ:文字列

    result.sysId 通知電話番号を含むレコードのSys_id。

    データタイプ:文字列

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

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

    データタイプ:文字列

    result.valid 通知電話番号が有効な E.164 形式であるかどうかを示すフラグ。
    可能な値:
    • true:有効な E.164 形式。
    • false:E.164 形式ではありません。

    データタイプ:ブール

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

    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(文字列数値)

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

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

    この例では、通知番号を検証する方法を示します。

    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. パラメーター
    名前 タイプ 説明
    番号 文字列 検証する電話番号。
    表 : 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 '';
    }