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