MCJ Quote Bot - 反応ロジック

見積もりBotがどのメッセージに反応するかの判定ロジック整理

判定フロー

1
料金キーワードがある?
「見積」「料金」「いくら」etc → 反応する(ルートなくても聞き返す)
2
矢印ルートがある?
羽田→千歳 羽田↔️松山 HND->CTS etc → 反応する
3
ICAOコードのルートがある?
RJTT - RJCC RJTT RJCC RJTT→RJCC反応する
4
「から」ルート + キーワード?
羽田から千歳 + 「料金」or「空いてますか」 → 反応する
羽田から千歳のフェリーを撮影…(キーワードなし)→ スルー
5
「発・着」ルート + キーワード?
羽田発・屋久島着 + 「可能ですか」 → 反応する
キーワードなし → スルー
いずれにも該当しない
スルー

判定式(コード)

hasPriceKeyword // 料金キーワード単独でOK
|| hasArrowRoute // 矢印ルート単独でOK
|| hasIcaoRoute // ICAOルート単独でOK
|| (hasRoute && hasAvailKeyword) // 任意ルート + 空き確認
|| ((karaRoute || hatsuChaku) && (hasPriceKeyword || hasAvailKeyword)) // から/発着はキーワード必須

キーワード一覧

料金キーワード 単独で反応

見積 料金 いくら 金額 費用 価格 チャーター おいくら 追加料金 追加費用

空き確認キーワード ルートと組み合わせで反応

空き 空いて 空いてる 埋まって 利用可能 機体.*可能 可能でしょうか 可能ですか 運航可能

ルートパターン

パターン単独反応
矢印 → ➡ > - ~ 羽田→千歳 HND->CTS OK
双方向矢印 ↔ ↔️ ⇄ ⇔ ⇆ 羽田↔️松山 OK
ICAOコード RJ** - RJ** RJTT - RJCC RJTT RJCC OK
「から」○○から○○ 羽田から千歳まで キーワード必須
「発着」○○発○○着 羽田発・屋久島着 キーワード必須

空港名の認識

形式備考
正式名新千歳 中部国際92空港対応
通称・別名羽田 伊丹 セントレア 関空 小牧主要空港の通称
ICAO 4レターRJTT RJCC ROAH大文字・小文字どちらもOK
IATA 3レターHND CTS NGO大文字・小文字どちらもOK
英語名Haneda Narita部分一致

名古屋の区別

空港ICAOIATA認識する名前
中部国際空港(セントレア) RJGG NGO 中部 / 中部国際 / セントレア
名古屋飛行場(小牧) RJNA NKM 名古屋飛行場 / 小牧 / 県営名古屋

日数の聞き返し

ルートが判定できたが日数が不明な場合、以下の選択肢を提示:

選択日数復路
① 1日(片道)1日なし
② 1日(往復)1日自動追加
③ 2日(往復)2日自動追加
④ 3日(往復)3日自動追加
⑤ 4日(往復)4日自動追加

番号(①〜⑤)、テキスト(「2日」「片道」「1泊2日」)どちらでも返信可


反応マトリクス(実例)

メッセージ例反応理由
羽田→千歳 2泊3日 反応 矢印ルート
羽田↔️松山 1泊2日 反応 双方向矢印ルート
RJTT - RJCC 8pax 反応 ICAOルート
見積もりお願いします 反応 料金キーワード(ルート聞き返し)
羽田から千歳 いくらですか? 反応 「から」+ 料金キーワード
羽田発・屋久島着 空いてますか? 反応 「発着」+ 空き確認キーワード
10/5は機体空いてますか? スルー ルートなし(空き確認のみ)
羽田から八尾のフェリーを撮影に… スルー 「から」だがキーワードなし
お世話になっております スルー 該当なし
5/21-22 決定でお願いします スルー 予約確定(見積もりではない)

現在未対応のパターン

パターン理由
日付+場所のみ(矢印なし) 11/15 羽田関空 ルートパターンにマッチしない
写真添付の見積もり依頼 スクショ + 「空きありますか?」 画像内テキストは読めない
複数行にまたがる依頼 1行目: 挨拶 → 2行目: ルート 1メッセージ内なら対応済み。別メッセージは未対応
英語フォーマット Depart: 8 March RJTT ICAOルートは対応。Depart/Return等は未対応
ルートなしの空き確認 28日まだ空いてますか? ルートが不明なため判定不可

Last updated: 2026-03-25 | mcj-shift-api worker