ロケットチャットAPIの使用方法(WebHookによるDM送信)

ロケットチャットのRestAPIを利用して、外部からDMを送信する方法を記載します。

Note

現状オージスのロケットチャットにはbot機能が存在しないため、
あくまでAPI利用者本人からのメッセージという形式になります。

作業概要

作業詳細

①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/~]と紹介されているページがある
 おそらく本来(個人単位でロケチャを使う場合)はこれが正しい。
 オージスロケチャの場合は専用のパスがあるっぽい
../_images/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",…},
../_images/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としての書き込みが不可能

../_images/R_03_sendMessage.png

参考

(Rocket.ChatにAPIで投稿するテスト(Postman)) https://www.yamamanx.com/rocket-chat-apitest-postman/