LINE Messaging APIを使ってみた登録~応答メッセージまで

開発API,LINE

今更ながらLINEのMessagingAPIを使ってメッセージの自動応答をやってみたいと思います。

事前準備

1.LINEアカウントの作成

既に利用しているLINEのアカウントで大丈夫です。

LINE使ってない場合はアカウントを作成してください。

2.サーバー(SSL必須)

LINE Debelopersのドキュメントでは、Herokuを使ってサンプルボットをデプロイしていましたが、 私は既に開発用のサーバーがあるのでそちらを使いました。

サーバーを用意せずHerokuを使って試してみたい方はLINE Debelopersのドキュメントを参照してください。

注意店は一つでhttps通信が必須となります。後で説明しますがWebhookを受信するためのWebhookURLにはhttpsしか指定できない為必ず必要です!

Webhookとは

LINE公式アカウントの追加や、 LINE公式アカウントにメッセージを送ったりすると、そのイベント内容がLINEプラットフォームからHTTP POSTリクエストとして送られてきます。

3.チャネルの作成

LINE DevelopersへあなたのLINEアカウントを使ってログインし『開発者登録』『新規プロバイダーの作成』『チャネル作成』を行って下さい。

※プロバイダーに関してはすでに公式アカウントを持っている場合は不要です。

チャネル作成画面
チャネル作成時の指定

Channel typeは : Messaging APIを選択してください。
Provider : Messaging APIを利用するプロバイダーを指定してください
Channel name:なんでもいいです
Channel description:どんなチャンネルかの説明なので『テストボット』とかでいいです。
Category:カテゴリーは当てはまるものにしてください。
Subcategory:カテゴリーに関連する候補が表示されるので適切なものを選択してください。
Email address:使えるアドレスならなんでもいいです。
Privacy policy URL:とりあえず未入力でOK
Terms of use URL: とりあえず未入力でOK

規約同意のチェックを二か所チェックしてCreateを押して作成完了です。

4.友達追加

チャネル作成完了後、下記のページが表示されるので、Messaging APIをクリックしてください。

少しスクロールした所にQRコードがあるのでLINEアプリで読み取り友達追加してください。

5.Webhook URLの指定

Messaging APIページをスクロールするとWebhook settingsがあるのでEditを押し、Webhook URLを指定します。

URL入力後、Updateを押してし下さい。

次に、Verifyを押しWebhook URLの確認を行います。

確認を押す前の準備

確認を行う前にWebhook URLに指定したファイルをサーバーに配置しておく必要があります。
中身真っ新で大丈夫なので新規phpファイルとしてlinebot.phpを作成し配置してください。

■ディレクトリ構成
https://〇〇〇〇.com/
└ line/
  └linebot.php

確認成功した場合下記画像のようにSuccessと表示されます。

確認エラーの場合、Erroと表示されます。

エラーが発生した場合は、一つ一つ確認してみましょう!

エラーの場合の確認内容

1.https通信(SSL)を設定しているか?
 使用しているレンタルサーバーに無料でもいいのでSSLを適用しているか?
2.Webhook URLは、正しく指定できているか?
 ディレクトリ名、PHPファイル名の誤字はないか
 ※サーバーによってポート番号の指定が必要な場合もあります。
3.2で指定した場所に、正しくディレクトリ、PHPファイルが存在すか?
 Webhook URLに指定したURLをブラウザで開いて確認してみる
4.外部から参照できるディレクトリ内に配置しているか?

それでもエラーが返ってくる場合、利用しているサーバーやSSLの問題があるかもしれません。
環境を変えてトライしてみましょう。

6.Webhookの有効化

Webhook URLの設定後、Use webhookの設定が表示されるので有効にしてください。

注意!!

既にLINE公式アカウントを運用されている方は、LINE Official Account Managerのチャット機能を利用している方もいると思いますが、Webhook機能を有効にする場合は、応答モードをBotに変更するためチャット機能が使えなくなるのでご注意ください!!

7.チャンネルアクセストークンの発行

チャネルアクセストークンはメッセージ送信時に必要なので必ず取得してください。

Webhook URL指定をしたのと同じページ(Messaging API)の最下部にChannel access tokenがあるのでIssueをクリックしてチャンネルアクセストークンの発行を行います。

発行されたアクセストークンはメッセージ送信時に使用するのでメモしておいてください。

8. チャンネルシークレットの取得

Channel secret(チャンネルシークレット)は、WebhookのリクエストがLINEプラットフォームから送られたことを確認するために使用します。

Basic settingsをクリックしてください。

Basic settingsページを下へスクロールするとChannel secretがあるのでメモしておいてください。

動作サンプル(PHP)

それでは、取得した『チャンネルアクセスキー』と『チャンネルシークレット』を使って動かしてみましょう。

単純にメッセージの受信とそれに対するメッセージ返信だけを行うので、 linebot.phpファイル内に下記の様に実装してました。

最初の方で署名の検証をを行っていますが、これをしなくてもメッセージを受信することは可能です。

その場合、自分の作成したチャンネルからのメッセージかは不明なものになります。

例えば、あなたのWebhook URLが第三者に漏洩した場合、その人がチャンネルを作成しWebhook URLにあなたのURLを指定するとそのメッセージも受信出来てしまうのです。

なので署名の検証はちゃんと実装しておくことをお勧めします。

実装後は、友達追加した自分のチャンネルに対してメッセージを送ってみてください。

下記の様な動きをすれば成功です!

私だけ?

メッセージ受信は出来ても返信を行うと400エラーが発生しなかなか解決しませんでした。
翌日同じプログラムを再度実行したら何の問題もなく返信を行うことが出来ました。
同様の症状が出た方は、一日待ってみるといいかもしれません。

感想

自動応答するだけなのでそこまで難し事はなかったです。

躓く所があるとすればWebhook URLの確認ぐらいですかね。

SSLの問題かはっきりしませんがここで躓いてる人が多いように思います。

今回はここまでになります。

不明な点があれば気軽にコメントください。

それでは

開発API,LINE

Posted by takabou