intra-mart Accel Platform IM-Copilot 利用ガイド 第10版 2026-08-31

10.6.3.1. スクリプト開発モデル「アシスタント実行 UI」実装

このドキュメントでは、スクリプト開発モデルで「アシスタント実行 UI」を埋め込む方法について解説します。

10.6.3.1.1. 基本的な使い方

10.6.3.1.1.1. ステップ1: HTMLの準備

まず、プレゼンテーションページ(HTML)に以下の要素を追加します:

<imart type="head">
  <meta http-equiv="X-Intramart-Secure-Token" content='<imart type="imSecureToken" mode="value" />' />
  <script src="im_copilot/js/extension.bundle.js"></script>
</imart>
<div id="assistant-area"></div>
<script>
  // アシスタントUIを登録
  window.imCopilot.register({
    targetElementId: 'assistant-container',
    assistantId: 'your-assistant-id',
    threadId: 'unique-thread-id',
    inputPlaceholder: 'メッセージを入力してください'
  });
</script>

要素追加時のポイントは、以下の通りです:

  • <head> タグにセキュアトークン情報(imSecureToken)を追加
  • スクリプト im_copilot/js/extension.bundle.js を追加
  • アシスタントUIを表示するDIV要素(ID)を追加
  • JavaScript 関数(imCopilot.register)を用いて、DIV要素の中に「アシスタント実行 UI」を埋め込む処理を追加

10.6.3.1.1.2. ステップ2: パラメータの設定

window.imCopilot.register() メソッドには以下のパラメータを指定できます:

パラメータ一覧
パラメータ名 必須 説明
targetElementId アシスタントUIを表示するDIV要素のID
assistantId 使用するアシスタントのID
threadId × 会話履歴を識別するための一意のID
inputPlaceholder × 入力欄に表示するプレースホルダーテキスト(デフォルト: “プロンプトを入力”)

10.6.3.1.2. 実装例

10.6.3.1.2.1. シンプルな実装例

最もシンプルな実装例を示します。

プレゼンテーションページ(sample_basic.html):

<imart type="head">
  <title>アシスタント実行サンプル - 基本実装</title>
  <meta http-equiv="X-Intramart-Secure-Token" content='<imart type="imSecureToken" mode="value" />' />
  <script src="im_copilot/js/extension.bundle.js"></script>
</imart>
<div id="assistant-area"></div>
<script>
  // アシスタントUIを登録
  window.imCopilot.register({
    targetElementId: "assistant-area",
    assistantId: "sample-rag-assistant",
    threadId: 'thread_' + new Date().getTime(),
    inputPlaceholder: "Input prompt"
  });
</script>

10.6.3.1.2.2. 動的にスレッドIDを生成する例

ユーザごとに異なるスレッドIDを生成する実装例です。

ファンクション・コンテナ(sample_dynamic.js):

var threadId;

function init(request) {

  // アシスタントID
  let assistantId = "sample-rag-assistant";

  // アカウントコンテキスト取得
  let accountContexts = Contexts.getAccountContext();

  // ユーザコードを取得
  let userCd = accountContexts.userCd;

  // タイムスタンプを生成
  let timestamp = new Date().getTime();

  // スレッドIDを生成
  threadId = 'thread_' + userCd + '_' + assistantId + '_' + timestamp;

}

プレゼンテーションページ(sample_dynamic.html):

<imart type="head">
  <title>アシスタント実行サンプル - 動的制御</title>
  <meta http-equiv="X-Intramart-Secure-Token" content='<imart type="imSecureToken" mode="value" />' />
  <script src="im_copilot/js/extension.bundle.js"></script>
</imart>
<div id="assistant-area"></div>
<script>
  // アシスタントUIを登録
  window.imCopilot.register({
    targetElementId: "assistant-area",
    assistantId: "sample-rag-assistant",
    threadId: '<imart type="string" value=threadId />',
    inputPlaceholder: "Input prompt"
  });
</script>

10.6.3.1.3. 注意事項

  1. extension.bundle.jsの読み込み位置
    • extension.bundle.jsは必ず<head>タグ内で読み込んでください
    • body内で読み込むと、正常に動作しない可能性があります
  2. スレッドIDの管理
    • threadIdは会話履歴を識別するために使用されます
    • 同じthreadIdを使用すると、以前の会話履歴が引き継がれます
    • 新しい会話を開始したい場合は、新しいthreadIdを生成してください
  3. セキュリティトークンの設定
    • meta要素でX-Intramart-Secure-Tokenを必ず設定してください
    • これがないとAPIへのアクセスが拒否されます

10.6.3.1.4. トラブルシューティング

10.6.3.1.4.1. アシスタントが表示されない場合

以下の点を確認してください:

  1. extension.bundle.jsの読み込み位置
    • <head>タグ内で読み込まれているか確認
    • bodyタグ内での読み込みではないか
  2. セキュリティトークンの設定
    • <meta http-equiv="X-Intramart-Secure-Token"> が設定されているか
    • <imart type="imSecureToken" mode="value" /> の記述が正しいか
  3. HTML要素の存在確認
    • targetElementIdで指定したID属性を持つ要素が存在するか
    • DOMContentLoadedイベント発生後に実行されているか
  4. アシスタントID
    • assistantIdが正しいか
    • アシスタントへのアクセス権限があるか

10.6.3.1.4.2. エラーメッセージの対処

よくあるエラーと対処法
エラーメッセージ 対処法
“Error: Failed to find extension parent element” 指定したtargetElementIdの要素が存在することを確認
“Error: Assistant configuration error. Check definition and authorization settings.” アシスタントIDが正しいか、アシスタントが存在するか、アシスタントへのアクセス権限があるか確認
“TypeError: Cannot read properties of undefined” extension.bundle.jsが<head>タグ内で読み込まれているか確認
“TypeError: Cannot read properties of null” セキュリティトークンが正しく設定されているか確認

10.6.3.1.5. まとめ

スクリプト開発での「アシスタント実行 UI」の埋め込みは、わずか数行のコードで実現できます。
この機能を活用することで、独自のWebアプリケーションにAIアシスタント機能を簡単に統合できます。