|
近年、テレワークの普及もあり、メールよりもチャットツールを使ったやり取りが増えてきていますね。メーラーを見る時間よりもチャットツールを見る時間が長い、という方も多いのではないでしょうか。
JP1製品でもJP1イベントをメール通知させる機能がありますが、インターネットへ接続可能な環境であれば、コマンドまたはスクリプト実行によるチャットツールへの連携が可能です。
そこで、本記事ではJP1イベントをSlackおよびGoogle Chatへ連携させる手順をご案内します。
本記事では、Windows環境はPowerShell、Linux環境ではCurlを使用した連携方法を記載します。
<動作確認環境>
(Windows環境)
OS:Windows Server 2019
JP1バージョン:V12.1
(Linux環境)
OS:CentOS Linux release 7.8.2003 (Core)
JP1バージョン:V12.1
Curlバージョン:curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.44 zlib/1.2.7 libidn/1.28 libssh2/1.8.0
チャットツールとの連携にはWebhookを使用します。予めチャット側にてWebhookでpostするためのURLを発行しておきます。
手順は下記のとおりです。
1.Slackへのアプリのインストール
事前にSlackに「Incoming Webhook」アプリケーションをインストールしておきます。アプリケーションのインストールにつきましてはSlack側にてご確認ください。
3.作成されたWebhook URLを記録
1.チャットルームの作成
JP1イベントを通知したいチャットルームを作成します。
2.Webhookの設定
|
3.Webhookを作成
|
|
Linux環境ではcurlコマンドでそのままpostが可能ですが、Windows環境のcurlで実行した場合、文字コードがShift-JISとなるためチャット側で文字化けしてしまいます。PowerShellのInvoke-RestMethodコマンドで文字コードを変換することで文字化けすることなくpostできるため、事前にスクリプトを用意しておきます。
以下、サンプルスクリプトです。
■Slack連携用スクリプト
slacknotify.ps1
-------------------------------------------------------------------------------------
#文字化け防止のための文字コード変換
$enc1 = [System.Text.Encoding]::GetEncoding('ISO-8859-1')
$enc2 = [System.Text.Encoding]::UTF8.GetBytes($args)
#JP1イベント格納用の変数定義
$jp1eventnotify = @{
text = $enc1.GetString($enc2);
#slack側のユーザ名を定義
username = "JP1Event";
}
#Invoke-RestMethodでJP1イベントをPOST
Invoke-RestMethod -Uri "https://hooks.slack.com/services/xxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyy" -Method Post -Body (ConvertTo-Json $jp1eventnotify)
-------------------------------------------------------------------------------------
■Google Chat連携用スクリプト
googolechatnotify.ps1
-------------------------------------------------------------------------------------
#文字化け防止のための文字コード変換
$enc1 = [System.Text.Encoding]::GetEncoding('ISO-8859-1')
$enc2 = [System.Text.Encoding]::UTF8.GetBytes($args)
#JP1イベント格納用の変数定義
$jp1eventnotify = @{
text = $enc1.GetString($enc2);
}
#Invoke-RestMethodでJP1イベントをPOST
Invoke-RestMethod -Uri "https://chat.googleapis.com/v1/spaces/abcde/messages?key=xxxxxxxxxxxxxxxxxxxxx" -Method Post -ContentType 'application/json' -Body (ConvertTo-Json $jp1eventnotify)
-------------------------------------------------------------------------------------
※赤字部分にそれぞれ事前に控えたWebhook URLを指定します。
(補足)
○PowerShellスクリプトを実行する場合、事前にコマンドプロンプトを管理者権限で起動し、下記コマンドを実行して実行許可を付与しておく必要があります。
>Set-ExecutionPolicy RemoteSigned
詳細につきましてはPowerShell側にてご確認ください。
○実行環境からのインターネット接続にProxyがある場合、スクリプト内に下記設定を行うことで定義可能です。
$proxyServer = "http://xxx.xxx.xxx:yyyy"
$proxyUser = "user"
$proxyPassword= "password"
○本スクリプトは弊社環境にて稼働確認を行っておりますが、あくまでもサンプル提供となりますため、記載内容に関するお問い合わせはご容赦ください。
WebhookのURLを発行した後、JP1側で連携するためのコマンドを登録します。JP1/IM、JP1/IM2の自動アクション機能にて、curlコマンドまたはPowerShellスクリプトを定義することで連携が可能です。
自動アクションでは変数として$EVMSGを指定することで元のJP1イベントを引き継ぐことが可能です。
以下、JP1/AJS3のジョブネットがエラーとなった場合(イベントID:4104)に通知する場合の設定例です。
1.JP1/IM-Viewから[オプション]→[自動アクション設定]を開きます。
|
2.[追加]をクリックし、[アクション詳細設定]画面のアクションへ、下記コマンドを指定します。
【Slackと連携する場合:Linux環境】
[コマンド文]
curl -X POST -H "Content-type: application/json" --data "{'text':"'"?EVMSG?"'"}" https://hooks.slack.com/services/xxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyy
【Slackと連携する場合:Windows環境】
[コマンド文]
powershell /c C:\temp\slacknotify.ps1 "'"$EVMSG"'"
【Googleチャットと連携する場合:Linux環境】
[コマンド文]
curl -H 'Content-Type:application/json' -d '{ "text":"'"?EVMSG?"'" }' "https://chat.googleapis.com/v1/spaces/abcde/messages?key=xxxxxxxxxxxxxxxxxxxxx"
【Googleチャットと連携する場合:Windows環境】
[コマンド文]:powershell /c C:\temp\googlechatnotify.ps1 "'"$EVMSG"'"
|
上記設定によりジョブネットエラーのJP1イベント発行時にコマンドが実行され、Slack、Google Chatへメッセージが通知されます。
|
▼Google Chatへの連携イメージ
|
今回はJP1イベントをチャットツールに連携する手順についてご案内しました。今回ご紹介したSlack・Google Chatの他、Microsoft TeamsやChatworkなど、ビジネス向けチャットではWebhookによる連携が可能です。
チャット連携によりほぼリアルタイムにJP1イベントが確認できるようになるため、死活監視やジョブエラーの確認にぜひご活用ください。
JP1/Integrated Management (JP1/IM) 09-00以降
JP1/Integrated Management 2 (JP1/IM2) 12-00以降
JP1/Automatic Job Management System 3 (JP1/AJS3) 09-00以降
2003年入社。JP1のフィールドエンジニアを経て2015年よりJP1サポートセンターにて勤務。 |
|
JP1/TELstaff は電話やパトランプ、メール通知を柔軟に設定出来るソフトウェアですが、V12より、LINE WORKSおよびSlackへの通知が正式にサポートされました。ここでは具体的な設定手順についてご紹介します