LINE公式アカウント作成&Webhook設定
LINE Developersを表示。
「コンソールにログイン」をクリック。
「LINEアカウントでログイン」をクリック。
プロバイダーの「作成」をクリック。
プロバイダー名を入力して「作成」をクリック。
「Messaging API」をクリック。
必須項目を入力し「作成」をクリック。
「OK」をクリック。
「同意する」をクリック。
「同意する」をクリック。
「LINE Official Account Manager」をクリック。
別タブで開いた「LINE Official Account Manager」の左メニューの「応答設定」をクリック。
「Webhook」をON、「応答メッセージ」をOFFにする。
LINE Developersタブに戻る。
「Messaging API設定」をクリック。
「Webhook URL」にPOST先URLを入力して「更新」をクリック。
メッセージ受信時はもちろん、友だち登録、解除時にも通知される。
Laravel側
use Illuminate\Http\Response;
class xxxxController extends Controller
{
public function yyyy(Request $request)
{
$values = $request->all();
// 何らかの処理
return response(null, Response::HTTP_OK);
}
}
Laravel側注意点
1.GETではなくPOSTで通知されるので、POSTのルートを設定しましょう。
2.Webhook通知はCSRFを無効にする必要があるので
\app\Http\Middleware\VerifyCsrfToken.phpの$exceptに通知されるURLを記述しましょう。
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'/xxxx/yyyy'
];
}
例)通知される内容
友だち登録
array (
'destination' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'events' =>
array (
0 =>
array (
'type' => 'follow',
'webhookEventId' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'deliveryContext' =>
array (
'isRedelivery' => false,
),
'timestamp' => 1692499283591,
'source' =>
array (
'type' => 'user',
'userId' => 'xxxxxxxxxxxxxxxxxxxxxxxx',
),
'replyToken' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'mode' => 'active',
),
),
)
友達削除
array (
'destination' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'events' =>
array (
0 =>
array (
'type' => 'unfollow',
'webhookEventId' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'deliveryContext' =>
array (
'isRedelivery' => false,
),
'timestamp' => 1692499173688,
'source' =>
array (
'type' => 'user',
'userId' => 'xxxxxxxxxxxxxxxxxxxxxxxx',
),
'mode' => 'active',
),
),
)
メッセージ受信通知
array (
'destination' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'events' =>
array (
0 =>
array (
'type' => 'message',
'message' =>
array (
'type' => 'text',
'id' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'text' => '〇〇〇〇〇〇〇〇',
),
'webhookEventId' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'deliveryContext' =>
array (
'isRedelivery' => false,
),
'timestamp' => 1692495509410,
'source' =>
array (
'type' => 'user',
'userId' => 'xxxxxxxxxxxxxxxxxxxxxxxx',
),
'replyToken' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'mode' => 'active',
),
),
)
1件のコメント