NotifySMS - グローバル

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:22分
  • NotifySMS スクリプトインクルードは、電話番号または電話番号情報を含むフィールドを持つ GlideRecord を使用して、通知電話番号からデバイスにショートメッセージサービス (SMS) メッセージを送信できるようにするメソッドを提供します。

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

    NotifySMS - NotifySMS()

    NotifySMS オブジェクトのインスタンスを作成します。

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

    この例では、NotifySMS オブジェクトをインスタンス化する方法を示します。

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var groupId = sourceRecord.assignment_group + '';
      var toGr = getRecipientGRs(groupId);
      var message = 'An Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to your group';
      if (fromNumber && toGr) {
        var notifySMS = new NotifySMS();
        notifySMS.sendToUsers(fromNumber, toGr, message, sourceRecord);
      } 
    }

    NotifySMS - sendBulkSMS(文字列 fromNumber, 配列 toNumber, 文字列 message, GlideRecord sourceRecord)

    指定された通知電話番号から電話番号のリストにショートメッセージサービス (SMS) メッセージを送信する非同期フローアクションをトリガーします。

    表 : 2. パラメーター
    名前 タイプ 説明
    fromNumber 文字列 SMS メッセージを送信する電話番号を通知します。
    toNumber アレイ SMS メッセージを受信する電話番号のリスト。
    メッセージ 文字列 送信するメッセージ。
    sourceRecord GlideRecord オプション。Notify メッセージ [notify_message] テーブル内の関連付けられた SMS メッセージレコードの [Source] フィールドに保存するインシデントの GlideRecord。これにより、SMS メッセージが生成される原因となったインシデントレコードがその SMS メッセージにリンクされます。

    デフォルト:なし。このパラメーターが渡されない場合、この情報は追跡されません。

    表 : 3. 返される内容
    タイプ Description (説明)
    ScriptableFlowRunnerResult ScriptableFlowRunnerResult - スコープ指定 オブジェクト。

    次のコード例は、このメソッドを使用して一括 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.sendBulkSMS(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 '';
    }

    NotifySMS - sendToNumber(文字列 fromNumber, 文字列 toNumber, 文字列 message, オブジェクト sourceRecord)

    指定された Notify 電話番号から指定された電話番号に、ショートメッセージサービス (SMS) のメッセージを送信します。

    さらに、必要に応じて、SMS メッセージが生成される原因となったインシデントレコードを SMS メッセージに関連付けることもできます。

    表 : 4. パラメーター
    名前 タイプ 説明
    fromNumber 文字列 SMS メッセージを送信する電話番号を通知します。
    message 文字列 送信するメッセージ。
    sourceRecord GlideRecord - グローバル オプション。Notify メッセージ [notify_message] テーブル内の関連付けられた SMS メッセージレコードの [Source] フィールドに保存するインシデントの GlideRecord。これにより、SMS メッセージが生成される原因となったインシデントレコードがその SMS メッセージにリンクされます。

    デフォルト:なし。このパラメーターが渡されない場合、この情報は追跡されません。

    toNumber 文字列 SMS メッセージを受信するデバイスの電話番号。
    表 : 5. 返される内容
    タイプ 説明
    なし

    次の例は、指定された電話番号に SMS メッセージを送信し、関連するインシデントレコードにメッセージ情報をスタンプする方法を示しています。

    var fromNumber = getFromNumber();  
    var toNumber = '+123456789';  
    var message = 'This is an example SMS';  
    var sourceRecord = new GlideRecord('incident');  
    sourceRecord.query();  
    if (sourceRecord.next()) { 
      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 ''; 
    } 

    NotifySMS - sendToNumbers(文字列 fromNumber, アレイ toNumber, 文字列 message, オブジェクト sourceRecord)

    指定された Notify 電話番号から電話番号のリストに、ショートメッセージサービス (SMS) のメッセージを送信します。

    さらに、必要に応じて、SMS メッセージが生成される原因となったインシデントレコードを SMS メッセージに関連付けることもできます。

    注:
    内部的には、このメソッドは NotifySMS - sendBulkSMS(文字列 fromNumber, 配列 toNumber, 文字列 message, GlideRecord sourceRecord) メソッドを使用して非同期フローアクションをトリガーします。
    表 : 6. パラメーター
    名前 タイプ 説明
    fromNumber 文字列 SMS メッセージを送信する電話番号を通知します。
    message 文字列 送信するメッセージ。
    sourceRecord GlideRecord - グローバル オプション。Notify メッセージ [notify_message] テーブル内の関連付けられた SMS メッセージレコードの [Source] フィールドに保存するインシデントの GlideRecord。これにより、SMS メッセージが生成される原因となったインシデントレコードがその SMS メッセージにリンクされます。

    デフォルト:なし。このパラメーターが渡されない場合、この情報は追跡されません。

    toNumber アレイ SMS メッセージを受信する電話番号のリスト。
    表 : 7. 返される内容
    タイプ 説明
    なし

    次の例は、複数の電話番号に 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.sendToNumbers(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 '';
    } 

    NotifySMS - sendToUser(文字列 fromNumber, オブジェクト toGr, 文字列 message, オブジェクト sourceRecord)

    指定された電話番号から、指定された GlideRecord で識別されたユーザーに、ショートメッセージサービス (SMS) のメッセージを送信します。

    このメソッドは、指定された GlideRecord から電話番号を抽出します。さらに、必要に応じて、SMS メッセージが生成される原因となったインシデントレコードを SMS メッセージに関連付けることもできます。

    表 : 8. パラメーター
    名前 タイプ 説明
    fromNumber 文字列 SMS メッセージを送信する電話番号を通知します。
    message 文字列 送信するメッセージ。
    sourceRecord GlideRecord - グローバル オプション。Notify メッセージ [notify_message] テーブル内の関連付けられた SMS メッセージレコードの [Source] フィールドに保存するインシデントの GlideRecord。これにより、SMS メッセージが生成される原因となったインシデントレコードがその SMS メッセージにリンクされます。

    デフォルト:なし。このパラメーターが渡されない場合、この情報は追跡されません。

    toGr GlideRecord - グローバル ユーザーの電話番号に解決されるフィールドを含むレコードタイプの GlideRecord。このレコードタイプは、現在実装されている電話番号リゾルバーで使用されているレコードタイプと関連付ける必要があります。電話番号リゾルバーは、ユーザーレコードやケースレコードなどの特定のタイプの GlideRecord からユーザーの電話番号を取得するメソッドにすぎません。デフォルトのリゾルバーを使用する場合、レコードはユーザー [sys_user] テーブルに対応します。

    リゾルバーが電話番号を取得するために使用するレコードのタイプを変更するには、NotifySMS - setRecordToNumberResolver(オブジェクト scriptIncludeInstance, 文字列 methodName) メソッドを使用します。

    表 : 9. 返される内容
    タイプ 説明
    なし

    次の例は、関連するインシデントレコード内で識別されたユーザーに SMS メッセージを送信し、関連するインシデントレコードにメッセージ情報をスタンプする方法を示しています。

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var toGr = sourceRecord.assigned_to.getRefRecord();
      var message = 'An Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to you'; 
      if (fromNumber && toGr.isValidRecord()) { 
        var notifySMS = new NotifySMS();
        notifySMS.sendToUser(fromNumber, toGr, 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 ''; 
    } 

    NotifySMS - sendToUsers(文字列 fromNumber, オブジェクト toGr, 文字列 message, オブジェクト sourceRecord)

    指定された Notify 電話番号から、指定された GlideRecord で見つかったユーザーに、ショートメッセージサービス (SMS) のメッセージを送信します。

    このメソッドは、渡された GlideRecord から発信先の電話番号を抽出します。さらに、必要に応じて、SMS メッセージが生成される原因となったインシデントレコードを SMS メッセージに関連付けることもできます。

    注:
    内部的には、このメソッドは NotifySMS - sendBulkSMS(文字列 fromNumber, 配列 toNumber, 文字列 message, GlideRecord sourceRecord) メソッドを使用して非同期フローアクションをトリガーします。
    表 : 10. パラメーター
    名前 タイプ 説明
    fromNumber 文字列 SMS メッセージを送信する電話番号を通知します。
    message 文字列 送信するメッセージ。
    sourceRecord GlideRecord - グローバル オプション。Notify メッセージ [notify_message] テーブル内の関連付けられた SMS メッセージレコードの [Source] フィールドに保存するインシデントの GlideRecord。これにより、SMS メッセージが生成される原因となったインシデントレコードがその SMS メッセージにリンクされます。

    デフォルト:なし。このパラメーターが渡されない場合、この情報は追跡されません。

    toGr GlideRecord - グローバル ユーザーの電話番号に解決されるフィールドを含むレコードタイプの GlideRecord。このレコードタイプは、現在実装されている電話番号リゾルバーで使用されているレコードタイプと関連付ける必要があります。電話番号リゾルバーは、ユーザーレコードやケースレコードなどの特定のタイプの GlideRecord からユーザーの電話番号を取得するメソッドにすぎません。デフォルトのリゾルバーを使用する場合、レコードはユーザー [sys_user] テーブルに対応します。

    リゾルバーが電話番号を取得するために使用するレコードのタイプを変更するには、NotifySMS - setRecordToNumberResolver(オブジェクト scriptIncludeInstance, 文字列 methodName) メソッドを使用します。

    表 : 11. 返される内容
    タイプ 説明
    なし

    この例では、指定されたインシデントレコード内のユーザーに SMS メッセージを送信する方法を示します。

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var groupId = sourceRecord.assignment_group + '';
      var toGr = getRecipientGRs(groupId);
      var message = 'An Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to your group';
      if (fromNumber && toGr) {
        var notifySMS = new NotifySMS();
        notifySMS.sendToUsers(fromNumber, toGr, 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 ''; 
    }
    
    function getRecipientGRs(groupId) {
      if (!groupId)
        return;
      var userMemberGr = new GlideRecord('sys_user_grmember');
      userMemberGr.addQuery('group', groupId);
      userMemberGr.query();
      var userIds = [];
      while (userMemberGr.next()) {
        userIds.push(userMemberGr.user + ''); 
      }
      var userGr = new GlideRecord('sys_user');
      userGr.addActiveQuery();
      userGr.addQuery('sys_id', 'IN', userIds.join(','));
      userGr.query();
      return userGr; 
    } 

    NotifySMS - setRecordToNumberResolver(オブジェクト scriptIncludeInstance, 文字列 methodName)

    NotifySMS.sendToUser() および NotifySMS.sendToUsers() メソッドで渡される GlideRecord 内のターゲット電話番号を取得するために使用する、スクリプトインクルード内のメソッドを設定します。

    デフォルトでは、NotifyUtil.getSMSNumberForUser() メソッドを使用して、ユーザー [sys_user] ベースの GlideRecord から電話番号を取得します。ケースレコードなどの別のレコードタイプからこの情報を取得するためのカスタムメソッドを作成する必要がある場合は、setRecordToNumberResolver() メソッドを使用します。

    表 : 12. パラメーター
    名前 タイプ 説明
    methodName 文字列 GlideRecord 内のターゲット電話番号を取得するために使用するメソッドの名前。
    scriptIncludeInstance オブジェクト 指定された番号のリゾルバーメソッドを含むスクリプトインクルードのインスタンス。
    表 : 13. 返される内容
    タイプ 説明
    なし

    この例は、csmUtils スクリプトインクルード内の getSMSNumberForConsumer() メソッドに電話番号リゾルバーを設定する方法を示しています。

    // Script include that contains the logic to retrieve a phone number for a consumer.
    var csmUtils = new global.CSMExampleUtils();
     
    // Example Case record used as source for sending SMS
    var caseGr = new GlideRecord('sn_customerservice_case');
    caseGr.get('3af265b3d1cb5010f877cb055160faxx'); // Case sys_id
     
    var notifySms = new global.NotifySMS();
     
    // Use the getSMSNumberForConsumer method of the csmUtils script include (CSMExampleUtils) to obtain the phone number of the consumer.
    notifySms.setRecordToNumberResolver(csmUtils, 'getSMSNumberForConsumer');
     
    // Send an SMS message to a user whose telephone number is in the specified Case GlideRecord.
    var smsText = 'This is a test message for ' + caseGr.getValue('number');
    notifySms.sendToUser('+1xxxxxxxxxx', caseGr.getValue('consumer'), smsText, caseGr); // First param is the Notify phone number

    この例は、電話リゾルバーメソッド getSMSNumberForConsumer() に必要なコードを示しています。

    getSMSNumberForConsumer: function(consumerGrOrId) {
      if (!consumerGrOrId)
        return;
     
      var consumerId, consumerGr;
      if (typeof consumerGrOrId === "string")
        consumerId = consumerGrOrId;
      if (typeof consumerGrOrId === "object" && consumerGrOrId["isValidRecord"]) {
        consumerGr = consumerGrOrId;
        consumerId = consumerGr.getUniqueValue();
      }
              
      if (!consumerId)
        return;
              
      if (!consumerGr) {
        consumerGr = new GlideRecord('csm_consumer');
        consumerGr.get(consumerId);
      }
              
      if (consumerGr.isValidRecord()) {
        return consumerGr.getValue('mobile_phone');
      }
    }