LINE WORKSのフリープランでBot開発のための設定

アドベントカレンダー初日ゲットしました！が、初日でもありますし、私はLINE WORKS初心者向けの内容でスタートしようと思います。LINE WORKSは無料でもBot開発ができるようになってますので、Bot開発するまでのLINE WORKS側の設定や前提情報など書きます。

# 対象とする方
- LINE WORKSを初めて触る
- チャットボットって何？はなんとなく知っている、もしくは作ったことがある
- LINE WORKSでチャットボット作ってみたい
- REST API使った開発を行ったことがある

# LINE WORKSとは
超簡単に言うと、ビジネス版のLINE（みたいなメッセージングサービス）にグループウェアのような予定表や掲示板などの機能を追加したサービスです。個人ではLINEで自由に色んな人とつながってコミュニケーションをとりますが、会社や組織、団体、コミュニティなど管理された範囲で利用するための機能があるプラットフォームですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/332d5807-5fc2-740b-e172-028599418ae9.png)
詳細は以下参考になるかと思います。
- [LINEWORKS公式広告ページ](https://line.worksmobile.com/jp/landing/convenient/)
- [LINEWORKS公式機能一覧](https://line.worksmobile.com/jp/feature/talk/)
- [Youtubeチャンネル](https://www.youtube.com/channel/UCjWj1hW5UlsEzf1YZ8zAGcQ)

プランによって費用が違います。ちょうど1年くらい前に無料プランができまして、機能に一部制限はありますが、初めてのBot開発ならフリープランで十分かと思います。プラン情報は[こちら](https://line.worksmobile.com/jp/pricing/)参照。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/e4337320-2645-469c-92ab-8315e6ce146f.png)
フリープランについての機能比較や有償との違いは[ここのよくある質問](https://help.worksmobile.com/jp/topic/free-plan/faq/)にまとまってます。

# LINE WORKSセットアップに必要なもの
- インターネットがつながるパソコン
- 以下のブラウザのどれか（ブラウザ要件のドキュメント[こちら](https://guide.worksmobile.com/ja/setting/setting-guide/support-environment/#i)）
    - Internet Explorer: IE10, IE11
    - Chrome: 最新版
    - Firefox: 最新版
    - Safari: 10.1 以降
    - （任意：必要に応じて）Postman
    - （任意：必要に応じて）callbackURL

# Bot開発環境構成
Bot開発する時の構成イメージはこんな感じかと思います。
使うクラウドによっては、ローカルでの開発ではなくcloud9やherokuなどクラウド上で開発＆テストすることもありますが、Botとユーザーが会話する上では、Botにメッセージなどを送信する時のLINEWORKS側のAPIと、Botからプログラムに対してメッセージなどを送信するためのCallbackが必要になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/60f7be87-956d-ae84-db82-df726e1851ed.png)

# 手順
それではさっそくLINE WORKSのセットアップから作業します。
## LINEWORKS無料プランで新規開設
[こちらに](https://guide.worksmobile.com/ja/registration/)公式の新規開設手順あるんでそのままっちゃそのままですが
無料版に特化して手順書きます。
##### LINE WORKS 公式サイトにアクセス
[LINE WORKS公式サイト](https://line.worksmobile.com/jp/)にアクセスし、右上にある[無料ではじめる]をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/b4ece5c6-df8d-0fdc-955b-82f8c85309e9.png)

##### 新規開設方法を選択して認証
新規開設方法の選択画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/b5cb3b59-4730-c303-1c5a-fe260158a804.png)

サービスを利用するグループの名前になる企業/団体名を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/6111c5f5-deaf-d989-623e-deb84988f6a2.png)

企業/団体名の業種を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/ec09f446-c19c-fc55-f22f-ef823634db24.png)

>この業種はチュートリアルやガイド表示のために使われるようなので特に不要の場合には「選択しない」でよいと思います。

管理者になる名前を登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/c0b84fd8-a7b7-655e-57f9-6933d76c1f9e.png)

携帯電話の電話番号を入力し、[認証番号を送信]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/927fef13-5421-8575-25fa-6e8b2682c500.png)

>携帯電話を持っていない人あるいは電話番号を登録したくない方は電話番号以外の認証も可能ですので別の方法で新規開設のリンクをクリックして設定してください。

登録した携帯電話の番号宛にSMSが届きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/4d1e6a16-4d26-f45e-78bd-9347f9a36466.png)

SMSに届いた4桁の番号を、入力してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/f2e97838-75f6-e945-a291-b274f232b876.png)

アカウント情報を忘れた場合の確認用として使われるメールアドレスを登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/2d7afc29-24dc-6ce6-c4b2-42fc79abe91f.png)

はい。登録完了しました。自分1人だけのワークスグループに誰か招待する場合にはここから招待できますしあとからでも追加できます。[サービスをはじめる]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/1f2f944d-778d-0981-0914-3c4d037b392f.png)

はい。完成。ユーザー利用画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/0e4440c9-5af2-20aa-50dd-2673be3e38b3.png)

電話番号のみのログインだけでなくIDとパスワードログインもできるように設定します。右上のアイコンクリックして表示されるメニューから個人情報をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/50be218f-5c7f-ae3e-7cf6-01100a50f995.png)

環境設定画面の左ペインで[セキュリティ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/ad3646db-ad3a-7852-aadf-9071875b6cb7.png)

パスワード変更をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/5c5cb4d1-484c-24bc-f14c-ea0ac42c1905.png)

IDとパスワードを入力します。IDも一緒に変更できるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/6d310d2a-a51d-9271-c98d-44ac88474d0b.png)

ID/passでログインできるか確認しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/8a3bf108-e5a0-cf10-a096-ea611a30be99.png)


##### 管理者画面表示
右上の自分の名前をクリックして表示されるメニューの中から[管理者画面]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/fefa4b1b-4f51-4ef8-90f0-11d96b576e0d.png)

黒いメニューバーの画面が表示されます。これが管理画面です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/7f748a4e-e5c9-fd5b-2be8-819e485c256d.png)

##### 色々いじってみる
ユーザー操作感はLINEですし、管理者設定なども感覚で操作できますので習うより慣れろで色々いじってみればすぐに慣れるはず。わからないことあれば[こちらのガイド](https://guide.worksmobile.com/ja/)がわかりやすいかと思います。
プランのアップグレードをしない限りは有償になることがないので安心していじれますね。
フリープランでも有償の機能画面は見れたりするので、ひととおりボタンクリックして見てみるとよいかと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/53a72aa3-6924-2dc2-52d8-3ef6cda18b55.png)

##### 設定しておいた方がいい作業
以下はBot検証のためやっておいた方がよいかと思います。
- 他のテスト用アカウントを数名追加する（自分だけだとルームすら作れない...） [[ガイド]](https://guide.worksmobile.com/ja/admin/pc-admin-guide/manage-members/members/add-members/)
- トークルームを適当にいくつか作成
- モバイルにアプリをインストールしてログインしとく（ボット作るにはモバイルUIも知っといた方がよい） 
- 組織をいくつか作ってユーザーを所属　[[ガイド]](https://guide.worksmobile.com/ja/admin/pc-admin-guide/manage-members/organizations/add-organizations/)
- Bot登録作業するユーザーにはDevelopers権限を付与（初回登録したアカウントのままなら最高責任者になるので特に追加作業不要です） [[ガイド]](https://guide.worksmobile.com/ja/admin/pc-admin-guide/manage-members/administrator-authorities/manage-administrator-authorities/)

私はこんなユーザー構成にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/1acbef25-5855-2555-b6c5-6aac5f818804.png)

## Botの登録
Botアカウントは[LINE WORKS Developer Console](https://developers.worksmobile.com/jp/?lang=ja)から登録します。
##### Developwer Consoleログイン
[LINE WORKS Developer Console](https://developers.worksmobile.com/jp/?lang=ja)を開き、右上の[Developwer Condole]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/f4c337ec-e74b-d20d-5e54-14d051f68398.png)

>私はログイン情報のキャッシュ拾ってそのまま次画面に遷移しましたが、キャッシュ情報がなかった場合にはLINE WORKS認証画面が表示されますので、Developer権限保有しているアカウントでログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/c2ecfd9d-b46e-795b-2fb1-8a72ce8542ae.png)
Developer権限がない場合にはこのようなエラー画面になりますので[Admin画面](https://admin.worksmobile.com/admin)から権限設定[（権限設定ガイドこちら）](https://guide.worksmobile.com/ja/admin/pc-admin-guide/manage-members/administrator-authorities/manage-administrator-authorities/)してからもう一度Developer Consoleにログインしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/ee75b5f7-6ef8-f138-b1ad-2af4aaa76795.png)

利用規約画面に遷移しますので内容確認後、同意チェックして[利用する]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/21a73708-f498-5bf8-410b-779241616138.png)
これが LINE WORKS Developwer Console画面です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/f29f2179-d828-e174-90de-06ccb2dfaea5.png)

##### APIの発行とBot登録
[ドキュメントのこちら](https://developers.worksmobile.com/jp/document/3002001?lang=ja)に詳細説明ありますが、APIには2種類あります。
- Service API（ログインユーザー本人のデータのみアクセスできるAPI）
- Server API（ドメイン内すべてのユーザーデータにアクセスできるAPI）
どういうボットを作るのかによって利用するAPIが変わります。

今回は、誰かが何か発言したらそのトークルームに何か返すというBotを想定してましたのでServerAPIになるかと思います。（多分）
まずはAPI IDの発行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/5c78f8ad-7483-3ac3-0346-c99dd2b23a14.png)
ペロンと出てきて
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/cdfbdc46-ab0a-e5fd-ea4a-1cf6c86e7135.png)
発行完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/665fdaaf-e181-4316-46aa-2bc1424e2a2d.png)

で、次にServer API Consumer Key発行 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/1251529f-fbe6-568c-078d-8947e3b2cfda.png)
>※**LINE WORKS APIあるある**なんですが、「Service」と「Server」って見間違えやすいので注意です。

Step1でAPIの権限範囲を指定します。ここでは特に要件がないので全部チェックいれます。（後から変更可）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/eb502e43-8444-b34f-8a0f-2d3683d825a1.png)
固定IPタイプのサーバーの場合の発行するToken設定を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/66a14720-299f-dc91-5d78-36012a4fdaf2.png)
発行されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/a9175312-3c7f-b7b5-c3ff-e87c51ed3147.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/43f93f31-bb05-b933-6a31-f466cda5acf1.png)

次に、Server Listを登録します。今回はローカルで開発してボットサーバーに上げるので、そのタイミングでIPアドレスが変わってしまいますが、ローカル開発中は自分のパソコンのグローバルIPアドレスを登録することになります。
Server List（固定IPタイプ）の[追加]をクリックして
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/eef6049b-f0a6-5856-b2f6-aeb7cfef20ca.png)
Server List画面でサーバー名とグローバルIPアドレスを入力し、Keyをプルダウンから選択後、[発行]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/8a7ea511-a766-f6b6-2ba3-e3b7ab5d5e50.png)
ポップアップが表示されるので[OK]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/1bb9ca7d-9ca0-8b5c-6e95-fb5014b9cf48.png)
[同意して利用する]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/a5fb9fc7-d8b0-5053-2431-8c35bcd454e7.png)
はい。登録できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/bcc024d7-9205-9540-cddd-fcf0dce5447e.png)

##### Bot登録
APIが準備できた所で、Botアカウントの登録を行います。LINE WORKSは、LINEやSlackと同様でボットアカウントをチャット側で提供してくれます。
[Developer Console](https://developers.worksmobile.com/jp/console/openapi/main)の左メニューから[Bot]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/e813697d-7786-8d32-557e-58fdbc7ac0ad.png)
[登録]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/6f494efb-02a0-96db-c11d-70948eee4450.png)
Bot登録画面で該当する項目を埋めます。Callback URLは開発後でもいいですが、テストのため[ngrok使えば一時的に受信するhttpsのURLが発行できる](https://qiita.com/taketakekaho/items/b52a7ff840ad970a7a06)ので便利です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/0ab5fd70-a17f-56b4-2125-cdf36de3d053.png)
Botの管理者を自分に設定して[保存]します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/8e3045d9-2692-582a-9bd0-d541cb1f743d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/3fde79b9-d464-c043-5bab-4cbfcf8ced18.png)
Botのステータスが準備中になってますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/903b5df1-e433-c591-2ed2-e64aa997d575.png)
トークBotの状態の見方は[ここのドキュメント](https://developers.worksmobile.com/jp/document/3005001?lang=ja)にありますが、まだ今の状態だと私が作ったLINE WORKSのワークスグループに繋がってない状態です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/3534bf4a-65c4-54e1-7800-e0d959852833.png)

##### ドメインへのBot追加
ドメイン（ワークスグループ）に先ほど作ったBotアカウントを追加します。[Admin管理画面](https://bot-admin.worksmobile.com/)に戻り、上のメニューからサービス＞Bot＞追加をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/0bb6aefa-30cc-44b9-d05f-8d6c8dded32c.png)
先ほど作ったBotが表示されるのでチェックして[追加]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/52a4b6e3-ab3e-39fa-8a3a-e5349f8e78dc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/b1e57a73-aab5-f934-7415-8ce6dd551698.png)
追加されましたが、非公開になってますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/1493dde2-ecd5-36dc-0177-f2d2baf355af.png)
開き、公開設定にチェックを入れて[保存]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/1ccbfd9d-f9ec-7b56-997a-de86f44ce4ca.png)
公開になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/05090d77-8678-7d71-966d-8095e4cc5b1c.png)
チャット画面では管理者より通知されました。（これ通知しないという設定もどっかにありましたが開発用テナントなんで今回気にしない）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/96103031-cf95-96dc-8c54-195bb04f04d5.png)
Developer ConsoleのBot画面のステータスもサービス中に変わりました。問題なさそう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/aef0a929-427d-1342-adab-1d8ba0e04465.png)

これでLINE WORKSとBotアカウント、ローカル環境がつながりました。
動作確認はPostman使うのが便利かと思います。（詳しくは明日以降のアドベントカレンダーでも投稿ありそうな予感..期待！！）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/8250f225-0996-72c1-770c-adac7cff7b4b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/c2bacd0d-4d6d-ab23-9ddd-6210447a7663.png)


###### フリープランでAPIはどこまで使える？
ドキュメントの[ここ](https://developers.worksmobile.com/jp/document/300130001?lang=ja)に説明ありますが、フリープランだとBot10個までで、トークのみしか使えないです。
(´･ω･`)ｼｮﾎﾞーﾝ
kintoneみたいにDeveloperプランとかあったらなー...LINE WORKSさーん
壁|||ω｀）＜チラリ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178016/bd8736a6-0d93-4ae5-cdaa-32411a1d184f.png)

# まとめ
LINEWORKS側のセットアップからボット開発できるようになるまでをまとめました。次回は、実際のボット開発をまとめてみようと思います！
皆でこんなボット作ったよっていうのがあったら是非教えてください♪

# 参考になるURL
- [LINE WORKSガイド](https://guide.worksmobile.com/ja/)
- [LINE WORKS Developers Document](https://developers.worksmobile.com/jp/document?lang=ja)
- [LINE WOKRS Developers Community](https://forum.worksmobile.com/jp/)
- [LINE WORKSで初めてのBot開発！(前編)](https://qiita.com/tokotan/items/f615f4a62219d655436f)
- [LINE WORKS のトーク Bot API を Postman でサクっと試してみる](https://qiita.com/iwaohig/items/e1fffe5b2be3fe3fa9d0)