dify原生不支持主动外呼,需与阿里云语音服务协同:阿里云负责拨号和信令,dify仅处理asr/tts音频流转换;必须开通阿里云智能外呼或呼叫中心并配置对应api权限与号码资源。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Dify自动拨号并用语音回答客户咨询,而不是等客户主动发起对话。这要求Dify不再只做响应式聊天机器人,而要变成能主动外呼、实时语音交互的智能坐席。
确认Dify是否支持主动外呼能力
Dify原生不提供电话外呼功能,它只负责语音识别(ASR)和语音合成(TTS)的文本中间层处理。真正的电话拨打、信令控制、通话状态管理必须由通信平台完成——阿里云语音服务(如智能外呼API或呼叫中心API)承担这一角色。
你实际要搭建的是“阿里云语音服务 + Dify”双系统协同架构:阿里云负责拨号、接通、音频流传输;Dify只接收音频流→转文字→生成回答→返回文字→再由阿里云转成语音播放给客户。
【关键前提】你必须已开通阿里云语音服务中的“智能外呼”或“呼叫中心”产品,并获取对应API权限与号码资源。仅开通Dify无法触发任何真实电话。
准备Dify侧语音处理链路
第一步:在Dify工作区 → 设置 → 模型供应商 → 添加“阿里云语音识别(ASR)”和“阿里云语音合成(TTS)”两个模型供应商。
第二步:分别填入阿里云ASR/TTS的Endpoint、AccessKey ID、AccessKey Secret,并测试连接成功。注意选择与你语音服务地域一致的Endpoint(例如华东1区选https://nls-gateway-cn-shanghai.aliyuncs.com)。
第三步:创建一个新应用,类型选“语音型应用”,而非“对话型应用”。该模板会自动启用音频流输入/输出配置项,禁用网页文本框交互。
第四步:在应用编排页 → 模型配置 → 将ASR模型设为“阿里云实时语音识别”,将TTS模型设为“阿里云实时语音合成”。这两项不可互换,否则流程中断。
对接阿里云语音服务实现外呼
方法一:使用阿里云智能外呼API直连Dify
① 在阿里云语音服务控制台创建外呼任务,目标号码、话术脚本留空,勾选“启用ASR+TTS实时交互”。
② 任务启动后,阿里云会向你指定的Webhook地址推送call_started事件,并携带本次通话唯一ID(call_id)与实时音频流WebSocket地址。
③ 你需自行部署一个中继服务(如Python FastAPI),接收该WebSocket流 → 拆帧 → 转base64 → 通过Dify语音应用API(/v1/audio/chat)提交音频片段 → 获取Dify返回的文本回复 → 再调用阿里云TTS接口生成语音流 → 推回同一WebSocket通道。
这一步必须自己写中继逻辑,Dify不提供现成外呼网关。漏掉音频流时序对齐或未按16kHz单声道PCM格式提交,会导致识别失败。
方法二:通过阿里云呼叫中心+Dify插件桥接(推荐)
阿里云呼叫中心(ICC)支持自定义“语音机器人节点”,可直接配置Dify应用URL作为ASR/TTS后端。你在ICC流程编排器中拖入“AI机器人”组件 → 填写Dify语音应用的公开访问地址(需HTTPS且已发布)→ 启用双向流式音频 → 保存发布。
此时ICC完成全部信令控制:拨号、接听、放音、收音、挂机。Dify只专注处理音频→文本→文本→音频转换,无需关心通话状态。
【重要限制】该方式要求Dify应用已发布为公开服务,并配置CORS白名单允许阿里云ICC域名访问,否则音频流请求会被浏览器或网关拦截。
配置语音应答内容与业务逻辑
在Dify语音应用的提示词中,必须明确限定输出格式:“仅输出纯口语化中文句子,不带标点、不换行、不加说明性括号,长度控制在20字以内”。例如用户问“订单到哪了”,应答只能是“您的包裹已在派送中请保持电话畅通”,不能出现“【物流信息】”或“(预计明日送达)”这类非语音友好内容。
知识库上传时,优先选用录音转写的FAQ问答对(.wav + .txt配对文件),比纯PDF文档更适配语音场景。Dify会对.wav文件自动提取声纹特征辅助语义理解,提升多音字识别准确率。
测试阶段务必用真实手机拨打测试号码,监听TTS语音是否断句异常、数字读错(如“123”读成“一百二十三”而非“一二三”)。阿里云TTS默认使用“标准女声”,若需更自然表达,须在TTS参数中显式设置voice=ai-chenyu(阿里云情感合成音色)。










