SE(しがないエンジニア)のブログ

IT技術ネタ(Azure他MS製品・セキュリティ周り)が中心です!他雑記(お馬さん 他いろいろ)もあり。

RocketChat の REST API を利用しメッセージを飛ばしてみる

RocketChat の REST API を利用してメッセージを飛ばしたい!

自社ではオンプレミスでチャットを運用したいということもあり RocketChat を利用しております。「Slack 風」と呼ばれていることもあり、ほぼほぼ同じ利用感で運用可能です。当ブログの記事でも過去に Plaeasanter との連携記事を書いたりしたのですが今回は簡易的な通知を個別に構築したい、という思いがあり REST API を調査してみました。公開されているドキュメントは下記の通り。
Rocket.Chat Documentation - Rocket.Chat REST API
最も最速で試せそうな流れでメモ書きとして残します。笑

検証メモ

連携したいユーザ(≒投稿ユーザ)のマイアカウントで「パーソナルアクセストークン」を発行します。トークンとユーザIDは(おそらくですが)後から確認不可なので何か別の txt ファイルなどに控えます。
f:id:btsn:20200510144537p:plain
これをベースに RocketChat に疎通可能な Linux サーバ(Windows でも OK)から curl コマンドを実行してみます。

# curl -H "X-Auth-Token: (token)" \
> -H "X-User-Id: (user_id)" \
> -H "Content-type:application/json" \
> http://(server_name):(port)/api/v1/chat.postMessage \
> -d '{ "channel": "#(channel_name)", "text": "This is a test!" }'
括弧書きのところは適宜変更して下さい。成功すると・・・・。
{"ts":1588950642332,"channel":"#(channel_name)","message":{"alias":"","msg":"This is a test!","attachments":[],"parseUrls":true,"groupable":false,"ts":"2020-05-08T15:10:40.438Z","u":{"_id":"(user_id)","username":"(user_name)","name":"(name)"},"rid":"eb5ixakqPkEc8ug5z","_id":"CHPMQ5FBMJDP3mdZM","_updatedAt":"2020-05-08T15:10:41.701Z","mentions":[],"channels":[]},"success":true}
こんな感じのレスポンスが来ます。NGの場合は「Invalid Channel」他、エラーメッセージが戻しますので適宜対応しましょう。ちなみに、投稿された RocketChat の方では。(curl コマンドの実行は別サーバから行っております)
f:id:btsn:20200510145633p:plain
簡単ですね!PHP で Pleasanter の API を実行可能なので今度はデータ未入力の警告として RocketChat でメッセージを飛ばすなどに活用しようと思います。