Teamsに通知を送信したい[ServiceNow]
TL;DR
Teams側はIncoming Webhook、ServiceNow側はREST MessageとBusiness Ruleを使用。
Situation
要件
- Teams側
- Teams Incoming Webhookを使用
- ServiceNow
- スクリプトから通知を送信したい。
- 通知の文言を動的に変更したい。
- あわよくば通知の送信先も動的に変更したい。
Solution
1.Teams側の設定
コネクタの設定をする必要があります。
Teamsを開き、通知を送信したいチャネルの右にある・・・からコネクタを開きます。
Incoming Webhookを検索し、セットアップします。セットアップで表示されるURLを控えておきます。
2.REST Messageの作成
AllからREST Messageと検索し、レコードを作成します。Endpointには先ほど控えたURLを入力します。作業はStudioでも可能です。
3.HTTP Methodの作成
REST Messageの関連リストにHTTP Methodsがあります。Newを選択して新規作成します。HTTP methodはPOSTを指定してください。Endpointには先ほどと同様に入力してください。
Point
Endpointに指定できるURLは最大200文字のようです。TeamsからコピーしたURLをそのまま張り付けるとURLが途中で切れてしまって動作しないことがあります。HTTP Methods Endpointをhttps://example.com/${hoge}
のようにすると呼出の際、${hoge}
部分を動的に指定可能です。送信先を動的に変更したい場合やURLが200文字を超える場合、別テーブルへURLの動的部分を保存しておき${hoge}
を置換します。また、そもそも${hoge}
しか入力せずに全置換することも可能です。管理者以外がドメインを含めた完全なURLを指定できる場合、意図しないURLへ通知を送信することがないように適切な対策を施してください。
推奨
REST Message Endpoint https://example.com/xxx/
HTTP Methods Endpoint https://example.com/xxx/${hoge}
(https://example.webhook.office.com/webhookb2/${hoge}
など)
4.Script Includeの作成
function createBody(message) {
var body = {
type: "message",
text: message
};
return JSON.stringify(body);
}
function _sendNotification(message, teamsIncomingWebhookUrlParam) {
var restMessage = new sn_ws.RESTMessageV2('<x_xxx_xxx.REST Message Name>', '<HTTP Method Name>');
restMessage.setStringParameter("hoge", teamsIncomingWebhookUrlParam);
var body = createBody(message);
restMessage.setRequestBody(body);
var response = restMessage.executeAsync();
}
var TeamsNotification = Class.create();
TeamsNotification.prototype = {
initialize: function() {},
send: function(message) {
var teamsIncomingWebhookUrlParam = <いい感じに取ってくる>;
_sendNotification(message, teamsIncomingWebhookUrlParam);
},
type: 'TeamsNotification'
};
5.Business Ruleの作成
(function executeRule(current, previous) {
var teamsNotification = new TeamsNotification();
try{
var message = <お好みで>;
teamsNotification.send(message);
}catch(e){
//お好みで
}
})(current, previous);
Summary
意外と簡単に実装できました。
間違いなどがあればご指摘ください。
↓偉大なる参考記事
↓ドキュメント
フォロー、Twitterフォローもよろしくお願いいたします。
Discussion