動的変数
動的変数
実行時の値を渡して、エージェントの動作をパーソナライズします。
動的変数を使うと、実行時の値をエージェントのメッセージ、システムプロンプト、ツールに挿入できます。複数のエージェントを作成しなくても、ユーザー固有のデータで各会話をパーソナライズできます。
概要
動的変数は、エージェントのさまざまな要素に組み込めます:
- 動作やコンテキストをカスタマイズするシステムプロンプト
- 挨拶をパーソナライズする最初のメッセージ
- ユーザー固有のデータを渡すツールパラメータとヘッダー
動的変数が役立つ例をいくつか紹介します:
- ユーザー名を使った挨拶のパーソナライズ
- 応答へのアカウント詳細の追加
- ツール呼び出しへのデータの受け渡し
- サブスクリプションプランに応じた動作のカスタマイズ
- 会話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__を付けます。
ツールから動的変数を更新する
ツール呼び出しは、有効な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は”Jane”(Base64エンコードされたvarsから)ではなく、“John”(var_user_nameから)になります。
実装例
JavaScriptでのURL生成
PythonでのURL生成
URLを手動で構築する
サポートされる型
動的変数では、以下の値の型がサポートされています:
トラブルシューティング
変数が置換されない
次の点を確認してください:
- 変数名が完全に一致している(大文字と小文字を区別)
- 変数で二重波括弧を使用している:
{{ variable_name }} - 変数がdynamic_variablesオブジェクトに含まれている
型エラー
次の点を確認してください:
- 変数値が想定される型と一致している
- 値が文字列、数値、またはブール値のみである




