You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dialogflow CX中语音播报电话号码按整数而非逐位朗读的问题

Dialogflow CX 电话号码逐位播报解决方案

核心问题原因

sys.phone-number系统实体捕获的电话号码会被识别为数值类型,TTS引擎默认按整数读法(如80亿)播报,而非逐位数字。系统实体的表达式扩展仅用于扩展输入匹配规则,无法修改参数的输出格式,所以直接扩展实体无效。

具体解决方法

方法1:响应中直接使用CEL表达式转换

在Dialogflow CX的响应文本中,通过CEL表达式将电话号码转换为带空格分隔的字符串,让TTS逐位朗读:

您的电话号码是 ${string(session.params.sys.phone-number).replaceAll('[^0-9]', '').split('').join(' ')}
  • string(session.params.sys.phone-number):将数值类型的号码转为字符串
  • replaceAll('[^0-9]', ''):移除号码中的非数字字符(如括号、横杠)
  • split('').join(' '):将字符串拆分为单个字符,再用空格连接

方法2:创建自定义参数复用转换逻辑

如果需要在多个场景复用格式转换,可创建自定义参数:

  1. 进入代理的参数页面,新增自定义参数(如formatted_phone)
  2. 设置参数的计算表达式为:
string(session.params.sys.phone-number).replaceAll('[^0-9]', '').split('').join(' ')
  1. 在响应中直接引用该自定义参数:您的电话号码是 ${formatted_phone}

注意事项

  • 无需修改sys.phone-number系统实体的扩展规则,因为扩展仅用于优化输入匹配,不影响输出格式
  • 如果用户输入的号码包含国际区号,可根据需求调整replaceAll的正则表达式,保留需要的字符

内容的提问来源于stack exchange,提问作者DialogMAM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:52:12