WhatsAppチャットボットのループを止める方法:再試行の上限、フォールバック、そして出口
「申し訳ございません、理解できませんでした。選択肢からお選びください。」1回なら問題ありません。3回続くと、お客様は離脱します。カウンター、フォールバックの分岐、引き継ぎのルールで、ループするボットを「止まりどころを知っているボット」に変えます。
MonoChatチーム 更新日: 1 分で読めます
目次
WhatsAppチャットボットがループするのは、お客様の回答を理解できないまま、同じ質問を繰り返し続けるときです。止めるには、すべての質問に想定外の回答を受け止めるフォールバックの分岐を用意し、ボットが何回尋ねたかを数え、2〜3回で会話履歴を添えて担当者に引き継ぎます。MonoChatでは3つのノードで実現できます。出力「その他の場合」を持つ質疑応答、回数を数えるフロー変数を設定、そして回数を判定して会話を割り当てるにつなぐ If です。
本ガイドでは、WhatsAppでループが起きる理由、フォールバックの設計、再試行の上限を作る手順を順に解説します。
ループするボットは、節約した以上のコストを生む
ボットは、完結した会話ごとにコストを削減します。一方で、お客様を閉じ込めた会話では、その分を失います。2026年4月のCalifornia Management Reviewの記事で、Yuqing Ren氏とRongjin Zhang氏が関連する調査をまとめています。
- 複数の調査で、回答者の**53〜77%**がチャットボットで不満や不快な体験をしたことがあると回答しています。
- Gartnerが5,728人のお客様に実施した調査では、**64%**が「企業はカスタマーサービスにAIを使わないでほしい」と答え、**53%**がそれを理由に競合他社への乗り換えを検討すると答えました。
- 同じGartnerの調査では、カスタマーサービスの問題のうちセルフサービスで完全に解決されるのは**14%**にとどまっています。
- **70〜80%**のお客様は、人間の担当者とのやり取りを好みます。
著者らは、不満の主な原因の1つとして「チャットボットのループ」を挙げています。引き継ぐ代わりに、ボットが質問を重ね、同じ情報を繰り返し、謝り続ける状態です。また、小さな不快感を信頼の喪失に変えてしまう要因として、「担当者への簡単な道がないこと」も指摘しています。
これはボットを否定する話ではありません。止まりどころを知っているボットを作ろう、という話です。
WhatsAppのボットが行き詰まる理由
WhatsAppのボットの多くは、返信ボタンやリストを使ったメニュー形式です。形はMetaの上限で決まります。返信ボタンのメッセージは最大3個のボタンで、各20文字まで。リストメッセージは全セクション合わせて最大10行で、各行のタイトルは24文字までです。この範囲内でも、お客様はメニューが想定していない行動を4つ取ります。
- タップせずに入力する。 「2番目」「配送」「2」など。
- 別の質問に答える。 ボットが注文番号を尋ねているのに、荷物の写真を送ってくる。
- メニューにない内容を書く。 「追跡」「返品」「お問い合わせ」というメニューに「届いた商品が壊れていました」と書く。
- 後から戻ってくる。 昨日ボットが尋ねた質問に、今日になって返信する。
これらをすべて「無効です。もう一度選んでください」と扱うボットはループします。それぞれに対応を用意したボットは、ループしません。
WhatsApp自身のルールも同じ方向です。WhatsApp Business メッセージングポリシーは24時間ウィンドウ内の自動化を認めていますが、企業は「迅速で、明確かつ直接的なエスカレーション手段(prompt, clear, and direct escalation paths)」を用意しなければならないと定めています。チャット内での担当者への転送、電話番号、メール、ウェブサポート、店舗への来店、サポートフォームなどです。
MonoChatが回答を読み取る仕組み
上限を作る前に、質疑応答ノードが返信をどう扱うかを知っておくと役立ちます。
- タップされたボタンやリストの行は、その選択肢の出力に進みます。
- 入力された文字は、選択肢のタイトルと比較されます。どれかに十分近ければ、その選択肢として扱われます。「注文を追跡したい」は「注文を追跡」ボタンに対応します。
- 数字は、その位置の選択肢を選びます。「2」なら2番目のボタンや行です。
- それ以外(どれにも一致しない文字、写真、音声メッセージ)は、ノードのその他の場合の出力に進みます。
つまり、ループの原因は照合ではなく、その他の場合に何をつないでいるかです。上限を設けずに同じ質問へ戻してしまうと、ボットは永遠に聞き続けます。
再試行の上限を作る手順
例として、オンラインストアの配送に関するメニューを使います。お客様は注文を追跡、商品を返品、その他から選びます。
1. 質問を設定する
- 設定 › オートメーション › フローを開き、ボットのフローを開くか、新しく作成します。
- 質疑応答ノードを追加し、質問文と3つのボタンを設定します。ボタンのタイトルは短く、互いに区別しやすくしてください。似たタイトルがあると、入力された文字の照合が難しくなります。
- 各ボタンの出力を、そのトピックの分岐につなぎます。
2. 試行回数を数える
- フロー変数を設定ノードを追加し、質問のその他の場合の出力をつなぎます。
- 行を追加します。名前は
attempts、操作は増やす、値は1です。値が空でも1として数えられ、まだ存在しない変数は0から始まるため、最初の想定外の回答で1になります。 - 行は順番に実行されます。お客様が書いた内容を残したい場合は、2行目を追加し、
last_answerをテキストとして{{message.text}}から設定します。
3. 聞き直すか、引き継ぐかを判定する
- フロー変数を設定の後に、If ノードを追加します。
- 条件でフローグループを開き、フロー変数の値を選びます。
attempts、以上、2です。 - False を、よりわかりやすく聞き直すメッセージを送信ノードにつなぎ、その後質疑応答ノードへ戻します。
- True を、手順4の引き継ぎにつなぎます。
2回目は、1回目と同じ文言を繰り返さないようにします。ボットにできることを伝え、選択肢をもう一度見せます。
申し訳ございません。こちらでは次の3つについてご案内できます。ボタンをタップするか、番号を入力してください。 1 注文を追跡 · 2 商品を返品 · 3 その他
4. きちんと引き継ぐ
- True の分岐に会話を割り当てるノードを追加し、配送に関する問い合わせを担当するチームまたは担当者を選びます。
- その前にメッセージを送信を置き、この後どうなるかをお客様に伝えます。「担当者におつなぎします。このチャットの内容は担当者にも表示されますので、もう一度ご説明いただく必要はありません。」
- 勤務時間を設けている場合は、先に勤務時間内の If を追加します。時間外であれば、今すぐ対応すると約束するのではなく、いつ担当者が返信するかを伝えます。
担当者は、ボットが一致させられなかった回答も含め、会話の全体をチーム受信トレイで確認できます。
5. 「その他」に本当の出口を用意する
「その他」は、ループに最もつながりやすいボタンです。メニューでは答えられない自由入力の質問が始まるためです。別のメニューにつなぐのではなく、会話を割り当てるに直接つなぐか、自由入力を読み取れるAIのステップにつないでください。
会話の例
お客様: こんにちは、届いた荷物が破損していました
ボット: こんにちは、佐藤様。こちらではご注文に関するご案内ができます。ご用件をお選びください。 [注文を追跡] [商品を返品] [その他]
お客様: 壊れてるんです
ボット: 申し訳ございません。こちらでは次の3つについてご案内できます。ボタンをタップするか、番号を入力してください。 1 注文を追跡 · 2 商品を返品 · 3 その他
お客様: (箱の写真を送信)
ボット: 担当者におつなぎします。このチャットの内容は担当者にも表示されますので、もう一度ご説明いただく必要はありません。
担当者: 佐藤様、担当の田中です。荷物が破損した状態で届き、申し訳ございません。お送りいただいた写真を確認いたしました。すぐに交換品を手配いたします。
試行は2回、引き継ぎは1回で、写真はすでに担当者の手元にあります。
ボットがAI エージェントの場合
AI エージェントは自由入力を読み取れるため、ボタンでのループは起きにくくなりますが、同じところを回り続けることはあります。お客様がすでに伝えた内容を再び尋ねたり、役に立たなかった回答を繰り返したりする場合です。次の2つの考え方はそのまま使えます。
- 実行を制限する。 MonoChatのAI エージェントノードは実行予算の範囲で動作し、完了、予算超過、タイムアウト、失敗時のいずれかで次に進みます。完了以外のすべての出力を担当者につないでください。
- やり取りの回数を数える。 同じフロー変数を設定のカウンターは、AIのステップの前後でも使えます。お客様が返信するたびに
ai_turnsを増やし、決めた回数に達したら引き継ぎます。引き継ぎのメッセージとルーティングについてはAIから人への引き継ぎのガイドで詳しく解説しています。また、お客様より先にAIが答えられない質問を見つける方法は、公開前のAI エージェントのテストをご覧ください。
チェックリスト
- すべての質疑応答ノードで、その他の場合の出力がつながっている。
- その分岐で、フロー変数を設定ノードが
attemptsカウンターを増やしている。 - フロー変数の値を使った If ノードが、聞き直すか引き継ぐかを判定している(2〜3回)。
- 2回目は言い回しを変え、選択肢を番号つきで示している。
- 「その他」は、別のメニューではなく担当者かAIのステップに直接つながっている。
- 会話を割り当てるが適切なチームに会話を送り、次に何が起きるかを伝えるメッセージを添えている。
- 勤務時間外は、いつ担当者が返信するかをボットが伝えている。
- AIのステップでは、予算超過、タイムアウト、失敗時を担当者につないでいる。
はじめるには
再試行の上限は、ノーコードのワークフロー自動化ビルダーで作成できます。app.monochat.aiで無料のBasicプランから始められます。あわせて、WhatsAppチャットボットの作り方のガイドと、WhatsAppインタラクティブメッセージの選択肢もご覧ください。
参考資料
- Yuqing Ren and Rongjin Zhang, “Chatbot Frustration is Real: Hidden Costs and Best Practices”, California Management Review Insights, 2026年4月28日(2026年11月3日閲覧、英語)
- WhatsApp Business メッセージングポリシー(2026年11月3日閲覧)
- インタラクティブ返信ボタンメッセージ(Meta for Developers)(2026年11月3日閲覧)
- インタラクティブリストメッセージ(Meta for Developers)(2026年11月3日閲覧)
- MonoChatヘルプセンター:フロー、フロー変数を設定、フロー変数(2026年11月3日閲覧)
MonoChatで実践する