그룹 음성 통화
그룹 음성 통화를 구현하는 예제 코드입니다.
필수 조건
시작하기 전에 다음 작업을 수행해야 합니다.
- PlanetKit을 초기화하세요.
- 적절한 액세스 토큰을 획득하세요.
- 그룹 통화 흐름에서 전반적인 API 사용 과정을 확인하세요.
오디오 엘리먼트 구현
그룹 음성 통화에서 그룹 음성을 재생하기 위한 오디오 엘리먼트를 준비합니다.
<html>
<div>
<audio id="room-audio" autoplay></audio>
</div>
</html>
<script>
const roomAudioElement = document.getElementById('room-audio');
</script>
그룹 통화 입장
그룹 통화 생성과 설정을 위한 ConferenceParams 객체를 만듭니다.
- 로컬 사용자의 초기 오디오 상태는
ConferenceParams의micOn으로 설정할 수 있습니다.micOn의 기본값은true입니다.micOn을false로 설정하면 통화 시작 시 마이크가 활성화되지 않고 오디오가 전송되지 않습니다. 통화가 연결된 후muteMyAudio(false)를 호출하면 로컬 사용자의 오디오를 전송할 수 있습니다.
const conferenceParams = {
myId: 'MY_ID',
myServiceId: 'MY_SERVICE_ID',
roomId: 'ROOM_ID',
roomServiceId: 'ROOM_SERVICE_ID',
accessToken: 'ACCESS_TOKEN',
mediaType: 'audio',
micOn: false,
mediaHtmlElement: {
roomAudio: roomAudioElement
},
delegate: {
// For each of the following, add your own implementation or assign an event handler that matches the signature
evtConnected: () => {},
evtDisconnected: (disconnectedParam) => {},
evtMyAudioMuted: () => {},
evtMyAudioUnmuted: () => {}
}
};
ConferenceParams 객체를 인자로 joinConference()를 호출하세요. joinConference() 호출에 실패한 경우 아래 두 경우로 나눠 실패 원인을 확인할 수 있습니다.
- 통화 연결 시도 시 실패하는 경우
Promise.reject()로 반환되는JoinConferenceError에서START_FAIL_REASON을 확인해 실패 원인을 파악할 수 있습니다.
- 통화 연결 후 실패하는 경우
- 통화 연결 후에는
ConferenceParams.delegate의evtDisconnected이벤트를 통해 실패 원인을 확인할 수 있습니다. 통화 종료 이유와 관련된 자세한 내용은 통화 종료 이유를 참고하세요.
- 통화 연결 후에는
planetKit.joinConference(conferenceParams)
.then(() => {
// Successfully joined a conference
})
.catch((joinConferenceError) => {
// Failed to join a conference
// joinConferenceError.reason: START_FAIL_REASON
// joinConferenceError.message: A descriptive message about the failure.
});
로컬 사용자의 미디어 상태 확인(선택 사항)
delegate에 등록한 evtMyAudioMuted와 evtMyAudioUnmuted 콜백은 로컬 사용자의 오디오가 음 소거되거나 음 소거 해제될 때 호출됩니다. 이 이벤트는 UI 업데이트 등에 활용할 수 있습니다.
getMyMediaStatus()를 호출하면 현재 로컬 사용자의 미디어 상태를 즉시 확인할 수 있습니다(통화가 연결되지 않은 경우 undefined 반환).
const status = planetKit.getMyMediaStatus();
if (status) {
// status.isMyAudioMuted: Whether the local user's audio is muted
}
그룹 통화 퇴장
그룹 통화에서 퇴장하려면 leaveConference()를 호출하세요.
planetKit.leaveConference();