시작하기
이 플러그인의 설치 단계와 전체 markdown 가이드가 포함된 설정 프롬프트를 복사하세요.
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 지원 설정으로 플러그인을 설치할 수 있습니다. 다음 명령어로 AI 도구에 Capgo 스킬을 추가하세요:
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.Manual Setup을 선호한다면, 다음 명령어를 실행하여 플러그인을 설치하고 아래의 플랫폼별 지침을 따르세요:
npm install @capgo/capacitor-twilio-voicenpx cap sync가져오기
“Import” 섹션import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';빠른 시작
“Quick start” 섹션import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
await CapacitorTwilioVoice.login({ accessToken: tokenFromBackend });await CapacitorTwilioVoice.makeCall({ to: '+15551234567' });자주 하는 실수
“자주 하는 실수” 섹션- 토큰 TTL: 만료 전 Twilio 토큰을 갱신하세요.
- 인바운드: iOS VoIP 푸시를 설정하세요.
- 마이크 권한: 전화를 걸기 전에 요청해야 합니다.
API 개요
“API 개요” 섹션login
“login” 섹션액세스 토큰을 사용하여 Twilio Voice로 사용자를 인증합니다.
액세스 토큰은 Twilio 자격 증명을 사용하여 백엔드 서버에서 생성해야 합니다. 이 토큰은 Twilio Voice를 통해 전화를 걸거나 받기 위해 반드시 필요합니다.
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
const result = await CapacitorTwilioVoice.login({ accessToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'});console.log('Login successful:', result.success);logout
“logout” 섹션현재 사용자를 로그아웃하고 Twilio Voice 등록을 해제합니다.
로그아웃 시 진행 중인 모든 통화가 끊기며, 새로운 수신 전화 알림을 받지 않게 됩니다.
import { CapacitorTwilioVoice } from '@capgo/capacitor-twilio-voice';
const result = await CapacitorTwilioVoice.logout();console.log('Logout successful:', result.success);isLoggedIn
“isLoggedIn” 섹션사용자가 현재 로그인되어 있는지, 유효한 액세스 토큰을 보유하고 있는지 확인합니다.
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에서 생성되었습니다. public API가 업스트림에서 변경되면 동기화를 다시 실행하세요.
Getting Started에서 계속하기
“Getting Started에서 계속하기”라는 제목의 섹션사용 중인 경우 시작하기 대시보드와 API 운영을 계획하려면, 이를 다음 항목과 연결하세요: @capgo/capacitor-twilio-voice 사용하기 @capgo/capacitor-twilio-voice를 사용하여 네이티브 기능을 구현할 때, API 개요 API Overview의 구현 상세 내용은 소개 Introduction의 구현 상세 내용은 API 키 API Keys의 구현 세부 사항은, 디바이스 Devices의 구현 세부 사항은.