動的変数
実行時の値を渡して、エージェントの動作をパーソナライズします。
動的変数 を使用すると、実行時の値をエージェントのメッセージ、システムプロンプト、ツールに挿入できます。複数のエージェントを作成せずに、ユーザー固有のデータで各会話をパーソナライズできます。
概要
動的変数は、エージェントのさまざまな要素に組み込めます。
- 動作やコンテキストをカスタマイズする システムプロンプト
- 挨拶をパーソナライズする 最初のメッセージ
- ユーザー固有のデータを渡す ツールのパラメータとヘッダー
動的変数が役立つ例をいくつか紹介します。
- ユーザー名を使った 挨拶のパーソナライズ
- 応答への アカウント情報の追加
- ツール呼び出しへの データの受け渡し
- サブスクリプションのプランに応じた 動作のカスタマイズ
- 会話IDや通話時間などの システム情報へのアクセス
動的変数は、エージェントの設定にハードコードすべきではないユーザー固有のデータを挿入するのに最適です。
システム動的変数
エージェントでは、以下のシステム変数を自動的に利用できます。
system__agent_id- 会話を開始したエージェントの一意の識別子(会話中は変わりません)system__current_agent_id- 現在アクティブなエージェントの一意の識別子(エージェント転送後に変わります)system__caller_id- 発信者の電話番号(音声通話のみ)system__called_number- 発信先の電話番号(音声通話のみ)system__call_duration_secs- 通話時間(秒)system__time_utc- 現在のUTC時刻(ISO形式)system__time- 指定したタイムゾーンの現在時刻(人が読みやすい形式。例:“Friday, 12:33 12 December 2025”)system__timezone- ユーザー指定のタイムゾーン(tzinfoで有効である必要があります)system__conversation_id- ElevenLabsの一意の会話識別子system__call_sid- 通話SID(twilio通話のみ)system__call_id- SIPトランク通話の一意の識別子(SIPトランク通話のみ)system__agent_turns- この会話中にエージェントが行った会話ターンの合計数。system__current_agent_turns- 現在のエージェントが行った会話ターン数。会話が別のエージェントに転送されるたびにリセットされます。system__current_subagent_turns- 現在のサブエージェントが行った会話ターン数。ワークフローが別のノードに移行するたびにリセットされます。system__is_text_only- 会話がテキストのみモードで動作している場合はtrue、それ以外の場合はfalse。system__conversation_history- 現在の会話履歴をJSON形式でシリアライズした表現。参照された時点で遅延評価されます。以下の 形式の詳細 を参照してください。
システム変数は次のとおりです。
- 実行時の設定なしで利用可能
system__(予約済みプレフィックス)で始まる- 会話中に自動で更新される
system__ プレフィックスを使用できません。会話履歴の形式
system__conversation_history 変数には、次の構造のJSONオブジェクトが含まれます。
各エントリには role("user"、"agent"、または "tool")と、次のいずれかが含まれます。
message— ターンのテキストコンテンツtool_requests— 解決済みのパラメータ値を含む、エージェントが実行したツール呼び出しの配列tool_results— ツール応答の配列
ツール結果またはパラメータにネストされた会話履歴が含まれている場合、無制限の再帰的展開を避けるため、プレースホルダー(例:[conversation_history (5 turns)])に置き換えられます。
この変数は、会話コンテキストをツール(例:Webhook、カスタムLLM)に渡したり、引き継ぎ時にサブエージェントのプロンプトに会話履歴を含めたりする際に便利です。
シークレット動的変数
シークレット動的変数は通常の動的変数と同じ方法で設定されますが、エージェントのシステムプロンプトや最初のメッセージの一部としてLLMプロバイダーに送信せず、動的変数ヘッダーでのみ使用するようElevenAgentsに指示します。
LLMに送信すべきではない認証トークンや非公開IDには、これらを使用することをおすすめします。シークレット動的変数を作成するには、動的変数に secret__ を付けるだけです。
シークレット値は、通話後のWebhookや会話APIを含め、<REDACTED> としてマスキングされて返されます。会話後に読み戻す必要がある値には、secret__ プレフィックスを使用しないでください。そうした値は通常の動的変数として渡すか、機密性のない識別子を渡して、ご自身のシステムで機密値を検索してください。
ツールから動的変数を更新する
ツール呼び出し は、有効なJSONオブジェクトを返す場合、動的変数を作成または更新できます。抽出する内容を指定するには、ドット記法でオブジェクトパスを設定します。フィールドまたはパスが存在しない場合は、何も更新されません。
レスポンスオブジェクトとドット記法の例:
- Statusは次のパスに対応します:
response.status - users配列内の最初のユーザーのメールアドレスは、次のパスに対応します:
response.users.0.email
動的変数を最初のユーザーのメールアドレスに更新するには、次のように割り当てを設定します。

割り当ては各Webhookツールのフィールドです。詳細はこちらを参照してください。
ガイド
前提条件
- ElevenLabsアカウント
- 設定済みのElevenLabs会話型エージェント(こちらで作成)
公開Talk-toページのインテグレーション
公開Talk-toページではURLパラメータによる動的変数に対応しており、エージェントリンクを共有する際に会話をパーソナライズできます。これは、パーソナライズされたエージェントをWebサイト、メール、マーケティングキャンペーンに埋め込む場合に特に便利です。
URLパラメータの方法
公開Talk-toページに動的変数を渡すには、次の2つの方法があります。
方法1:Base64エンコードJSON
vars パラメータを使用して、変数をBase64エンコードされたJSONオブジェクトとして渡します。
vars パラメータには、Base64エンコードされたJSONが含まれます。
方法2:個別のクエリパラメータ
var_ プレフィックス付きのクエリパラメータを使用して変数を渡します。
パラメータの優先順位
両方の方法を同時に使用する場合、競合を防ぐため、個別の var_ パラメータがBase64エンコードされた変数より優先されます。
この例では、user_name は(Base64エンコードされた vars の)“Jane” ではなく、(var_user_name の)“John” になります。
実装例
JavaScriptでのURL生成
PythonでのURL生成
手動でのURL構築
対応する型
動的変数では、次の値の型をサポートしています。
トラブルシューティング
変数が置き換えられない
次を確認してください。
- 変数名が完全に一致している(大文字・小文字を区別)
- 変数に二重波括弧を使用している:
{{ variable_name }} - 変数がdynamic_variablesオブジェクトに含まれている
型エラー
次を確認してください。
- 変数の値が想定される型と一致している
- 値が文字列、数値、またはブール値のみである




