NotifyUtil - グローバル
NotifyUtil API は、サーバー側スクリプトを使用して Notify コールと SMS メッセージを操作するときに使用するユーティリティメソッドを提供します。
この API を使用するには、Notify [com.snc.notify] プラグインをアクティブ化する必要があります。
NotifyUtil API を使用すると、次のことが可能になります。
- 指定されたソースレコードからすべての Notify 電話番号とそれに関連する Notify 情報を取得します。
- 一意の Notify 電話番号のリストを取得します。
- 指定されたソースレコードに対してアクティブな電話会議があるかどうかを確認します。
- 指定された Notify ユーザーに関連付けられた SMS 対応の番号を取得します。
- 指定された Notify 電話番号を検証します。
NotifyUtil - NotifyUtil()
NotifyUtil クラスのオブジェクトをインスタンス化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
この例では、NotifyUtil オブジェクトをインスタンス化します。
var notifyUtil = new NotifyUtil();
notifyUtil.getTelephonyProviers();
NotifyUtil - getListOfNotifyNumbersAndProviders(文字列 sourceTable, 文字列 sourceSysId, 文字列 notifyGroupSelectorSysId, ブーリアン filterSMSCapableNums)
インシデントなどの指定されたソースレコードから、すべての Notify 電話番号とそれに関連する Notify 情報を返します。
この情報を使用して、特定のソースレコードで通話を開始したり SMS メッセージを送信したりすることができます。返される情報は、Notify プロバイダーセレクターフレームワークの構成に基づいて決定されます。詳細については、「 Notify」を参照してください。
| 名前 | タイプ | 説明 |
|---|---|---|
| filterSMSCapableNums | ブーリアン | オプション。SMS 対応の番号のみを返すかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| notifyGroupSelectorSysId | 文字列 | オプション。Notify 番号と情報を返す対象の Notify グループの sys_id。 デフォルト:すべてのグループ |
| sourceSysId | 文字列 | Notify 番号と情報を返す対象のソースレコードの sys_id。たとえば、これはインシデント [incident] テーブルのレコードの sys_id です。 |
| sourceTable | 文字列 | 目的の Notify 番号と情報を含むソースレコードが入ったテーブルの名前。 |
| タイプ | 説明 |
|---|---|
| confProviders | 利用可能な会議プロバイダーのリスト。 データタイプ:アレイ |
| 数字 | それぞれが単一の Notify 番号を記述するオブジェクトのリスト。 データタイプ:アレイ |
| numbers.defaultFlag | 関連付けられた Notify 番号がデフォルトの番号かどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| numbers.name | 番号の名前またはラベル。 データタイプ:文字列 |
| numbers.number | Notify 番号。 データタイプ:文字列 |
| numbers.shortCode | 関連する Notify 番号が短縮コードかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| 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 対応の番号を返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| userGROrId | 文字列または GlideRecord - グローバル | ユーザー [sys_user] テーブルにあるユーザーレコードの sys_id、または SMS 対応の電話番号を返すユーザーの sys_user GlideRecord。 |
| タイプ | 説明 |
|---|---|
| 文字列 | ユーザーの 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);
| 名前 | タイプ | 説明 |
|---|---|---|
| getData | ブーリアン | オプション。一意の電話番号のリストとともにメタデータを返すかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| groups | アレイ | オプション。確認する sys_id グループのリスト。グループ [sys_user_group] テーブルにあります。 デフォルト:すべてのグループをチェックします。 |
| numbers | アレイ | オプション。確認する特定の Notify 電話番号のリスト。 デフォルト:すべての電話番号を確認します。 |
| type | 文字列 | オプション。確認する電話番号のタイプ。 有効な値 (大文字と小文字を区別):
デフォルト:すべての電話番号タイプを確認する |
| users | アレイ | オプション。チェックする特定のユーザーの sys_id のリスト。ユーザー [sys_user] テーブルにあります。 デフォルト:すべてのユーザーをチェックする |
| 名前 | 説明 |
|---|---|
| numbers | 複数の一意の Notify 電話番号。 データタイプ:アレイ |
| result | getData が true に設定されている場合にのみ返されます。一意の番号それぞれに関連付けられたメタデータです。 データタイプ:オブジェクト |
| result.number | 一意の Notify 電話番号。 データタイプ:文字列 |
| result.sysId | Notify 電話番号を含むレコードの sys_id。Notify 電話番号 [notify_number] テーブルにあります。 データタイプ:文字列 |
| result.type | 常にユーザーを示す「u」が含まれます。 データタイプ:文字列 |
| result.valid | Notify 電話番号が有効な 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)
指定されたソースレコードに対してアクティブな電話会議があるかどうかを確認します。
| 名前 | タイプ | 説明 |
|---|---|---|
| sourceRecSysId | 文字列 | アクティブな電話会議があるかどうかを確認するレコードの sys_id。たとえば、これはインシデントテーブルのレコードの sys_id です。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 指定されたレコードにアクティブな電話会議が関連付けられているかどうかを示すフラグ。 可能な値:
|
この例では、インシデントレコードに関連付けられたアクティブな電話会議がある場合に情報メッセージを表示します。
(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 電話番号を検証します。
- Notify 番号が Notify 電話番号 [notify_number] テーブルに存在するかどうか。
- Notify 番号に Notify グループが関連付けられているかどうか。
- Notify 番号がアクティブかどうか。
| 名前 | タイプ | 説明 |
|---|---|---|
| number | 文字列 | 検証する Notify 番号。 |
| タイプ | 説明 |
|---|---|
| なし |
この例は、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 電話番号であることを検証します。
| 名前 | タイプ | 説明 |
|---|---|---|
| number | 文字列 | 検証する電話番号。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 指定された番号が有効な電話番号であることを示すフラグ。 可能な値:
|
この例は、電話番号を検証する方法を示しています。
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 '';
}