快速入门
复制包含安装步骤和该插件完整 Markdown 指南的配置 prompt。
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-twilio-voice`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/twilio-voice/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
安装
“安装”章节你可以使用我们的 AI 辅助设置来安装插件。使用以下命令将 Capgo skills 添加到你的 AI 工具中:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins然后使用以下 prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-twilio-voice` plugin in my project.如果你更想手动设置,请运行以下命令安装插件,并按照下方各平台的说明操作:
npm install @capgo/capacitor-twilio-voicenpx cap sync导入
“导入”章节import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';快速入门
章节标题为“快速入门”import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
await CapacitorTwilioVoice.login({ accessToken: tokenFromBackend });await CapacitorTwilioVoice.makeCall({ to: '+15551234567' });常见坑点
章节标题为“常见陷阱”- Token 有效期 (TTL): 请在过期前刷新 Twilio token。
- 入站通话: 配置 iOS 上的 VoIP push。
- 麦克风权限:拨打电话前需申请。
API 概览
章节标题:“API 概览”login
标题为“登录”的部分使用 access token 通过 Twilio Voice 验证用户身份。
Access token 应使用你的 Twilio 凭据在后端服务器上生成。 通过 Twilio Voice 拨打和接听电话都需要此 token。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
const result = await CapacitorTwilioVoice.login({ accessToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'});console.log('Login successful:', result.success);logout
标题为“退出登录”的部分让当前用户退出登录,并从 Twilio Voice 取消注册。
这会断开所有正在进行的通话,并让设备不再接收 新的来电通知。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
const result = await CapacitorTwilioVoice.logout();console.log('Logout successful:', result.success);isLoggedIn
“isLoggedIn” 部分检查用户当前是否已登录并持有有效的 access token。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
const status = await CapacitorTwilioVoice.isLoggedIn();if (status.isLoggedIn && status.hasValidToken) { console.log('User identity:', status.identity);} else { // Re-authenticate the user}makeCall
“makeCall” 部分向电话号码或客户端发起外呼。
用户必须先登录才能拨打电话。通话将通过你的 Twilio 后端配置进行路由。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
// Call a phone numberconst result = await CapacitorTwilioVoice.makeCall({ to: '+1234567890'});console.log('Call SID:', result.callSid);
// Call another Twilio client with a readable name for CallKit Recentsawait CapacitorTwilioVoice.makeCall({ to: 'client:alice', displayName: 'Alice Smith'});
// Call a PSTN number using a specific caller IDawait CapacitorTwilioVoice.makeCall({ to: '+1234567890', callerId: '+10987654321'});acceptCall
“acceptCall” 章节接听呼入电话。
应当在响应 ‘callInviteReceived’ 事件时调用此方法。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
CapacitorTwilioVoice.addListener('callInviteReceived', async (data) => { console.log('Incoming call from:', data.from); const result = await CapacitorTwilioVoice.acceptCall({ callSid: data.callSid }); console.log('Call accepted:', result.success);});rejectCall
“rejectCall” 章节拒接呼入电话。
应在收到 ‘callInviteReceived’ 事件时调用此方法。 主叫方将听到忙音,或被转接到语音信箱。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
CapacitorTwilioVoice.addListener('callInviteReceived', async (data) => { if (shouldRejectCall(data.from)) { await CapacitorTwilioVoice.rejectCall({ callSid: data.callSid }); }});endCall
“endCall” 章节结束当前通话。
如果未提供 callSid,此操作将结束当前正在进行的通话。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
// End the current active callawait CapacitorTwilioVoice.endCall({});
// End a specific callawait CapacitorTwilioVoice.endCall({ callSid: 'CA1234567890abcdef'});muteCall
“muteCall” 章节在通话中静音或取消静音麦克风。
静音时,对方将听不到你麦克风的声音。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
// Mute the microphoneawait CapacitorTwilioVoice.muteCall({ muted: true});
// Unmute the microphoneawait CapacitorTwilioVoice.muteCall({ muted: false});setSpeaker
“setSpeaker” 章节启用或禁用扬声器模式。
启用后,音频将通过设备的扬声器而非听筒播放。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
// Enable speakerphoneawait CapacitorTwilioVoice.setSpeaker({ enabled: true});
// Disable speakerphoneawait CapacitorTwilioVoice.setSpeaker({ enabled: false});getCallStatus
标题为 “getCallStatus” 的章节获取当前通话的状态。
该方法提供通话状态、静音状态、 保持状态以及通话标识符的实时信息。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
const status = await CapacitorTwilioVoice.getCallStatus();if (status.hasActiveCall) { console.log('Call SID:', status.callSid); console.log('Call State:', status.callState); console.log('Is Muted:', status.isMuted); console.log('Is On Hold:', status.isOnHold);}checkMicrophonePermission
标题为 “checkMicrophonePermission” 的章节检查是否已获得麦克风权限。
此操作不会请求权限,仅检查当前的权限状态。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
const result = await CapacitorTwilioVoice.checkMicrophonePermission();if (!result.granted) { console.log('Microphone permission not granted');}requestMicrophonePermission
标题为 “requestMicrophonePermission” 的章节向用户请求麦克风权限。
在 iOS 和 Android 上,如果尚未授予权限,会显示系统权限对话框。如果之前权限被拒绝,用户可能需要在系统设置中授予权限。
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
const result = await CapacitorTwilioVoice.requestMicrophonePermission();if (result.granted) { console.log('Microphone permission granted');} else { console.log('Microphone permission denied');}类型参考
“类型参考” 章节CallInvite
标题为“CallInvite”的章节用于在移动应用中集成 Twilio Voice 功能的 Capacitor 插件。
export interface CallInvite { /** Unique identifier for the incoming call invitation */ callSid: string; /** Phone number or client identifier of the caller (may include custom caller name) */ from: string; /** Phone number or client identifier being called */ to: string; /** Custom parameters passed with the call invitation */ customParams: Record<string, string>;}单一事实来源
标题为“单一事实来源”的部分本页面由插件的 src/definitions.ts生成。当上游的公共 API 发生变化时,请重新运行 sync。
从入门指南继续
“从入门指南继续”章节如果你正在使用 快速入门 要规划 dashboard 和 API 操作,请将其连接到 使用 @capgo/capacitor-twilio-voice 在“使用 @capgo/capacitor-twilio-voice”中实现原生能力, API 概览 关于 API Overview 中的实现细节, 简介 关于 Introduction 中的实现细节, API 密钥 有关 API Keys 的实现细节,以及 设备 有关 Devices 的实现细节。