---
title: "在语音序列中使用数据"
description: "定义呼叫入口字段，将值映射到序列步骤中，并处理可选的来电者信息以及转接后的全新数据作用域。"
canonical: "https://bird.com/zh-sg/wendang/guides/voice/sequences/data"
---

# 在语音序列中使用数据

> **警告：** 语音序列目前处于预览阶段。步骤、入口数据和序列定义格式可能会发生变化，导致现有序列和 API 请求失效。

定义呼叫入口接受的数据，然后在支持的步骤字段中使用这些数据。例如，一个提醒可能从发起呼叫的应用程序接收客户姓名和预约时间。

使用字段选择器查看所选步骤支持哪些数据源和值模式。

## 定义入口数据

1. 在草稿中选择**开始通话**入口。
2. 添加数据字段并标记必填字段。
3. 选择后续步骤并打开其展开编辑器。
4. 从 **Available data** 中选择一个字段，然后使用代表性的入口数据预览它。

API 呼叫的 `sequence.trigger_data` 必须是一个与所选入口架构匹配的对象。当入口不需要数据时，提供 `{}`。来电号码路由提供 `{}`，因此其入口必须接受空对象。将来电字段设为可选，并在后续步骤中处理缺失值。

应用程序数据与呼叫身份是分开的。由应用程序提供的名为 `caller` 的字段不能确定来电者身份，也不会授予使用某个号码的权限。

## 映射值或组合文本

支持的字段提供固定值、来自前序步骤的值、带有插入值的文本或 **fx** 表达式。对类型化字段使用直接值，对语音句子使用带插入值的文本。包含数字的字符串仍然是文本。

例如，在入口上定义一个名为 `customer_name` 的必填字符串字段。在支持的语音字段中，将 `Hello`、一个空格、字段值和 `, your appointment is confirmed.` 组合起来。使用 `{"customer_name":"Ada"}` 预览以检查准备好的文本。

语音表达式将入口字段读取为 `trigger.data.customer_name`。前序符合条件的输出使用 `steps.<step_id>.output`。数据源选择器帮助你选择正确的步骤和字段。

## 处理缺失数据和分支

可选字段可能缺失、为 null 或为空。预览这些情况，并在适当时选择显式的回退值。未执行路径上的步骤在该次运行中没有输出。

呼叫观测数据位于 `execution` 下。例如，原始来电者的号码可能缺失。受保护的表达式可安全地读取它：

```text
execution.call.orig != null && has(execution.call.orig.address) ? execution.call.orig.address : ''
```

这些观测数据描述的是电话端点，不会对人员进行身份验证。当到达的表达式使用 `execution` 时，预览需要一个执行样本。如果没有样本，预览会在评估该步骤之前停止。通过 **Advanced scenario JSON** 提供样本，按照验证报告的结构填写。

私密键盘观测数据对后续表达式源或保留的步骤详情不可用。不要围绕私密数字来设计后续的语音或结果字段。

## 通过转接传递数据

本地 **Transfer** 向目标入口提供一个新对象。映射该入口需要的值并检查其必填字段。

目标接收全新的 `trigger.data`，前序步骤的输出会被清除。呼叫身份、录音状态和执行限制将继续保留。当新入口需要前一路径中的信息时，必须显式传递该值。

## 后续步骤

- [配置提示音和键盘菜单](/docs/guides/voice/sequences/media-and-keypad)。
- [拨打和转接呼叫](/docs/guides/voice/sequences/dial-and-transfer)。
- [预览和检查序列](/docs/guides/voice/sequences/preview)。
- [通过 API 创建呼叫](/docs/guides/voice/create-calls)。

## Related resources

- [Voice sequences](/docs/guides/voice/sequence-builder) (docs)
