他の言語は追加せずに動かしたい、じゃあPowerShell
HipChatはAPIが判りやすいので、いろんなところからシステムの情報をPOSTしたりしたいのですが、Windowsの場合は、システムの制約上rubyやpythonといったスクリプト言語を追加しにくいことがあります。
今回は、PowerShellを使ってPOSTしてみることにしました。
HipChatのAPI DocumentサイトにもPowerShellのモジュールが掲載されています。
ただし、こちら、API v1を利用しているので、今回はv2のAPIを試してみました。
ソースコード
HipChatはAtlassian社のプロダクトなので、折角なのでBitbucketに上げることにしました。
実行時の注意点
- PowerShellスクリプトの実行を許可しておくこと。
- PowerShell v3が使えるようにしておくこと。
- 一部コマンドレットが、v2では組み込まれていないものがあるため。
- ConvertTo-Jsonというコマンド。
- Windows Management Framework 3.0 から、環境にあったフレームワークをインストールすること。
- フレームワーク追加の場合は、OS再起動が要るので注意。
利用方法
notify-hipchat.ps1は、モジュール化はしていないので、そのまま引き数を指定して実行するだけになります。環境によっては、プロキシの設定も必要になりますので、-proxy オプションで切り替えてみて下さい。
PS C:\Users\xxx> .\notify-hipchat.ps1 -color 'green' -messageText "(successful) Sample text."
-roomid xxx -apitoken YOUR_API_TOKEN
もう1つの方は、functionを作成、モジュール化してみました。
README.mdを参考にして、インポートの上で、同じ引数で実行できます。
C:\PS>Import-Module Import-Module .\Notify-HopChat.psm1
C:\PS>Notify-HipChat -apitoken YOUR_API_TOKEN -roomid NNN -messageText "(successful) Sample text."
- オンプレ版のHipChatでも利用可能です。
- room messageの読み取りは未だなので、そのうち用意したいです。
PowerShell おまけ
- PowerShell version確認
- $PSVersionTableで確認可能。
PS C:\Users\xxx> $PSVersionTable
Name Value
---- -----
PSVersion 3.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.18444
BuildVersion 6.2.9200.16398
PSCompatibleVersions {1.0, 2.0, 3.0}
PSRemotingProtocolVersion 2.2
-
PowerShellのバージョン切り替え
- powershell.exe -v 2 (Version2.0へ切り替え)
-
モジュールを作成する時
- xxx.ps1 ではなく、xxx.psm1 というファイル名にする。
-
モジュールにヘルプやusage (sample)を追加する
- <#... #> でコメントしたブロックを用意。
- .PARAMETER パラメータ名 で、その引数の説明を付加出来る。
- .EXAMPLE で、利用例を載せることができる。
Get-Help モジュール名 -examples # .EXAMPLE の部分を出力
Get-Help モジュール名 -detailed # 詳細を出力
20141010追記
JSONでAPIを呼ぶならInvokeRestMethod
メッセージをPOSTするのにWebRequetを使っていますが、PowerShell3.0以降が前提ならInvokeRestMethodを使うほうがスッキリして判りやすいです。
サンプルのソースで、Room messageをGETする関数を追加して、こちらはInvokeRestMethodで記載しています。
のちほどPOSTするほうもInvokeRestMethodに修正予定。