Production History
自社サイトの問い合わせフォームに届く営業メールを、アクセスログの解析、AIによる判定、送信者の行動記録という三段構えで仕分ける仕組みを作りました。お客様の環境ではなく自社を題材にしたので、調査の中身から実装の詳細まで公開しています。
読まずに届く営業メールを、ログとAIで仕分ける
株式会社デュクシ
すでにあったログから、「読まずに送っている」を数字にした
新しい仕掛けは一つも使っていません。Webサーバーのアクセスログには、いつ・どこから・どのページへのアクセスかが1行ずつ残っています。問い合わせの送信もここに残るので、それを起点に、同じ送信元の直前の足跡をさかのぼりました。
約4か月分、約1.6GBのログを集計した結果がこちらです。
• トップと問い合わせページしか見ていない:86%
• サービス紹介・制作実績まで見ている:3%
• フォームを開いてから10秒以内に送信:76件
• CSSや画像を一切読み込まずに送信:39件
10秒以内の送信は、人が文章を考えて書く時間ではありません。この時点で、注意書きを強める方向は捨てました。
AIで判定し、失敗に気づける作りにした
実は以前からAI判定の仕組みを入れていました。調べてみると、149件のうち142件が、AIの回答を一度も得ないまま素通りしていました。提供が終了したモデルを呼び続けており、そのエラーを検知していなかったためです。
悪いのは後者です。失敗してもメールは普通に届くので、外からは正常に見えます。作り直しでは、判定の精度と同じくらい「壊れたときに気づけること」を重視しました。
• モデル名を管理画面から変更できるようにし、提供終了で止まらないようにする
• 判定理由をメールとログに残す
• エラーを検知したら件名に印を付けて届け、直近のエラーを管理画面に出す
• 接続テストをいつでも実行できるようにする
営業と判定したものも破棄しません。件名に印を付けて届け、振り分けはメールソフトに任せます。過去の問い合わせ40件で検証し、判定できた30件はすべて正しく判定されました。
ブラウザ以外からの送信を見分けて止めた
判定の材料が本文だけでは足りないと考え、小さなJavaScriptで、サイト内で見たページと滞在時間、フォームを開いてから送信までの時間、キー入力と貼り付けの回数を記録するようにしました。
記録が届き始めると、営業送信が2つの型に分かれることが分かりました。問い合わせページだけを開き、28秒、キー入力7回と貼り付け2回で送ってくる人。そして、JavaScriptが一度も動かない、ブラウザですらない何かです。
後者をログで追うと、ページのHTMLだけを取得し、CSSも画像も一切読み込まず、20〜30秒待ってから送信していました。送信が速すぎるものを弾く対策を、意図的にすり抜けています。
この特徴を使って、行動記録が取れない送信を受け付けないようにしました。ただし、本物のお客様を弾くリスクは残ります。ブロックした送信も消さずに記録として残し、件数を管理画面に出し、送信者には理由を伝える。そして、問題が起きたら即座に止められるようにしてあります。