LINE WORKS APIをPostmanから叩いてみる

#はじめに
「LINE WORKSのAPIを使ってみたいんだけど、何から始めればいいですか？」という方に向けて、この記事を書いています。
プログラミングする前に、まずLINE WORKSのAPIの仕様を確認したい時や、ちょっとしたトラブルシューティングしたい時、API実行時のパラメーターの設定方法があっているか確認したい時、応答のJSONがどんな形式で返ってくるのか確認したい。そんな時にとってもPostmanが便利なんです！！！！

Windows版・Mac版それぞれアプリがあるので環境にも依存しません！まず、ここから始めてみませんか？

#Postmanインストール
[Postman](https://www.getpostman.com/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/6d61cd1b-3c89-e762-1c29-58eabd069e4e.png)

[Download the App]をクリックして、Windows版・Mac版のアプリをダウンロードし、インストールしてください。

#LINE WORKSのDeveloper Console設定
APIを叩く前に、LINE WORKSのDeveloper Consoleでいくつか設定が必要です。
##Developer Consoleへアクセス
①LINE WORKSの[Developer Console](https://developers.worksmobile.com/jp/console/openapi/main)へアクセスします。
②LINE WORKSのIDを入力してログインします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/135983/3a90a492-582f-08dc-a1f7-01c79e1d4646.png)

>下記画面が出力された場合は、Developer Consoleへのアクセス権限がありません。Developer Consoleへアクセスするためには、ライトプラン以上のテナントの「最高管理者」もしくは「副管理者」の権限が必要です。権限の付与手順は、[こちら](https://help.worksmobile.com/service/main.nhn?serviceNo=7&categoryNo=883)を参考にしてください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/135983/f5c73005-7b49-caab-a66c-d5b19a7ca702.png)

③[LINE WORKS APIサービス利用規約]を確認し、[APIサービス利用規約の内容を理解し、これに同意します。]にチェックを入れ、[利用する]ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/135983/5ff01eb7-53e9-5c32-87e8-e2647068c5f1.png)

##API IDを発行する
LINE WORKS Bot APIを使うにあたり、ドメインごとに「API ID」が必要となります。「API ID」はDeveloper Consoleで発行します。

①[Developer Console]へアクセスします。
②[API]メニューの一番上にある[API ID]の[発行]ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/135983/4a5c8575-eb71-1716-219e-c5c60ea58cf4.png)

③API IDが発行されました！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/135983/749fac90-d45c-3471-e28f-fcb03f8348a9.png)

## サーバーAPIのコンシューマーキーを発行する
Botがユーザーにメッセージを送信する時には「サーバーAPI」を利用します。
また、サーバーAPIを利用する時には、「サーバーAPIコンシューマーキー」と「Server Token」をヘッダーに含める必要があります。まず、Developer Consoleで「サーバーAPIコンシューマーキー」を発行します。
①Developer Consoleへアクセスします。
②[API]メニューの真ん中にある[Server API Consumer Key]の[発行]ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/135983/7cb18d82-7306-e07a-4776-02c014ee5405.png)

③サーバーAPIの利用範囲を聞かれるダイアログが表示されます。今回はBotのみ利用するため、[トークBotすべて]を選択し、[次へ]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/bab09cc3-f306-ef81-a2b7-18fe763deb80.png)

④[Tokenの有効期間]は「短く設定することを推奨しています。」と注意書きも書いてあるので、一番短い７日間に設定しましょう。また、Tokenを利用した時に自動的にTokenの有効期限を延長する場合は、[Tokenの使用時に有効期間を自動延長しますか？]にて、[はい]を選択します。完了したら、[保存]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/0913391d-db6b-13ef-47dd-b584e3993cdb.png)

⑤サーバーAPIコンシューマーキーが発行されました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/1afe4e95-100b-ea3a-8c6d-3929e2e34b66.png)

##Server Listを追加する
次に、サーバーAPIを利用する時にヘッダーに含める必要がある「Server Token」についてですが、「Server Token」を取得するためには「サーバーID」と「認証キー」が必要となります。Developer Consoleでこの２つを発行しましょう。
ちなみに、このServer Tokenも２種類「固定IPタイプ」と「ID登録タイプ」があります。今回は、ローカルのPCにインストールしたPostmanから実行するためIPアドレスが変わりません。そのため、今回は「固定IPタイプ」を使います。
> 【補足】
> Botサーバーをクラウド上に構築する場合は、IPアドレスは変わると思いますので、「ID登録タイプ」を使いましょう。

①Developer Consoleへアクセスします。
②[API]メニューの[Server List(固定IPタイプ)]の[追加]ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/9fff3acb-f506-ceaa-e5f8-e77e70f0daa8.png)

③表示されたダイアログの[サーバー名]欄には任意の値を入力します。ここでは、わかりやすいように「Postman」としました。[Keyの選択]で、先程発行したService API Consumer Keyを選択します。
[IP]には、パブリックIPアドレスを入力します。わからない場合は、[ここ](https://www.cman.jp/network/support/go_access.cgi)などで調べましょう。
全て設定できたら[発行]ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/842c252c-ffaa-8175-9c93-d7953ed4c5c8.png)

④Tokenが発行されるので[コピー]ボタンをクリックし、Tokenを保存しておきましょう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/d8259e5e-7991-ca5f-c28a-60b786b1c4b2.png)

⑤[同意して利用する]ボタンをクリックして閉じます。
（何に同意・・・？）

#PostmanだけでトークBotを作ってみましょう！
##APIを叩く時の共通設定
API を呼び出す際には、必ずヘッダーに認証トークンとコンシューマーキー（サーバーAPIを叩くときは、サーバーAPIコンシューマーキーのこと）を含める必要があります。この設定は、以下の手順で全て共通です。

Postmanでは、[Headers]タブに、下記のように指定します。

| KEY                  | VALUE                    |
|:---------------------|:-------------------------|
| consumerKey          |＜サーバーAPIコンシューマーキー＞ |
| Authorization        |Bearer ＜Token＞ <br>(「Server Listを追加する」④で発行したToken。<br>'Bearer'と'Token'の間には空白(space)を必ず入れること。) |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/ba077baa-57cf-9605-044e-7a32e3e5ff8b.png)


##Bot登録
LINE WORKSへBotを登録します。
ドキュメント：[トーク Bot のテナント登録](https://developers.worksmobile.com/jp/document/1005002?lang=ja)

ドキュメントをみて、Request URLとHTTP Methodを確認します。

| KEY                  | VALUE                    |
|:---------------------|:-------------------------|
| Request URL          | https://apis.worksmobile.com/r/{API ID}/message/v1/bot |
| HTTP Method          | POST  |


①Postmanで、HTTP Method（B欄）で「Post」を選択肢、Request URL（A欄）にドキュメント通りにRequest URLを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/1ebc8767-2121-67b8-5996-a60366c67e28.png)

②次に、Bodyにパラメーターを指定していきます。[トーク Bot のテナント登録](https://developers.worksmobile.com/jp/document/1005002?lang=ja)の「Request Example」の「Simple」欄に記載があるものが、必須のパラメーターのみ指定した例になります。これをコピーして、PostmanのBody欄の[raw]を選んで、その下にペーストします。ペーストした値を自分の環境にあったものに変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/cd7b4154-1f2a-40e5-e68b-113c0bd4b942.png)

③Headersに「APIを叩く時の共通設定」の内容が設定されていることを確認し、[Send]をクリックします。

④正常に動作すると、画面下部にレスポンスが返っていきます。Status欄に「200 OK」と返ってきて、botNoがBody欄に表示されていたら、正常にBotが登録されています！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/b6d8db3a-1882-ad99-3574-184371a1457e.png)

⑤Developer Consoleの[Bot］欄をみると、登録したBotが表示されていることを確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/f4e85c20-5417-dbb0-f835-bd51f4038c69.png)

##登録されたBotの利用設定
Botを利用できるように、ドメインに登録します。
ドキュメント：[トーク Bot のドメイン登録](https://developers.worksmobile.com/jp/document/1005004?lang=ja)

①先ほどと同じように、ドキュメントを参照し、Request URLとHTTP Methodを設定します。

| KEY                  | VALUE                    |
|:---------------------|:-------------------------|
| Request URL          | https://apis.worksmobile.com/r/{API ID}/message/v1/bot/{botNo}/domain/{domainId}|
| HTTP Method          | POST  |

- {API ID}は、Developer Consoleの[APIメニュー](https://developers.worksmobile.com/jp/console/openapi/main)のAPI ID欄を参照。
- {botNo}は、Developer Consoleの[Botメニュー](https://developers.worksmobile.com/jp/console/bot/view)の登録したBotを参照。
- {domainId}は、Developer Consoleの左メニュー一番下の[Domain ID]を参照。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/c493f8bc-f884-2f3d-fe91-f1047b342f14.png)

Postmanで指定した場合、下記のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/fbd2eb0e-8e05-a5ae-abab-a2d20c1b25a7.png)

②Botのドメイン登録は、Bodyに指定する必須パラメーターはありませんので、このまま[Send]をクリックします。
※Headersに「APIを叩く時の共通設定」の内容の設定することを忘れずに！

③Status欄に「200 OK」と返ってくれば正常です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/4bcd7f21-87f7-327a-9a57-04f015d7fe42.png)

④[Admin Console](https://bot-admin.worksmobile.com/)上でBotが登録されていることを確認します。
※公開設定は、[非公開]になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/807ab2d1-5919-483c-6723-704eb027aa3e.png)

##Botをテナント内で公開にする
Botを公開すると、LINE WORKSのテナントに登録されているユーザーはBotを見つけることができます。

ドキュメント：[トーク Bot ドメイン設定の修正](https://developers.worksmobile.com/jp/document/1005014?lang=ja)

①ドキュメントを参照し、Request URLとHTTP Methodを設定します。

| KEY                  | VALUE                    |
|:---------------------|:-------------------------|
| Request URL          | https://apis.worksmobile.com/r/{API ID}/message/v1/bot/{botNo}/domain/{domainId}|
| HTTP Method          | PUT  |

②公開設定を「公開」に変更するので、Body欄に下記のように指定します。

```
{
  "usePublic": true
}
```

Postmanで指定すると、下記のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/b9db6a5d-6db1-1abe-195d-b9356d78fbe3.png)

③設定が完了したら、[Send]をクリックします。
※Headersに「APIを叩く時の共通設定」の内容の設定することを忘れずに！

④Status欄に「200 OK」と返ってくれば正常です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/5667ba27-f44a-e27b-4f92-1217d8f08494.png)

##Botからメッセージを送信する
いよいよBotからメッセージを送ってみましょう！ここではまず簡単なテキスト文を送ります。

ドキュメント：[メッセージ送信（text)](https://developers.worksmobile.com/jp/document/100500801?lang=ja)

①ドキュメントを参照し、Request URLとHTTP Methodを設定します。

| KEY                  | VALUE                    |
|:---------------------|:-------------------------|
| Request URL          | https://apis.worksmobile.com/r/{API ID}/message/v1/bot/{botNo}/message/push|
| HTTP Method          | POST  |

②Body欄に下記のように指定します。

```
{
  "accountId": "admin@example.com",
  "content": {
    "type": "text",
    "text": "こんにちは！よろしくお願いします！"
  }
}
```
- accountIdは、メッセージを送信するユーザーのアカウントIDを指定します。
- 送信するメッセージの内容をtextパラメーターで指定します。

Postmanで指定すると、下記のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/9c2fd21c-61cf-7c3b-b1bd-c4d32991cc91.png)

③設定が完了したら、[Send]をクリックします。
※Headersに「APIを叩く時の共通設定」の内容の設定することを忘れずに！

④Status欄に「200 OK」と返ってくれば正常です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/8e1a6798-185c-c6c1-eb20-45f417ed470b.png)

⑤LINE WORKSのトーク画面で、Botからメッセージが送信されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/59f9270b-9784-e2fd-2111-92fd8969c548.png)

Botを作成して、メッセージを送信するところまでPostmanで出来ました！

#Postmanを使ってサンプルコードを作成
PostmanはあくまでAPIをテスト実行するためのツールです。
実際にBotを開発しようと思うと、Bot用のサーバーを構築し、プログラミング言語で開発する必要があります。
プログラミングの過程でも、Postmanは役立ちます！

実は、この[Code]というところをクリックすると、様々なプログラミング言語でのサンプルコードが生成されるのです！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/76c7d59d-3069-268f-3d52-12ef82c5abdc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/0f39dd60-6342-fbd8-85b9-e5fc904162f8.png)

LINE WORKSのDeveloperサイトにサンプルコードがなくても、Postmanさえあれば問題なしです！（笑

# 最後に
久々に、LINE WORKSのトークBot API叩いてみましたが、RESTful対応してめっちゃ使いやすくなってた・・・嬉しい！！:relaxed:
トークBotが送信できるメッセージの種類もTextタイプだけでなく画像付きのカルーセルやリストボタンなども対応していますし、リッチメニューなども設定可能です。
Postmanでぽちぽち叩いてみて、どんなことができるのかぜひ試してみてください！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/c444a448-408b-8225-14e3-fa3ece5f8828.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135983/aaf9875f-b6b7-492f-1628-48dd49405cd4.png)