Odoo Web サイトのライブチャット
Odoo Web サイトのライブチャット(Live Chat)の訪問者に AI 社員が返信し、オーディエンスルールでどの AI 社員がどの訪問者を担当するかを決めます。VIP 会員には VIP 担当、返品の質問には返品担当、それ以外は一般窓口、という振り分けができます。社内の担当者がチャットで発言すると AI は止まります。
既定はオフ。設定場所:管理 → 連携 → Odoo → Web サイトのライブチャット。
DuDuClaw はライブチャットに通常の担当者(operator)として参加します。Odoo に専用の内部ユーザー(例:「AI サポート」)を作成してライブチャットチャネルの担当者に加えると、DuDuClaw がそのユーザーをオンラインに保ちます。Odoo は人間の担当者と同じように訪問者のチャットを割り当てます。直接、またはチャットボットのスクリプトが「担当者に転送」に達したときです。DuDuClaw は数秒ごとに JSON-RPC で訪問者のメッセージを読み、そのユーザーとして返信します。
チャットボットのスクリプトではなく担当者にする理由:Odoo のチャットウィジェットは、担当者が見つからないままスクリプトの最後のステップが終わると訪問者の入力欄をロックします(「This conversation has ended.」)。スクリプトだけでは自由な会話を続けられないため、AI はスクリプトの転送先の担当者になる必要があります。また Odoo はオンライン表示の担当者にしかチャットを割り当てないため、DuDuClaw がボットユーザーのオンライン状態を維持します。
| Odoo | ボットをオンラインに保つ方法 |
|---|---|
| 17 / 18 | ボットユーザー自身が bus.presence.update_presence を呼ぶ |
| 19 | オンライン状態を書き込めるのは管理者だけなので、[odoo] 接続ユーザー(管理者ロールが必要)がボットの mail.presence を書き込む |
機能をオフにしたとき、またはゲートウェイが正常終了したときは、ボットをオフラインにして Odoo が訪問者を送らないようにします。
Odoo 側(17 以降、ライブチャットアプリ導入済み):
- 設定 → ユーザーでボット用の内部ユーザー(例:「AI サポート」)を作成し、「ライブチャット: ユーザー」権限を付けます。訪問者にはこの名前が表示されます。
- そのユーザーでログインし、「設定 → アカウントセキュリティ → 新しい API キー」でキーを作成します。
- 「ライブチャット → 設定 → チャネル」でチャネルを開き、ボットユーザーを担当者に追加します。すべてのチャットを AI に任せるなら唯一の担当者にします。人間もオンラインなら Odoo が両者に振り分けます。
- 任意:チャットボットのスクリプトで先に訪問者を迎え、分岐の最後に「担当者に転送」を置きます。AI がそこから引き継ぎ、どのスクリプトから来たかで振り分けもできます。
DuDuClaw 側:
- Odoo タブ上部で Odoo 接続を設定します(未設定の場合)。
- 「Web サイトのライブチャット」でボットのログインと API キーを入力し、「ボットユーザーをテスト」を押します。ボットとしてログインし、チャネル(ボットが担当者かどうか)、チャットボットのスクリプト、Odoo ユーザーを一覧します。
- 既定の AI 社員、必要なら最初のあいさつ、引き継ぎ時に招待する Odoo ユーザー、オーディエンスルールを設定します。
- オンにして保存します。数秒で反映され、再起動は不要です。
顧客対応向けの AI 社員を選んでください。訪問者は何でも入力できるため、顧客との会話に必要なツールだけを与え(例: allowed_tools = ["mcp__duduclaw__wiki_search"])、回答の根拠となる製品知識(Wiki ページ)を用意します。価格を知らない AI 社員は価格を作り話で答えます。
オーディエンスルール
Section titled “オーディエンスルール”各チャットは訪問者の最初のメッセージで一度だけ、上から順にルールと照合します。有効で条件をすべて満たす最初のルールが AI 社員を決め、どれにも一致しなければ既定の AI 社員が返信します。決定はそのチャットの間変わりません。
| 条件 | 値の出どころ |
|---|---|
| ライブチャットチャネル | 訪問者に対応した im_livechat.channel |
| チャットボットから転送 | 訪問者を担当者に転送したチャットボットのスクリプト |
| 訪問者の種類 | Web サイトにログイン済み(Odoo の連絡先)か未ログインか |
| 顧客タグ | ログイン済み連絡先のタグ(例: VIP) |
| 国コード | Odoo が IP から判定した国(TW、JP) |
| 言語 | 訪問者の Odoo 言語。zh_TW は完全一致、zh はすべての中国語に一致 |
| メッセージのキーワード | AI 従業員が引き継いだ時点でまだ返信されていない訪問者のメッセージ(通常はチャットボットの転送直後に書いた内容)。チャットボットで選んだ選択肢は照合されないため、チャットボットで振り分ける場合は「チャットボットから転送」を使います |
1 つのルール内の条件はすべて満たす必要があり、1 つの欄に複数の値があればどれか 1 つで一致します。条件のないルールは全員に一致します。Odoo が知らない値(未ログイン訪問者のタグ、判定できない国)は不一致です。URL による振り分けは Odoo のチャネルルール(im_livechat.channel.rule)でページごとに別のチャネルやチャットボットへ送り、ここでチャネルまたはチャットボットで振り分けてください。
閲覧ページや UTM、価格表、顧客ランクなどを条件にしなかった理由、および他チャネルへの展開については英語版の What else audience routing could use を参照してください。
有人対応への切り替え
Section titled “有人対応への切り替え”- 担当者の発言:ボット以外の社内 Odoo ユーザーがチャットで発言すると、AI はそのチャットへの返信を止めます。
- 訪問者が有人対応を希望:引き継ぎの言葉(既定: 真人、人工客服、轉接客服、human)を含み、招待する Odoo ユーザーが設定されていれば、その人たちをチャットに招待し、引き継ぎメッセージを送って AI は止まります。未設定なら AI が返信を続けます。
- すでに担当者がいる:再起動後などに初めて見たチャットに他の社内ユーザーがいれば、AI は返信しません。
- 生成中の発言:AI の返信生成中に担当者が発言した場合、その返信は破棄されます。
- AI に戻す:設定ページの「進行中のチャット」で各チャットの状態を確認し、「AI に戻す」で訪問者の次のメッセージから AI が返信します。
プライバシーと安全
Section titled “プライバシーと安全”- 訪問者のメッセージは他のチャネルと同じ返信パイプライン(入力チェック、行動契約、匿名化の復元)を通ります。
- 訪問者には管理者向けのシステムメッセージを見せません。AI が返信できないときは短いお詫びだけを送り、実際の原因はダッシュボードのチャネル失敗ログに記録します。
- 返信は送信前に HTML エスケープされます。
- 会話キーには Odoo の URL とデータベースのハッシュが含まれます。別の Odoo に切り替えると保存済みの状態も消去されます。
- ボットのキーは暗号化して保存し、ダッシュボードには返しません。保存のたびに監査ログに記録します。
- 実際の Odoo 18.0 と 19.0 で検証済み(2026-10-12)。Odoo 17 はソース上同じモデルとメソッドですが、実機では未検証です。
- 返信までの時間はポーリング間隔(既定 4 秒)とモデルの応答時間の合計です。
- ゲートウェイが正常終了せずにクラッシュした場合、Odoo はボットをオンライン表示のまま(12 時間後に古い状態を消去)新しいチャットを割り当てることがあります。再起動後は 30 分以内のメッセージに返信します。
- Odoo Online で API を使えるのは Custom プランのみです。
- 専用のボットユーザーを使ってください。
設定項目の一覧は英語版の Configuration reference を参照してください。ダッシュボード RPC(管理者のみ):odoo.livechat.get、odoo.livechat.set、odoo.livechat.test、odoo.livechat.status、odoo.livechat.resume。