用途
Telnyx WebRTC JavaScript SDK 用于在浏览器应用中构建实时语音通信(VoIP)功能。开发者可以通过它让网页应用发起和接听电话,并与 Telnyx 后端建立连接。
主要能力
- 认证:支持基于登录令牌(login_token,推荐)或基于凭据(login/password)两种方式连接。
- 通话:通过 client.newCall 发起外呼,通过 telnyx.notification 事件处理来电并接听。
- 通话控制:支持挂断(hangup)、发送 DTMF 按键(dtmf)、静音/取消静音(muteAudio/unmuteAudio)、保持/取消保持(hold/unhold)。
- 事件系统:提供 telnyx.ready、telnyx.error、telnyx.notification、telnyx.stats.frame 等事件。
- 调试与质量指标:可开启 debug 日志(输出到 socket 或文件),并通过 telnyx.stats.frame 获取抖动、往返时延、丢包等通话质量数据。
- 预通话诊断:通过 PreCallDiagnosis.run 在通话前测试连通性。
- 编解码器偏好:可通过 preferred_codecs 设置偏好,如 Opus(推荐用于 AI/高质量)或 PCMA(电话兼容)。
- 设备管理:提供获取音频输入/输出设备、视频设备、设备分辨率,以及设置音频输入/输出设备、视频设备等方法。
- AI 助手集成:支持匿名登录(anonymous_login)连接 AI 助手,无需 SIP 凭据;AI 助手需将 telephony_settings.supports_unauthenticated_web_calls 设为 true。
- 其他:支持自定义请求头、ICE 候选预取(默认启用)、Trickle ICE、通话恢复(recoveredCallId)、语音隔离(通过 audio 对象设置)、注册状态查询(getIsRegistered)、浏览器支持检测(webRTCInfo、webRTCSupportedBrowserList)。
使用方式
安装:
npm install @telnyx/webrtc --save
导入:
import { TelnyxRTC } from '@telnyx/webrtc';
初始化并连接(令牌方式):
const client = new TelnyxRTC({
login_token: 'your_jwt_token',
});
client.connect();
或凭据方式:
const client = new TelnyxRTC({
login: 'sip_username',
password: 'sip_password',
});
client.connect();
指定播放远端音频的 HTML 元素:
client.remoteElement = 'remoteMedia';
<audio id="remoteMedia" autoplay="true" />
发起通话:
const call = client.newCall({
destinationNumber: '+18004377950',
callerNumber: '+15551234567',
});
接听来电:
client.on('telnyx.notification', (notification) => {
const call = notification.call;
if (notification.type === 'callUpdate' && call.state === 'ringing') {
call.answer();
}
});
断开连接时需移除已绑定的事件监听:
client.disconnect();
client.off('telnyx.ready');
client.off('telnyx.notification');
适用场景
- 在网页应用中嵌入语音通话功能。
- 构建呼叫中心或客服通话界面。
- 接入 AI 语音助手(匿名登录方式)。
- 需要通话质量监控与预通话诊断的实时语音应用。
限制与注意事项
- 前端代码中切勿硬编码凭据,应使用环境变量或提示用户输入。
- 使用 AI 助手匿名登录时,AI 助手必须将 telephony_settings.supports_unauthenticated_web_calls 设为 true。
- 匿名登录后发起通话时 destinationNumber 会被忽略,可为空。
- 通话质量指标需要开启 debug: true。
- 浏览器支持情况:Android 支持 Chrome、Firefox;iOS 支持 Safari;Linux 支持 Chrome、Firefox;macOS 支持 Chrome、Firefox、Safari、Edge;Windows 支持 Chrome、Firefox、Edge。
- 常见问题:无音频需检查浏览器麦克风权限;回声/反馈可使用耳机或启用回声消除;连接失败需检查网络、防火墙或使用 TURN 中继;质量问题可开启 debug 并查看 telnyx.stats.frame 事件。
- 服务端 WebRTC API(凭据创建、令牌生成、推送通知设置)参见 references/webrtc-server-api.md,设置认证或推送通知时必须阅读。
- 关于收费、价格等具体信息,资料中暂未提供。