用Twilio Functions接入来电录音,Deepgram自动转录并短信回传。把语音变文本,快速接入CRM/工单与自动化流程。

用Twilio+Deepgram自动转录来电,效率拉满
客户来电=信息金矿,但大多数小企业把它当成“语音负担”。你可能见过这种场景:忙到没法接电话,错过来电后只剩一段语音留言;第二天再听一遍、手抄重点、转发给同事、再录入CRM。每一步都在耗时间,而且越忙越容易漏掉关键信息。
更现实的是,电话仍然是高意向客户最常用的沟通方式之一——尤其在本地服务、医疗预约、教育咨询、B2B售前场景。把来电内容自动转成文字,并立即进入你的自动化工作流,这不是“锦上添花”,而是把运营从手工劳动里解放出来。
这篇文章基于一个非常实用的技术组合:Twilio Functions(无服务器)+ Deepgram(语音识别)。你会得到一个可落地的方案:客户拨打你的号码→系统播放提示→录音→自动转录→把文字用短信发回给客户(也可以同时推送到Slack/CRM/工单系统)。它也是“AI语音助手与自动化工作流”的典型骨架。
这条主线在“人工智能在通信与 5G/6G”系列里尤其关键:5G/6G提升网络确定性与低时延,AI把语音内容变成可检索、可自动流转的数据。通信系统的价值不止于连接,更在于把对话变成结构化行动。
为什么“来电转录”是小企业最划算的自动化
**答案很直接:转录把不可自动化的语音,变成可自动化的文本。**一旦有了文本,你就能做分类、路由、总结、质检、合规留存,甚至触发后续流程。
对小企业来说,来电转录通常能立刻改善三件事:
- 减少重复沟通:客户说过的信息不需要再问一遍。
- 提升跟进速度:转录几秒到几十秒就出来,能立刻派单或回访。
- 降低漏单率:漏听语音留言比漏看一条消息更常见。
我更偏向把它理解为“语音入口的自动化”:电话不是孤立的渠道,它应该进入你的统一工作流——和网站表单、微信咨询、邮件线索一样被管理。
方案概览:Twilio Functions + Deepgram 的工作流骨架
答案:用Twilio负责通话与录音,用Deepgram负责高质量语音识别,用Twilio SMS把结果送达(或触发更多自动化)。
整体流程是这样的:
- 来电进入Twilio号码
- Twilio Functions 返回一段 TwiML:
say播放语音提示record开始录音(例如30秒)- 录音结束后回调到另一个函数(
/transcribe)
/transcribe里:- 从回调事件拿到
RecordingUrl与CallSid - 通过
CallSid去Twilio查询来电号码(from)与被叫号码(to) - 把录音URL发给Deepgram做预录音转写
- 拿到
transcript后发短信给来电者
- 从回调事件拿到
这套架构有两个优点特别适合小团队:
- 无服务器:Twilio Functions 省掉部署、扩容、运维。
- 组件化:录音、识别、通知是三段独立模块,后面加CRM/工单/知识库都很自然。
动手搭建:两段函数就能跑起来
**答案:你只需要一个“接听并录音”的函数 + 一个“转写并发送短信”的函数。**下面我把关键点讲清楚,并补上生产环境常见的加固建议。
1)准备工作:账号、依赖与环境变量
你需要:
- Twilio 账号 + 一个支持 Voice 与 SMS 的号码
- Deepgram API Key
- Twilio Functions 的一个 Service(建议不要用单独函数,后期扩展会更舒服)
在 Twilio Console 里:
- 进入 Developer Tools → Functions & Assets 创建 Service
- Dependencies 添加:
@deepgram/sdk - Environment Variables 添加:
DEEPGRAM_KEY
可见性选择 protected 就够用:只允许 Twilio webhook 触发,减少暴露面。
2)函数A:/inbound(接听、提示、录音)
答案:用TwiML告诉Twilio“先说一句提示,然后录音,结束后回调到/transcribe”。
// /inbound
exports.handler = function(context, event, callback) {
let twiml = new Twilio.twiml.VoiceResponse();
twiml.say(
{ voice: 'woman', language: 'en' },
'Try Deepgram transcription by speaking after the beep. Talk about what you see around you right now.'
);
twiml.record({
maxLength: 30,
playBeep: true,
recordingStatusCallback: '/transcribe'
});
return callback(null, twiml);
};
小企业场景里,我建议你把提示语改成更“业务导向”的版本,比如:
- “请留下您的姓名、需求和方便回电时间,我们会在10分钟内联系您。”
- “请说出订单号与问题类型:退款/发票/物流/产品咨询。”
提示语写得越具体,后面转录文本越好用。
3)函数B:/transcribe(取录音、转写、发短信)
答案:Twilio回调会给你RecordingUrl和CallSid,你用CallSid查到来电号码,再把录音URL交给Deepgram。
// /transcribe
const { Deepgram } = require('@deepgram/sdk');
const deepgram = new Deepgram(process.env.DEEPGRAM_KEY);
exports.handler = async function(context, event, callback) { const { RecordingUrl, CallSid } = event;
const twilioClient = context.getTwilioClient(); const { from: caller, to: twilioNumber } = await twilioClient.calls(CallSid).fetch();
const transcriptionFeatures = { punctuate: true, tier: 'enhanced' }; const { results } = await deepgram.transcription.preRecorded( { url: RecordingUrl }, transcriptionFeatures );
const { transcript } = results.channels[0].alternatives[0];
const message = await twilioClient.messages.create({
body: Here is what you said:\n\n${transcript},
to: caller,
from: twilioNumber
});
return callback(null, { results, message }); };
到这里,你已经拥有一个“语音→文字→通知”的闭环。
## 从“发短信”升级到“自动化工作流”:更值钱的部分在后面
**答案:短信只是演示,真正的收益来自把转录文本接进你的业务系统。**我更推荐把这一步当成“触发器”,后面接三类自动化最常见。
### 1)线索与工单自动创建(CRM/Helpdesk)
把转录文本写入CRM备注或创建工单,你至少能做到:
- 自动标记来源:`channel=phone`
- 自动提取关键字段:姓名、电话、服务地址、期望时间
- 自动分配负责人:按地区/产品线/值班表
一个简单但很有效的策略:**用关键词做第一层路由**(比如“退款/报价/预约/投诉”),比一上来就做复杂NLP更稳。
### 2)团队通知与协作(Slack/飞书/Teams)
当来电提到“紧急”“今天上门”“系统宕机”等词时,把转录推送到指定群,值班同事能第一时间看到。
你还可以附带:
- 来电号码、通话时间、录音链接(如合规允许)
- 一个“是否需要回拨”的快捷按钮(后续可接Twilio发起外呼)
### 3)质检与合规留存(特别适合受监管行业)
如果你在金融、医疗、保险或需要录音留存的行业,转录文本能极大降低检索成本:
- 搜索某个承诺/条款是否被提及
- 抽样检查客服是否遵循话术
- 争议发生时快速定位证据
在“人工智能在通信与5G/6G”的语境里,这类能力会越来越普遍:当网络侧保证更稳定的音频质量与更低的抖动,语音识别的可用性也会跟着上一个台阶。
## 生产环境别踩坑:稳定性、安全、成本三件事
**答案:先把失败路径想清楚,转录项目才不会变成“偶尔好用的Demo”。**下面是我建议你上线前至少检查的清单。
### 1)失败重试与兜底
- Deepgram转写失败怎么办?
- 给来电者发一条兜底短信:“我们收到了留言,但转写失败,将人工回听。”
- 把失败事件写日志(或发到告警群)
- 录音为空或太短怎么办?
- 对 `transcript` 做长度判断,太短就不发或提示重录
### 2)隐私与权限控制
- Twilio Functions 使用 `protected`
- 不要把 `DEEPGRAM_KEY` 写进代码
- 若涉及个人敏感信息,考虑:
- 缩短保留时间
- 仅保存转录摘要而不是全文
- 对外发短信避免包含敏感字段(例如身份证号、病情)
### 3)成本控制(很现实)
电话录音、短信、转写都按量计费。控制成本通常靠三招:
- 把 `maxLength` 设成业务需要的最小值(例如30秒或60秒)
- 提示语引导用户“先说关键信息”,减少无效语音
- 把转写 tier/参数按场景分级:高价值来电用更高准确率,普通留言用标准档
## 常见问题(你大概率会问到)
### Q1:能不能实时转写,而不是录完再转?
可以,但实现会更复杂,通常涉及媒体流与实时识别。对小企业而言,**“录完即转”已经足够解决80%的问题**,而且更稳定。
### Q2:能不能把中文来电也转出来?
可以。你需要在转写请求里设置语言/模型(具体参数以你使用的语音识别服务为准)。同时建议把提示语换成中文,并尽量减少背景噪声。
### Q3:短信发给客户真的有用吗?
对“留资/预约/报修”类场景很有用,因为客户立刻拿到自己说过的话,能减少误解。更常见的做法是:**客户收到确认短信,内部团队收到转录+派单信息**。
## 下一步:把“来电转录”变成你的AI语音助手入口
你现在有了一个清晰的起点:用 Twilio 接入电话网络,用 Deepgram 把语音变成文本,再把文本喂给自动化系统。这就是很多AI语音助手的底层逻辑——只不过“助手”不一定要会聊天,它也可以是**默默把工作流跑顺的自动化引擎**。
如果你准备继续往前走,我建议按这个顺序升级:
1. **转录→自动分类(意图识别)→分配负责人**
2. **转录→生成摘要→写入CRM/工单**
3. **转录→触发外呼或短信模板→闭环跟进**
当5G/6G把通信质量与连接密度推上去,企业的竞争差异会越来越像这样一句话:
> “你们公司接到一通电话后,是有人去处理,还是系统自己开始运转?”
想把这套流程扩展成“语音助手 + 自动化工作流”(例如自动建单、自动回访、自动质检)时,你最想先自动化的是哪一步?