跳转至正文

Twilio Voice Capacitor 插件

使用 Twilio Voice 拨打和接听 VoIP 电话,实现应用内通话功能

安装

bun add @capgo/capacitor-twilio-voice bunx cap sync
npm、pnpm 或 yarn
  • npm install @capgo/capacitor-twilio-voice
  • pnpm add @capgo/capacitor-twilio-voice
  • yarn add @capgo/capacitor-twilio-voice

指南

如何在 Capacitor 中使用 Twilio Voice

使用 @capgo/capacitor-twilio-voice

将 Twilio Voice SDK 集成到 Capacitor 中

安装

bun add @capgo/capacitor-twilio-voice
bunx cap sync

bunx cap sync 将插件的原生 code 复制到你的原生项目中。每次升级插件后都要重新运行。

导入

import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';

API 概览

方法 描述
login 使用 access token 通过 Twilio Voice 验证用户身份。
logout 让当前用户退出登录,并从 Twilio Voice 取消注册。
isLoggedIn 检查用户当前是否已登录并持有有效的 access token。
makeCall 向电话号码或客户端发起外呼。
acceptCall 接听呼入电话。
rejectCall 拒接呼入电话。
endCall 结束当前通话。
muteCall 在通话过程中静音或取消静音麦克风。
setSpeaker 启用或禁用扬声器模式。
getCallStatus 获取当前通话的状态。
checkMicrophonePermission 检查是否已获得麦克风权限。
requestMicrophonePermission 请求用户授权麦克风权限。

示例

login()

使用 access token 通过 Twilio Voice 验证用户身份。

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()

检查用户当前是否已登录并持有有效的 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()

向电话号码或客户端发起外呼。

import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';

// Call a phone number
const result = await CapacitorTwilioVoice.makeCall({
  to: '+1234567890'
});
console.log('Call SID:', result.callSid);

// Call another Twilio client with a readable name for CallKit Recents
await CapacitorTwilioVoice.makeCall({
  to: 'client:alice',
  displayName: 'Alice Smith'
});

// Call a PSTN number using a specific caller ID
await CapacitorTwilioVoice.makeCall({
  to: '+1234567890',
  callerId: '+10987654321'
});

acceptCall()

接听呼入电话。

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()

拒接呼入电话。

import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';

CapacitorTwilioVoice.addListener('callInviteReceived', async (data) => {
  if (shouldRejectCall(data.from)) {
    await CapacitorTwilioVoice.rejectCall({
      callSid: data.callSid
    });
  }
});

上表列出了 12 个核心方法。监听器、版本辅助方法以及每个方法的完整接口约定,详见 GitHub 仓库.

监听事件

addListener 会返回一个句柄。调用 handle.remove() 在屏幕卸载时,或者调用 CapacitorTwilioVoice.removeAllListeners() 以清除所有监听器。

完整参考文档

继续使用 @capgo/capacitor-twilio-voice

如果你正在使用 使用 @capgo/capacitor-twilio-voice 要规划原生插件工作,请将其与 @capgo/capacitor-twilio-voice 有关 @capgo/capacitor-twilio-voice 的实现细节, 快速入门 有关“入门指南”中的实现细节, Capgo 插件目录 查看 Capgo 插件目录中的产品工作流, Capgo 提供的 Capacitor 插件 有关 Capgo 开发的 Capacitor 插件的实现细节,以及 添加或更新插件 有关添加或更新插件的实现细节。

常见问题

Twilio Voice 插件常见问题

如何在 Capacitor 应用中安装 Twilio Voice 插件?

运行 "bun add @capgo/capacitor-twilio-voice"(或 "npm install @capgo/capacitor-twilio-voice"),然后运行 "bunx cap sync" 使 iOS 和 Android 项目同步原生 code。最后在你的应用 code 中从 "@capgo/capacitor-twilio-voice" 导入即可。

@capgo/capacitor-twilio-voice 是否支持 React、Vue 和 Angular?

支持。Twilio Voice 是一个 Capacitor 包,因此它可以与任何在 Capacitor 中运行的 Web 框架配合使用,包括 Ionic、React、Vue、Angular、Svelte 以及原生 JavaScript。

@capgo/capacitor-twilio-voice 支持哪个 Capacitor 版本?

Capgo 插件遵循 Capacitor 的主版本号:请使用与 Capacitor 主版本号一致的插件主版本(例如插件 v8 对应 Capacitor 8)。GitHub README 中的兼容性表列出了仍在维护的版本。

@capgo/capacitor-twilio-voice 是免费开源的吗?

Yes. The source code is public on GitHub at https://github.com/Cap-go/capacitor-twilio-voice/ and the package is free to install from npm. Bug reports and pull requests are welcome.

我能否在无需经过 App Store 审核的情况下,更新使用了 Twilio Voice 的 code?

安装或升级插件会改动原生 code,因此需要重新做一次商店构建。之后,调用该插件的 JavaScript、HTML 和 CSS 改动就能通过 Capgo live updates 立即发布。

无需等待 App 审核,即可发布 Twilio Voice 变更

只要插件已包含在你的商店版本中,Capgo live updates 就能在几分钟内把 JavaScript、HTML 和 CSS 的改动推送给用户。

开始使用 Capgo