通知チャネル エマージェンシーアウトリーチ を作成する
Slack または Microsoft Teams コラボレーションプラットフォームなど、会社の優先コミュニケーション方法を使用して、健康状態要求を送信するための通知チャネルを作成し ます。スクリプトまたはサブフローを使用して、通知チャネルを作成します。
始める前に
必要なロール:sn_imt_checkin.checkin_admin または admin
このタスクについて
たとえば、会社の IT ネットワークグループには、メールよりも綿密に監視する Slack チャネルがあります。Slack 通知チャネルを作成します。IT ネットワークグループメンバーと通信するには、グループをターゲット対象者として選択し、Slack 通知チャネルを選択します。
[メール通知] と [Now Mobile プッシュ通知] のチェックボックスが選択されている場合、3 つの通知がすべて送信されます。Slack 通知チャネルのみを使用するには 、これらの 2 つのチェックボックスをオフにします。
手順
カスタム通知チャネルを使用して Outreach が送信されると、[配送ログ] 関連リストが Outreach メッセージに表示されます。
- Outreach メッセージに対して通知チャネルをテストし、失敗したレコードを開いてエラーメッセージを確認します。
- 通知の失敗の原因になったエラーを修正します。
- 失敗がなくなるまで、通知チャネルのテストを続行します。
Slack チャネルスクリプト
注:
次のスクリプトは参照専用です。お使いの環境向けの通知チャネルスクリプトを開発する場合は、それを参照してください。
(function notify(responses, channelGr) {
var createClient = function () {
var client = new sn_ws.RESTMessageV2();
client.setRequestHeader('Authorization', 'Bearer xoxb-222222222222-1111111111111-000000000000000000000000');
client.setRequestHeader("Accept", "application/json");
client.setRequestHeader('Content-type', 'application/json');
return client;
};
var getEmailToSlackIdMap = function (users) {
var emailToSlackIdMap = {};
for (var i = 0; i < users.length; i++) {
var email = users[i].profile.email;
if (email) {
emailToSlackIdMap[email] = users[i].id;
}
}
return emailToSlackIdMap;
};
var runSlackCommand = function (method, params) {
var client = createClient();
client.setHttpMethod('post');
client.setEndpoint('https://slack.com/api/' + method);
client.setRequestBody(JSON.stringify(params));
var response = client.execute();
if (response.getStatusCode() < 200 || response.getStatusCode() > 299) {
throw new Error('Failure running ' + method + ':\n' + response.getBody());
}
var body = JSON.parse(response.getBody());
if (!body.ok) {
throw new Error(body.error);
}
return body;
};
var sendMessage = function (userId, message) {
var openConversationResponse = runSlackCommand('conversations.open', { users: userId });
var channel = openConversationResponse.channel.id;
runSlackCommand('chat.postMessage', { channel: channel, text: message });
};
var users = runSlackCommand('users.list').members;
var emailToSlackIdMap = getEmailToSlackIdMap(users);
var body = channelGr.getValue('body') || '<p></p>';
var record = responses.mode === 'acknowledgements' ? responses.acknowledgementsGr : responses.surveyInstancesGr;
var numSent = 0;
while (record.next()) {
var email = record.user.email + '';
var link = responses.mode === 'acknowledgements'
? gs.getProperty('glide.servlet.uri') + record.getLink(true)
: gs.getProperty('glide.servlet.uri') + 'sp?id=take_survey&instance_id=' + record.getUniqueValue();
var message = body + '\n' + link;
var slackId = emailToSlackIdMap[email];
if (slackId) {
sendMessage(slackId, message);
numSent += 1;
}
}
return { sent_count: numSent };
})(responses, channelGr);