LINE公式アカウントのMessaging APIつかってみた

## はじめに

こんにちは！すぎもんです:grinning:

今回は、[LINE](https://line.me/ja/)公式アカウントのMessaging APIを使ってみます。

[HULFT Square](https://www.hulft.com/hulft_square)からREST接続でつなげます。HULFTSquareは、様々なシステムやサービスとつながり、様々なデータを"安心・安全・柔軟"に連携するためのプラットフォームです。

LINEのMessaging APIに興味がある方や、HULFT Squareをご存じの方はもちろん、HULFTやDataSpiderは聞いたことがあるが、HULFT Squareは聞いたことがない人も、是非ご一読ください！

## 今回やること

DataSpiderで[LINE公式アカウントのMessaging API](https://developers.line.biz/ja/docs/messaging-api/overview/)を使って、<strong>「ボットの情報を取得」</strong>します。ボット情報の取得APIは下記の通りです。

    GET https://api.line.me/v2/bot/info

## 検証手順
１．事前準備
　　　①Line Developersのアカウントとチャネルの作成
　　　②アクセストークンの発行
　　　③API認証情報の確認

２．HULFT Squareの設定
　　　④コネクションの作成
　　　⑤プロジェクトとスクリプトの作成
　　　⑥GET実行の設定

## 事前準備
##### ①アカウントとチャネルの作成

まずは、LINE公式アカウントのMessaging API を下記サイトより確認します。
[Messaging API](https://developers.line.biz/ja/services/messaging-api/)

LINE Developers という外部開発者向けのポータルサイトが用意されていました。
[LINE Developersログイン](https://account.line.biz/login?redirectUri=https%3A%2F%2Fdevelopers.line.biz%2Fconsole%2F)でアカウントを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/10a47ea7-22fd-14f7-85e3-3e50bd605e8c.png)
Line Developers コンソール画面のメニューから、【チャンネル作成】を行います。
「チャネル・タイプ」は、`Messaging API`で作成します。
「プロバイダー作成」の "プロバイダー" は、アプリを提供する組織のことで、法人であれば企業名、個人であれば個人名等を入れれば良いとのことでした。ここでは、「`test`」としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/066644eb-415a-2515-7de7-1dcb8aa39a6a.png)
「チャネル名」は、それぞれのサービス名なので、検証するサービス等が識別できるように`HULFT Square Test`としました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/be06e0b4-1273-b25e-24f4-fa00b1820257.png)

:::note warn
LINEのMessaging APIの各機能を使うには、チャネルの作成が必須で、
作成したチャネルから様々なAPIを利用できます。
:::

LINE Developersに「HULFT Square Test（ハルフトスクエアテスト）」というチャネルが作成できました。

※ブラウザ表示の「自動翻訳」で少々日本語が変ですが、自動翻訳の影響です※
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7b2d5e45-8da9-500d-a4a0-7cdecac17b7a.png)

##### ②アクセストークン発行
LINE開発者コンソールから、先程作成したチャネルを選択し、「Messagin API」設定画面でアクセストークンを発行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5f33906a-4848-8c2d-7fe0-3b30550866a3.png)
「発行」を押下して、アクセストークンを発行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/3815c837-32a9-048e-e3fa-293c8646c330.png)
LINEには、下記の通り3つのアクセストークンがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/aea3b6f0-b6ec-8232-19fe-70b0dec2fc95.png)
今回は、再発行可能な【長期のチャネルアクセストークン】を発行しました。

:::note warn
HULFT Square側の設定で必要になるので、メモしておいてください。
:::

##### ③API認証情報の確認
冒頭でも記載した通り、今回使用する「ボットの基本情報を取得するAPI」は下記です。
例）`curl -X GET \
-H 'Authorization: Bearer {channel access token}' \
https://api.line.me/v2/bot/info`

「Channel access token」には、先程発行した「チャネル・アクセス・トークン」を設定します。

:::note info
上記の情報は、HULFT Squareの「接続先の設定」と「GET実行の設定」で使います。
:::

## HULFT Square設定
##### ④コネクションの作成
今回はREST接続をするため、まずは<strong>”接続先”</strong>の設定をします。
HULFT Squareの接続先の設定は、「コネクションの作成」をします。

今回は、LINEのボット基本情報の取得するMessagingAPIを使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/1470d22c-5cb6-87bc-e5f3-d45025260957.png)
共通部分「`https://api.line.me/v2`」 をコネクションに設定します。今回使用するAPI固有の接続先URLの残り「`/bot/info`」は、後で、HULFT Squareのスクリプト作成時に設定します。

「DATA INTEGRATION」＞「コネクション」＞「新規追加」で設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/8fa648dd-3289-6653-96d0-c23f230b642e.png)
「`REST接続設定_Line`」という名前でコネクションを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/230c7ec3-1470-08d2-1f39-15bb24ba4791.png)
「URL」に`https://api.line.me/v2`と入力して、「接続テスト」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/eeef6bc5-aa35-12df-1b00-bc195d2a76f8.png)
接続テストをするための「Integrateサービス」と「プロファイル」を選択します。

:::note info 
Integrateサービスはジョブの実行やスクリプト実行で使用する実行エンジンです。
プロファイルはスクリプト実行時のリソース設定を切り換えるために使用します。
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/db951c23-2741-1b6d-df82-4cbb89ae5123.png)
接続テストに成功しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a3782d19-27dc-1a3d-6ea5-c42a37fcdbd8.png)
これでREST方式でHULFT Squareから接続するためのコネクションが作成できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f0ad6d7a-d973-1890-6ea1-99b34e083e09.png)

:::note warn 
Integrateサービスやプロファイルは用途に応じて柔軟に変更可能。
例えば、開発環境と本番環境でプロファイルを切り換えてテスト実施なども可能。
:::

##### ⑤プロジェクトの作成
データ連携のスクリプトを管理するために、まずはプロジェクトを作成します。

「DATA INTEGRATION」＞「プロジェクト」から「＋プロジェクトを作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/68b4b227-41b9-732c-eac8-af4c46a2651a.png)
プロジェクトの「名前」を`Line_Test`とし、
「スクリプトを作成」に`✓`を入れ、「スクリプト名」を`Line`にしました。
「ワークスペース」は「`Personal`」（個人用）にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f5e90592-ae7e-863e-a9da-4431d9aa6132.png)

:::note warn
「ワークスペース」は、目的などでグループを作成し、使い分けることが可能。
データ連携の用途や、組織構成等に応じて「ワークスペース」を活用できます。
:::
設定内容を確認して、「完了」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6d2a5b52-cb07-be3a-af6d-c4f45a3bda01.png)
下記の通り、ポップアップ画面が表示されます。
「プロファイル」「Integrateサービス」「プロジェクトのバージョン」を選択し、「デザイナーを起動」を押下して、デザイナを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/8fa6c54f-a8e2-3347-3ab1-50dd179069f7.png)
「プロジェクトの作成」で設定した名前で、「プロジェクト」と「スクリプト」が作成されていることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f195d6b3-3161-d90c-e7b3-e2acd4322ad9.png)

:::note warn
「プロジェクトの作成」では、そのプロジェクトに紐づくスクリプトが一つ作成されますが、デザイナ上でスクリプトの追加が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/43cb076d-db77-f0f5-4440-ef0032fa88b9.png)
:::

##### ⑥GET実行の設定
デザイナ画面の初期表示だと下記のような表示になっている場合があります。その場合は、プロジェクトエクスプローラに表示されているスクリプト「Line」をダブルクリックして、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/057a5a05-06f7-ac27-301c-650046c6050d.png)
スクリプトのデザイナ画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/32060808-70e2-68ec-0a96-b011f98cda1b.png)
デザイナ画面の右側にある「ツールパレット」から、[ネットワーク]-[REST]-[GET実行]で「GET実行」アイコンを選択しデザイナ上にドラッグ＆ドロップして設定画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6616cf88-0022-707b-d25e-0680acd9e411.png)

:::note warn
もし「ツールパレット」が表示されていない場合は、上部メニューバーの
「表示」＞「ツールパレットの表示/非表示」で表示を切り換えてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7b3756d7-ee8c-203e-97e7-a2c43640d649.png)
:::

GET実行の設定を進めましょう。まずは「必須設定」タブの設定です。

「接続先」は、冒頭で作成したコネクション「REST接続設定_Line」を選択します。
「パス」は、ボットの基本情報を取得するAPIより、「`/bot/info`」 を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/1af83e55-7b7f-9cd0-407d-7cb1ea1bdf85.png)
次に「レスポンス設定」タブです。
取得したボット情報をCSVに書き込む設定をします。HULFT Square内のストレージに作成されますので、任意のファイルパスを指定します。私は、「`/Personal/linetest.csv`」を指定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5441f023-b475-8ff3-4f8c-6c082422a643.png)
最後に、「ヘッダ設定」タブの設定です。
「リクエストヘッダ」に、事前準備で取得した「channel access token」を追加します。
　　・名前　　：　`Authorization`
　　・値　　　：　`Bearer {※取得したアクセストークン}`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7071a617-859a-6584-4263-89dd96d11394.png)
「完了」を押したらスクリプトの完成です。とてもシンプルなスクリプトになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/fb5ff8ce-8905-109c-6fed-b6d7803fd2fe.png)

## スクリプトの実行

作成したスクリプトを実行し、結果を確認してみましょう。
デザイナ上部のメニューツールバーにある蜘蛛マークの「スクリプトのデバック実行の開始/再開」アイコンを押下して、テスト実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ccde1fb4-eded-7a5c-c095-8c50fe50e89d.png)
ポップアップ表示が出て、スクリプトの実行に成功しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ad065fee-7be2-243a-ecd0-bfdc8f217379.png)

## テスト実行結果の確認

テスト実行した結果を確認します。

「サービス」＞「ストレージ」配下に、CSV書き込みで指定したファイル「`linetest.csv`」が作成されているのを確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/97fa7922-061e-b5e1-9e64-203509f1fa8f.png)
実行後作成されたファイル「`Linetest.csv`」を開くと、下記の通りです。
ボットの基本情報が取得できていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7b384bf7-418b-2ce5-661c-150c4afbd570.png)

## 最後に

いかがでしたでしょうか。今回はHULFT Squareで[LINE公式アカウントのMessaging API](https://developers.line.biz/ja/docs/messaging-api/overview/)を使ってみました。[LINE公式アカウントのMessaging API](https://developers.line.biz/ja/docs/messaging-api/overview/)では、他にも色々なAPIがありますし、同じGET実行で「プロフィール情報の取得」というものもあります。自分のLINE公式アカウントを登録している友達のプロフィール（ユーザー名やプロフィール画像などの）情報が取得できるので、こちらも同じようにやってみると、より活用の幅がありそうですね。

このブログでは、今後も様々なサービスとの接続検証や開発Tipsなどの様々なTopics記事を投稿していきたいと思います。

ここまでお読みいただきありがとうございました。それでは、また！