概要 🔗
WindowsのPowershell経由でRocket.chatへメッセージを投稿するまでのざっくりとした内容をメモしたものである。
データを取得する際のuserId/authTokenの取得 🔗
webhookではなくプログラム経由でメッセージをポストしたり、ルーム一覧を取得するなどの際に必ず必要となる情報。
1
|
Invoke-RestMethod -Method Post -Body "user=*****&password=*****" http://localhost:3000/api/v1/login
|
参考ドキュメント 🔗
https://developer.rocket.chat/reference/api/rest-api/endpoints/other-important-endpoints/authentication-endpoints/login
RoomID取得 🔗
メッセージをポストする際にどのRoomへポストするかをRoomIDで指定するため、事前にIDを取得する必要がある。
今回はRoom名からRoomIDを取得する流れとしてRoom名を引数で渡している。
1
2
3
4
5
6
|
$headers = @{
'X-Auth-Token': '*****'
'X-User-Id': '*****'
}
Invoke-RestMethod http://localhost:3000/api/v1/rooms.info?roomName=***** -Headers $headers -ContentType 'application/json'
|
参考ドキュメント 🔗
https://developer.rocket.chat/reference/api/rest-api/endpoints/team-collaboration-endpoints/rooms-endpoints/info
メッセージのポスト 🔗
実際にメッセージをPostする場合はヘッダー情報に加えてpayload情報をjsonで渡す必要がある。Powershellの場合はjson変換処理を間にかませる必要がありそう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$headers = @{
'X-Auth-Token': '*****'
'X-User-Id': '*****'
}
$payload = @{
'roomId': '*****'
'text': '*****'
}
$JsonData = $payload | ConvertTo-Json
$SendJson = [System.Text.Encoding]::UTF8.GetBytes($JsonData)
Invoke-RestMethod -Method Post -Uri http://localhost:3000/api/v1/chat.postMessage -Body $SendJson -Headers $headers -ContentType 'application/json'
|
Webhook経由で投稿する場合も同様に以下のような感じで投げれば投稿が可能。
1
2
3
4
5
6
7
8
|
$payload = @{
'text': '*****'
}
$JsonData = $payload | ConvertTo-Json
$SendJson = [System.Text.Encoding]::UTF8.GetBytes($JsonData)
Invoke-RestMethod -Method Post -Uri http://localhost:3000/hooks/***** -Body $SendJson -ContentType 'application/json'
|
rocket chat側から提供されているpythonモジュールもあるみたいですがpythonで普通にpostすれば投稿できます
1
2
3
4
5
6
7
8
9
|
import requests, json
WEBHOOKURL = 'http://localhost:3000/api/v1/chat.postMessage'
HEADERS = {'X-Auth-Token': '*****', 'X-User-Id': '*****', 'Content-Type' : 'application/json'}
r = requests.post(WEBHOOKURL, data = json.dumps({
'roomId': '*****',
'text': '*****'
}), headers = HEADERS)
print(r)
|
参考ドキュメント 🔗
https://developer.rocket.chat/reference/api/rest-api/endpoints/team-collaboration-endpoints/chat-endpoints/postmessage