プラットフォーム
設置方法
HTML を2行、一度だけ貼り付けます。ローダーは非同期で、ウィジェットを専用フレームに描画し、動けない場合は何もしません。このページではスニペット、貼り付け場所、ドメイン許可リスト、インライン埋め込みを説明します。
スニペット
設定 → Meeton AI → セットアップ からコピーしてください。実際の teamId が入った状態で表示されます。teamId は UUID で、それ以外はローダーが無視します。
<!-- Start DynaMeet -->
<script type="text/javascript">
window.DynaMeetConfig = { teamId: "YOUR_TEAM_ID" };
</script>
<script type="text/javascript" async defer src="https://app.dynameet.ai/meeton.js"></script>
<!-- End DynaMeet --></body> の直前が標準ですが、ページ内のどこでも動きます。設定オブジェクトはローダーより先に定義されている必要があり、未定義ならローダーは定義されるまで待ちます。async defer 読み込み。描画をブロックせず、コンテンツの後に起動します。ウィジェット UI は別フレームなので、CSS や JavaScript が御社のものと衝突しません。localhost だけが例外です。ページ表示のたびに起きること
通常は1秒未満です。途中で失敗したステップがあればそこで止まり、ページは何も気づきません。
もう少し詳しく、ローダーは次のことを行います。
- ボットやクローラー(Googlebot、ヘッドレスブラウザ)なら即座に終了します。クローラーはウィジェットを見ず、訪問者としても数えられません。
window.DynaMeetConfig.teamIdを読み、UUID として検証します。- 訪問者 ID を取得または作成します。localStorage とファーストパーティ Cookie に保持されるランダムな UUID です。Cookie とストレージを参照。
api.dynameet.aiからチームの設定を取得します。リクエストにはページのオリジンが付き、ホスト名が許可リストになければ API が拒否します。停止中、解約済み、プラン上限超過のチームも同様に拒否されます。app.dynameet.aiからウィジェット iframe を作成し、ライブ WebSocket 接続を開き、ページの監視を始めます(SPA 内の遷移、既存フォーム、スクロール深度、滞在時間)。
ドメイン許可リスト
タグは 設定 → Meeton AI → セットアップ → ドメイン に登録したホスト名でしか動きません。チェックはライブ接続を含むすべてのリクエストで行われるため、ページソースからコピーされた teamId は他のサイトでは何もしません。
- ステージングとプレビュー。ステージングのホスト名を追加するか、名前が変わるプレビュー環境には
*.example.co.jpのようなワイルドカードを使います。 - ローカル開発。
localhostは常に許可されるので、ドメインを追加する前にローカルビルドでタグを試せます。 - 動作確認。ウィジェットが最初に読み込まれた瞬間に、そのドメインが設置済みになります。御社が管理していないページ(Notion のページなど)の iframe 埋め込みは報告できないため、動いていても未検出と表示されます。
インライン埋め込み
標準はフローティングウィジェットですが、チャット、予約カレンダー、リードフォームはページ内の任意の場所にインラインで置くこともできます。いずれも app.dynameet.ai の iframe なので同じ CSP ルールが適用され、埋め込みは設置先ページを申告するため許可リストのチェックも同様に働きます。
インラインチャット
ランチャーではなく、ページの流れの中にチャットウィンドウを描画します。すでに会話の場なので、埋め込みモードではマーケティングポップアップと広告は表示されません。
<!-- DynaMeet inline chat -->
<iframe
src="https://app.dynameet.ai/iframe-embed.html?teamId=YOUR_TEAM_ID"
title="DynaMeet"
style="width: 100%; height: 600px; border: 0;"
allow="fullscreen; camera; microphone; autoplay"
></iframe>インライン予約カレンダー
1つの予約カレンダーをフルページで表示します。calendarId は 設定 → Meeton AI → カレンダー にあり、各カレンダーには固有の URL と QR コードもあります。
<!-- DynaMeet booking calendar -->
<iframe
src="https://app.dynameet.ai/iframe-calendar.html?teamId=YOUR_TEAM_ID&calendarId=CALENDAR_ID"
title="Book a meeting"
style="width: 100%; height: 700px; border: 0;"
allow="fullscreen; camera; microphone; autoplay"
></iframe>インラインリードフォーム
リードフォームで設定したフォームを、透明で枠のないフレームとして、指定した height で表示します。送信時の動作はウィジェットと同じで、訪問者が特定され、CRM が埋まります。
<!-- DynaMeet form -->
<iframe
src="https://app.dynameet.ai/embed/form/YOUR_TEAM_ID"
title="Contact us"
style="width: 100%; height: 420px; border: 0;"
loading="lazy"
></iframe>インライン埋め込みはタグの代わりにはなりません。訪問者の識別、フォーム監視、インラインカレンダーでの予約とチャットの紐付けのため、ページには meeton.js も残してください。
よくある質問
サイトが遅くなりませんか?
なりません。スクリプトは1ファイルで、コンテンツの後に非同期で読み込まれ、ウィジェットは専用フレーム内に描画されます。ページはスクリプトを待たず、読み込みに失敗してもページ上の何も変わりません。
先にステージングで試せますか?
はい。ステージングのホスト名を許可ドメインに追加してください。名前が変わるプレビュー環境には *.example.co.jp のようなワイルドカードが使えます。
誰がウィジェットを見られますか?
許可リストに登録したドメインの訪問者だけです。それ以外のサイトではリクエストが拒否され、何も描画されません。
アップデート時に何かする必要はありますか?
ありません。更新はホストされたスクリプトに配信され、次のページ読み込みから有効になります。
ブロックされた訪問者がいるとページが壊れますか?
いいえ。すべての失敗経路はタグが何もしないことで終わります。ページ、フォーム、他のスクリプトは、スニペットがないときと同じように動きます。