> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# 多模态输入

## 概述

多模态输入设置可控制用户除语音外向智能体发送信息的其他方式。它们位于智能体的 **高级** 标签页中，路径为 **多模态输入**。

#### [文件输入](#file-input)

让用户在聊天中附加图片和 PDF

#### [DTMF 输入](#dtmf-input)

在通话期间收集来电者的按键数字

## 文件输入

文件输入允许用户在聊天中向智能体发送图片和 PDF。所选[模型](/docs/zh/eleven-agents/customization/llm)支持图片和／或文档输入时，智能体可以读取这些文件。

> **Note**
>
> 即使已启用文件输入，如果模型不支持该文件类型，附件也会被忽略。

### 配置

| 字段                           | 类型        | 默认值    | 描述                                                                              |
| ---------------------------- | --------- | ------ | ------------------------------------------------------------------------------- |
| `enabled`                    | `boolean` | `true` | 当为 `true` 时，如果模型支持该输入类型，用户可以附加图片或 PDF。                                          |
| `max_files_in_memory`        | `integer` | `10`   | 可同时保存在内存中的最近上传文件数量。范围：`1` 到 `10`。达到上限后，较早的文件会被替换为简短摘要。                          |
| `max_files_per_conversation` | `integer` | `10`   | 用户在一次对话中可上传的文件总数。每个上传文件都会计费。使用 `-1` 表示无限制。必须为 `-1`，或大于等于 `max_files_in_memory`。 |

用户可在 [widget](/docs/zh/eleven-agents/customization/widget)、[Slack](/docs/zh/eleven-agents/customization/integrations/slack) 等支持的聊天渠道中，或通过[上传对话文件](/docs/zh/eleven-agents/api-reference/conversations/upload-file) API 附加文件。

#### 通过控制台更新

#### 打开多模态输入

在控制台中打开智能体，确认所选模型支持图片和／或 PDF 输入，然后前往 **高级** 标签页。

#### 启用文件附件

在 **多模态输入** 下，开启 **允许文件附件**。

#### 设置文件限制

可选择设置 **保留在内存中的文件数** 和 **每次对话的最大文件数**。

#### 保存更改

保存智能体。之后用户即可在聊天中附加图片和 PDF。

#### 通过 CLI 更新

#### 拉取智能体配置

```bash
elevenlabs agents pull --agent agent_7101k5zvyjhmfg983brhmhkd98n6
```

#### 编辑智能体配置

设置 `conversation_config.conversation.file_input`：

```json
{
  "conversation_config": {
    "conversation": {
      "file_input": {
        "enabled": true,
        "max_files_in_memory": 10,
        "max_files_per_conversation": 10
      }
    }
  }
}
```

#### 推送智能体配置

```bash
elevenlabs agents push --agent agent_7101k5zvyjhmfg983brhmhkd98n6
```

#### 通过 API 更新

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    conversation_config={
        "conversation": {
            "file_input": {
                "enabled": True,
                "max_files_in_memory": 10,
                "max_files_per_conversation": 10,
            }
        }
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  conversationConfig: {
    conversation: {
      fileInput: {
        enabled: true,
        maxFilesInMemory: 10,
        maxFilesPerConversation: 10,
      },
    },
  },
});
```

## DTMF 输入

DTMF 输入允许来电者在通话期间通过电话键盘输入数字。可用于收集电话号码、菜单选项和其他数字输入，无需依赖语音识别。

这与[播放按键音](/docs/zh/eleven-agents/customization/tools/system-tools/play-keypad-touch-tone)系统工具相反，后者由智能体发送音调。

> **Warning**
>
> 仅支持来自 [Twilio](/docs/zh/eleven-agents/phone-numbers/twilio-integration/native-integration)、[SIP 中继](/docs/zh/eleven-agents/phone-numbers/sip-trunking)（电话）或
> [Genesys](/docs/zh/eleven-agents/phone-numbers/c-caa-s-integrations/genesys) 的带外 DTMF。音频流中的带内音调会被忽略。网页 widget 和聊天渠道无法发送 DTMF。

每次按键都会缓冲，直到序列完成。完成一个序列会创建一个用户轮次。

1. 来电者按下一个按键。如果智能体正在说话，第一个数字会将其打断。
2. 后续数字会追加到同一缓冲区。
3. 当来电者按下 `#`（如果已启用井号终止）或在超时前未再输入数字时，序列即完成。
4. 智能体会将收集到的数字作为一个用户轮次接收并作出回复。

启用井号终止时，`#` 是终止符，不会包含在收集的字符串中。缓冲区为空时按下 `#` 会被忽略。缓冲区接受 `0-9`、`*`、`#` 和 `A-D`，最多 50 个字符。

### 配置

禁用 DTMF 输入时，`conversation_config.conversation.dtmf_input_settings` 为 `null`。启用后，默认值如下：

| 字段                   | 类型        | 默认值     | 描述                                                 |
| -------------------- | --------- | ------- | -------------------------------------------------- |
| `dtmf_input_timeout` | `float`   | `2.0`   | 最后一次按键后，完成序列前等待的秒数。范围：`0.5` 到 `10.0`。              |
| `hash_terminator`    | `boolean` | `true`  | 如果为 `true`，`#` 会立即完成序列，且不会包含在收集的数字中。               |
| `redact_input`       | `boolean` | `false` | 如果为 `true`，存储的转录文本、对话日志和分析中的按键输入将替换为 `<REDACTED>`。 |

脱敏适用于已存储对话数据中的按键轮次。它不会在实时通话期间向智能体隐藏数字，也不会改写智能体说出的或发送给工具的数字。这与[对话历史记录脱敏](/docs/zh/eleven-agents/customization/privacy/conversation-history-redaction)不同。

#### 通过控制台更新

#### 打开多模态输入

在控制台中打开智能体，然后前往 **高级** 标签页。

#### 启用 DTMF 输入

在 **多模态输入** 下，开启 **启用 DTMF 输入**。

#### 配置超时和脱敏

可选择设置 **DTMF 输入超时**、**使用 # 完成 DTMF 输入** 和 **脱敏 DTMF 输入**。

#### 保存更改

保存智能体，然后拨打电话并在键盘上输入数字。

#### 通过 CLI 更新

#### 拉取智能体配置

```bash
elevenlabs agents pull --agent agent_7101k5zvyjhmfg983brhmhkd98n6
```

#### 编辑智能体配置

设置 `conversation_config.conversation.dtmf_input_settings`。省略该对象或将其设为 `null`，即可禁用 DTMF 输入。

```json
{
  "conversation_config": {
    "conversation": {
      "dtmf_input_settings": {
        "dtmf_input_timeout": 2.0,
        "hash_terminator": true,
        "redact_input": false
      }
    }
  }
}
```

#### 推送智能体配置

```bash
elevenlabs agents push --agent agent_7101k5zvyjhmfg983brhmhkd98n6
```

#### 通过 API 更新

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    conversation_config={
        "conversation": {
            "dtmf_input_settings": {
                "dtmf_input_timeout": 2.0,
                "hash_terminator": True,
                "redact_input": False,
            }
        }
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  conversationConfig: {
    conversation: {
      dtmfInputSettings: {
        dtmfInputTimeout: 2.0,
        hashTerminator: true,
        redactInput: false,
      },
    },
  },
});
```

更新智能体的[系统提示词](/docs/zh/eleven-agents/best-practices/prompting-guide)，让它知道何时请求按键输入。例如：

```text
If you need the caller's phone number, ask them to type it on their keypad. Wait for the DTMF
input before continuing.
```