@php use Carbon\Carbon; use Illuminate\Support\Str; $tz = config('app.timezone', 'Asia/Tokyo'); $searchQ = $lineChatSearchQuery ?? ''; $friends = $lineChatFriends ?? collect(); $timeline = $lineChatTimeline ?? collect(); $selectedUid = $lineChatSelectedLineUserId; $selectedSub = $lineChatSelectedSubscriber; $selectedRow = $friends->first(fn (array $row) => (string) $row['line_user_id'] === (string) $selectedUid); $selectedDisplayName = is_array($selectedRow) ? (string) ($selectedRow['display_name'] ?? 'LINEユーザー') : 'LINEユーザー'; $selectedAvatarUrl = is_array($selectedRow) ? ($selectedRow['avatar_url'] ?? null) : null; $lineBotPictureUrl = $lineBotPictureUrl ?? null; $lineBotDisplayName = $lineBotDisplayName ?? null; $botInitial = Str::upper(Str::substr(trim((string) ($lineBotDisplayName ?: 'BOT')), 0, 1)); $chatHref = function (?string $uid = null) use ($account, $scenario, $searchQ) { $params = ['account' => $account, 'scenario' => $scenario, 'slug' => 'line-chat']; $qs = array_filter([ 'u' => $uid, 'q' => $searchQ !== '' ? $searchQ : null, ], fn ($v) => $v !== null && $v !== ''); $url = route('scenario.workspace.show', $params); if ($qs !== []) { $url .= '?'.http_build_query($qs); } return $url; }; @endphp @push('styles') @endpush @include('account.scenario.partials._line_webhook_delivery_alert', ['lineAccount' => $lineAccount ?? null])
左は Webhook で届いた user を最終メッセージ順に並べ、Messaging API でプロフィール(表示名・アイコン)を反映します。右は Webhook で届いたイベント(フォロー・受信メッセージ)と、monaka からの送信ログ(Messaging API push)および公式・別ツールで送った内容を手入力で残した記録です。LINE公式の画面だけで送った文面は Webhook に載らないため自動では出ませんが、下の「外部送信を記録」で時刻・本文を登録するとタイムラインに並びます。未読・ピン止めは準備中です。
LINE 公式の応答メッセージなど Webhook に載らない送信は、ここで送信日時・本文を残すと右のタイムラインに出ます(実際の LINE 送信は行いません)。