こなメル

学習したことのメモや、趣味について

PHPでLINE Messaging APIを使う

この記事は、
LINE Developersコンソールでチャネルを作成済み。
GitHubリポジトリを作成済み。
herokuにアカウントを作成済み。
であることが前提です。LINE Developersのチャネルはここからすぐに作成できます!
GitHublinebotという名前でリポジトリを作成しました。

環境

macOS Catalina バージョン 10.15.7
PHP 7.3.11
Composer 2.0.7

herokuでアプリを作成し、GitHubと連携する

linebot-echoappという名前でアプリを作成しました。

f:id:konakomoti:20201117231004p:plain
herokuでアプリを新規作成
f:id:konakomoti:20201117231550p:plain
GitHubと連携
f:id:konakomoti:20201117231706p:plain
自動デプロイを有効にする

LINE Messaging API SDKをインストールする

PHPファイルを作成し、LINE Messaging API SDKをインストールする

$touch index.php
$composer require linecorp/line-bot-sdk
とりあえずPHPファイルを編集しておきます。

<?php
echo "hello";

GitHubへpush。
git add .
git commit -m "first commit"
git push origin main

ここまで終了したら、ページを開いて先程作ったPHPファイルが反映されているか確認します。
herokuページ上部のOpen appをクリックするとページが開きます。

f:id:konakomoti:20201117231922p:plain
ページを確認
f:id:konakomoti:20201117232115p:plain helloと表示されていたらGitHubとの連携ができています!
このページのURLをメモしておいてください。
f:id:konakomoti:20201117232831p:plain
URL

Webhook URLを設定する

LINE Developersで作成したチャネル内で、

f:id:konakomoti:20201118002735p:plain
Webhook URLを設定する
Webhook URLに先程のURLを入力し、Use webhookをonにします。
同じページ内にあるChannel access tokenを発行します。
f:id:konakomoti:20201117233802p:plain
Channel access token
次に、Basic settingsタブChannel secretを確認します。
f:id:konakomoti:20201117233933p:plain
Channel secret
上記の
Channel access token
Channel secret
PHPファイル内で使用します。

botを友だちに追加

Messaging APIタブにあるQRコードから友だち追加しておきます。

メッセージをオウム返しする

送信したメッセージをオウム返しするコードをLINE Messaging API SDKQiitaの記事を参考に作成しました。

<?php
require('vendor/autoload.php');

use LINE\LINEBot\Constant\HTTPHeader;
use LINE\LINEBot\HTTPClient\CurlHTTPClient;
use LINE\LINEBot;

// Channel access tokenとChannel secretを設定
$channel_access_token = 'XXXXXXXXX';
$channel_secret = 'XXXXXXXXX';

$httpClient = new CurlHTTPClient($channel_access_token);
$bot = new LINEBot($httpClient, ['channelSecret' => $channel_secret]);

$events = $bot->parseEventRequest(file_get_contents('php://input'), $_SERVER['HTTP_' . HTTPHeader::LINE_SIGNATURE]);
$event = $events[0];

$bot->replyText($event->getReplyToken(), $event->getText());

GitHubへpushし、少ししてからLINEで確認してみてください。 f:id:konakomoti:20201118001505j:plain

公式ドキュメントで他様々なことが確認できます!

終わり

日本語のドキュメントがあるのにも関わらずとても苦労しました。。。
APIの知識も身につけていきたいです。