LINE WORKS Developersでできること

**追記**
**2023年版はこちら↓**

https://qiita.com/mmclsntr/items/064f1d6fd7f82e4a261a 

----

これは LINE WORKS Advent Calendar 2022 の 1日目の記事です。

アドベントカレンダー初日ということで、改めてLINE WORKSの開発者向け機能ってどういうものがあって何ができるのかをまとめてみたいと思います。
具体的な実装の話は他記事参照ということで、入門的な内容としてざっくりと各機能紹介をしようと思います。

# LINE WORKS Developersとは
普段のLINE WORKSに+αするための開発機能が提供されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/8c2e9b0c-ac0b-51d4-d332-4c820568909b.png)


これを利用することで、LINE WORKS上の一部作業の自動化や、他のサービスとをつなぐ連携の仕組みを実現できます。

## これを使うと何が嬉しいか
LINE WORKSのDevelopers機能は連携の口として存在しています。それを使うことによりLINE WORKSと他システムとの間にシナジーが生まれ、LINE WORKSだけではできないより高度なことの実現を期待できます。
特にLINE WORKSのAPIやBotは、LINE WORKSを起点とした**より幅広い業務改善・効率化を実現**するために活用されます。

また、社内サービスやその他外部サービスなど、普段の仕事で複数サービスを使っている場合には、フロントエンドをLINE WORKSにまとめることができ、複数アプリを行ったり来たりするようなことのないシンプルな形にもなります。
結果として**多くの業務をLINE WORKS上に集約させることができ、利便性や生産性の向上**にもつながります。

## 外部サービスと連携したい時は
もし勤怠管理や顧客管理、ファイル管理等で普段何か他のクラウドサービス使っているような場合に、これらをLINE WORKSと連携させて利便性を高めたいといったことも考えられると思います。その際には、Developers機能を使って一から開発しなくとも既にいくつかの外部サービスとの連携が用意されています。それらを活用すれば簡単にLINE WORKSとの連携を実現できます。

現在100以上の連携ソリューションが提供されています。どんなサービスとの連携が用意されているのかは以下のページで参照ください。

https://line.worksmobile.com/jp/feature/integration/

また、より簡単に利用できる「アプリディレクトリ」という連携アプリのためのマーケットプレイスも提供されています。こちらにもさまざまな連携ソリューションが用意されており現在拡大中です。

https://line.worksmobile.com/jp/appdirectory/

# 各Developers機能紹介
## 主な機能
Developers機能としては以下のものがあります。

- **[Bot](https://developers.worksmobile.com/jp/reference/bot?lang=ja)**
    - LINE WORKSのトークルーム上で動くチャットボット。
- **[API](https://developers.worksmobile.com/jp/reference/introduction?lang=ja)**
    - LINE WORKSとの連携アプリを開発するためのWeb API。
- **[App Link](https://developers.worksmobile.com/jp/document/300190001?lang=ja)**
    - LINE WORKSの特定のサービスを開くUniversal Linkの機能。
- **[SSO](https://developers.worksmobile.com/jp/document/1001070201?lang=ja)**
    - LINE WORKSへのSSO (Single Sign On) を実装する機能 (SAML)。

このうち「Bot」「API」についてもう少し説明します。

## [Bot](https://developers.worksmobile.com/jp/reference/bot?lang=ja)
Botは、トークで利用できるチャットボットの機能であり、このBotを通じてさまざまなシステム連携を実現できます。

<img src="https://line.worksmobile.com/jp/wp-content/uploads/img-bot-02@2x.png" width=50%>

### 機能
LINE WORKSのBotは、テキストでの会話はもちろん、スタンプやファイルなど、様々なメッセージタイプに対応しています。

主なメッセージタイプ
- テキスト
- スタンプ
- 画像
- ファイル
- 位置情報 (ユーザーから送信のみ)
- [Flexible Template](https://developers.worksmobile.com/jp/reference/bot-send-flex?lang=ja) (Botから送信のみ)
    - レイアウトを自由にカスタマイズできるメッセージ。下の画像参照。

Flexible Template
<img src="https://developers.worksmobile.com/document/image/276_EN/525" width=50%>

詳細: 

また、入力方法もキーボード入力だけでなく、「リッチメニュー」や「Quick reply」といった入力を補助する機能も備わっています。

リッチメニュー
<img src="https://developers.worksmobile.com/document/image/314_EN/563" width=30%>

Quick reply
<img src="https://developers.worksmobile.com/document/image/315_EN/564" width=30%>

### 活用
このBotにより、トークをインターフェースとしたチャットベースのアプリケーションをLINE WORKS上に実装でき、システム連携の窓口として活用されています。

例: 

- 商品マスターBot
    - トークを通じて商品コードや商品名から商品内容を検索。
- 売上管理システムBot
    - 日次の売り上げ結果などを定期的にトーク上へ配信
- 監視カメラBot
    - 違反を検知したらその画像と一緒にトークへ通知。
- 安否確認Botなど
    - 緊急時や定期連絡として安否確認メッセージをトークへ自動送信。

前述した外部サービス連携のほとんども、このBotを用いたアプリケーションとして提供がされています。

### 構成イメージ
Bot開発の参考として、簡単に構成についてまとめると以下の図ようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/7346fdbb-f87b-fd06-3210-c47025d296b7.png)

LINE WORKS側の環境では、Botのインターフェースのみが提供されており、チャットボットサーバーは開発者側の環境にて構築・展開します。ユーザーがトークから送ったメッセージはBotサーバーを経由して開発者環境のチャットボットサーバーへcallbackされ、その内容に応じて生成された返答メッセージをLINE WORKS APIを通して返す流れになります。

## [API](https://developers.worksmobile.com/jp/reference/introduction?lang=ja)
次にAPIについてです。

APIは、LINE WORKSとの連携アプリを開発するためのWeb APIであり、無料で提供されています。

### 機能
利用可能なAPIはLINE WORKSのプランによって異なります。例えば「フリープラン」の場合は以下の機能がAPIを通して利用可能です。

- **Bot**
    - Botの設定やメッセージ送信など
- **カレンダー**
    - カレンダーの作成、予定の追加・取得など
- **掲示板**
    - 掲示板の作成、投稿・コメントなど
- **アドレス帳** (参照のみ)
    - 連絡先の参照など
- **メンバー設定** (参照のみ)
    - メンバー・グループ・組織の参照など

#### 注意
2022/12/1現在、LINE WORKS APIには２バージョン存在しています。

- API 1.0 ※ 非推奨
    - **旧バージョンのAPI**。現在非推奨です。
    - 今後、新機能追加や仕様変更は行われません。
    - 提供終了日 **2023/4/30**
- **API 2.0**
    - リニューアルされた新バージョンのAPI。
    - 2022/04に正式リリースとなりました。

それぞれ互換性はもっていません。**現在はAPI 2.0をお使いください。**

### API実行の流れ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/b91db491-7dae-56b5-7ef3-167ea0c10a00.png)

APIリクエストのためにまずはアクセストークンの発行が必要です。

### APIのアクセストークン取得方法について
アクセストークンの取得には「**User Account認証**」「**Service Account認証**」の2種類存在します。それぞれアクセストークン取得プロセスに特徴があるため、用途にあった認証方式を利用します。

| | [User Account認証](https://developers.worksmobile.com/jp/reference/authorization-auth?lang=ja) | [Service Account認証](https://developers.worksmobile.com/jp/reference/authorization-sa?lang=ja) |
|---|---|---|
|概要|LINE WORKSユーザー(User Account)で認証を行い、アクセストークンを発行|アプリ専用の仮想管理者アカウント(Service Account)で認証を行い、アクセストークンを発行|
|認可方式|OAuth 2.0 (Authorization Code Grant)に準拠|OAuth 2.0を拡張したJWTベースの認可方法。|
|付与される権限|認証を行ったユーザーの権限の一部をアクセストークンに委任する。権限範囲はOAuth Scopeで制御される。|管理者権限の一部をアクセストークンに委任する。権限範囲はOAuth Scopeで制御される。|
|流れ|ユーザーでログインを行い、アクセストークンを発行。|Service Accountの情報を利用してJWTを生成し、それを元にアクセストークンを発行|
|用途|スマホアプリやWebアプリ上にAPI連携を組み込む場合。|チャットボットやバッチ処理などシステムがAPIを利用する場合。|


# まとめ
今回は入門的な内容として、簡単にですがDevelopers機能を使うとどういうことができるのかや機能概要についてまとめてみました。
Developers機能の詳細を知りたい場合は、以下の開発者ドキュメントも参照ください。

https://developers.worksmobile.com/jp/?lang=ja

コミュニティフォーラムもあります。

https://forum.worksmobile.com/jp/

LINE WORKSの可能性を広げるDevelopers機能をぜひご活用ください。