Twilio问题:如何实现拨号通话的录音转录功能?
解决Twilio Dial通话中获取转录内容的问题
一、开启通话转录功能
Dial动词的record属性仅负责触发录音,转录需要单独开启,有两种实现方式:
- 控制台全局配置:在Twilio后台的「语音」->「设置」->「通话录音」中,开启「自动转录」并指定转录语言,后续所有开启录音的通话都会自动生成转录内容。
- 发起呼叫时指定参数:在创建Call资源(而非Dial动词)时添加转录相关参数。TypeScript SDK示例代码如下:
import twilio from 'twilio'; const client = twilio('你的账户SID', '你的认证Token'); client.calls .create({ url: '你的Twiml端点URL', // 返回包含Dial动词的Twiml内容 to: '目标号码', from: '你的Twilio号码', record: 'record-from-answer', // 开启录音 transcribe: true, // 开启转录 transcribeCallback: '你的转录回调URL' // 可选,转录完成后触发单独回调 }) .then(call => console.log(call.sid)) .catch(err => console.error(err));
二、通过RecordingSid获取转录内容
当录音完成且转录生成后,可通过以下方式获取文本内容:
方法1:API查询获取
通过Recording资源关联的转录SID查询具体内容:
async function getTranscription(recordingSid: string) { const recording = await client.recordings(recordingSid).fetch(); if (!recording.transcriptionSid) { console.log('转录尚未生成,请稍后重试'); return null; } const transcription = await client.transcriptions(recording.transcriptionSid).fetch(); return transcription.transcriptionText; }
方法2:从回调中直接获取
开启转录后,Twilio会在转录完成后调用recordingStatusCallback(或指定的transcribeCallback),回调请求体中会携带TranscriptionSid和TranscriptionText字段,可直接提取保存。
注意事项
- 转录生成存在延迟,可能晚于录音完成的回调,若首次回调未收到转录信息,可设置轮询机制等待。
- 确保你的Twilio账户已开通转录功能,部分区域可能需要额外权限配置。
内容的提问来源于stack exchange,提问作者Tsarsko Petrovich
相关产品推荐
相关产品推荐

