######################################################### ロケットチャットAPIの使用方法(WebHookによるDM送信) ######################################################### ロケットチャットのRestAPIを利用して、外部からDMを送信する方法を記載します。 .. note:: | 現状オージスのロケットチャットにはbot機能が存在しないため、 | あくまでAPI利用者本人からのメッセージという形式になります。 作業概要 ==================================== - ①loginAPIを使って、トークンとユーザIDを取得する https://developer.rocket.chat/reference/api/rest-api/endpoints/authentication-endpoints/login - ②getRoosAPIを使って、自身が属するチャンネルのルームIDを取得する https://developer.rocket.chat/reference/api/rest-api/endpoints/rooms/rooms-endpoints/get-rooms - ③sendMessageAPIを使って、ルームID指定で、メッセージを送る https://developer.rocket.chat/reference/api/realtime-api/method-calls/messages/send-message 作業詳細 ==================================== **①loginAPIを使って、トークンとユーザIDを取得する** - [POST]https://chat.icc.ogis-ri.co.jp/api/v1/login :: - Header - Content-Type:application/x-www-form-urlencoded - Body - user=[P付きドメインID] - password=[オージスドメインのパスワード] - Response { "status": "success", "data":{ "userId": "XXXXXXXXXXXXXX", "authToken": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", ...etc ※Content-Typeは多分JSONでも大丈夫。(未検証) .. note:: | ※APIのパスとして、[https://[ホスト名]:3000/api/v1/~]と紹介されているページがある |  おそらく本来(個人単位でロケチャを使う場合)はこれが正しい。 |  オージスロケチャの場合は専用のパスがあるっぽい .. list-table:: * - .. image:: ./rocketAPIImage/R_01_login.png **②getRoosAPIを使って、自身が属するチャンネルのルームIDを取得する** - [GET]https://chat.icc.ogis-ri.co.jp/api/v1/rooms.get :: - Header - X-Auth-Token=[①のレスポンスのauthToken] - X-User-Id=[①のレスポンスのuserId] - Response { "update":[ {"_id": "XXXXXXXXXX", "fname": "チャンネル名",…}, {"_id": "YYYYYYYYYY",…}, {"_id": "ZZZZZZZZZZ",…}, .. list-table:: * - .. image:: ./rocketAPIImage/R_02_roomGet.png **③sendMessageAPIを使って、ルームID指定で、メッセージを送る** - [POST]https://chat.icc.ogis-ri.co.jp/api/v1/chat.sendMessage :: - Header - X-Auth-Token=[①のレスポンスのauthToken] - X-User-Id=[①のレスポンスのuserId] - Content-Type:application/json - Body { "message": { "rid": [②で取得した_id], "msg": [送りたいメッセージ] } } ※おそらく&つなぎの方でもいいけど、Bodyの構造上JSONがいいと思う ※レスポンスは省略 ※Bodyにはそのほかの値の指定も可能(公式ドキュメント参照) ただし、オージスのロケチャには、権限の問題でbotUserとしての書き込みが不可能 .. list-table:: * - .. image:: ./rocketAPIImage/R_03_sendMessage.png 参考 ==================================== (Rocket.ChatにAPIで投稿するテスト(Postman)) https://www.yamamanx.com/rocket-chat-apitest-postman/