Quick Start

Omnitalk SDK는 쉽고 간편하게 WebRTC 기술을 이용할 수 있도록 만들어진 패키지입니다. Omnitalk SDK의 모든 API는 async ~ await 구조로 작성되었습니다. 요청이 실패하면 에러를 throw 합니다. 상세 API 사용법은Typescript API 를 참조 바랍니다.

1:1 영상 통화

1. 옴니톡 객체 생성

콘솔에서 발급받은 Service ID로 Omnitalk 객체를 생성합니다.

import { Omnitalk } from "omnitalk-ts-sdk";

const SERVICE_ID = '발급받은 service id';
const SERVICE_KEY = '발급받은 service key';

Omnitalk.sdkInit(SERVICE_ID, SERVICE_KEY);
const sdk = Omnitalk.getInstance();

2. 세션 생성

인수로 전달한 user_id로 세션을 생성하게 됩니다. user_id 생략시 Omnitalk 서버에서 임의의 ID를 부여합니다.

const sessionResult = await sdk.createSession('alice');
const session = sessionResult.session

3. 발신

1:1 영상 통화를 구현하기 위한 발신 기능은 offerCall API를 이용합니다. 영상을 화면에 재생하기 위해서 caller 및 callee의 영상을 담을 사용자 지정 tag id를 전달할 수 있습니다(미지정시 옴니톡 Tag Rule에 따른 id를 사용하시면 됩니다).

offerCall 호출이 성공하면 caller에게는 RINGBACK_EVENT가, callee에게는 RINGING_EVENT가 전달됩니다.

import { CALL_TYPE } from "omnitalk-ts-sdk/dist/public-types/common";

const localVideo = 'videotag1';
const remoteVideo = 'videotag2'; 
const callee = 'test@omnistory.net';

await sdk.offerCall(CALL_TYPE.VIDEO_CALL, callee, true, localVideo, remoteVideo);

4. 수신

callee측에서는 RINGING_EVENT를 받고 통화를 수락하거나 거절할 수 있습니다. 통화 수락은 answerCall API를 이용합니다. 영상을 화면에 재생하기 위해서 caller 및 callee의 영상을 담을 사용자 지정 tag id를 전달할 수 있습니다(미지정시 옴니톡 Tag Rule에 따른 id를 사용하시면 됩니다).

answerCall이 정상적으로 수행되면 caller, callee 양측은 CONNECTED_EVENT를 받습니다. 수신 거절은 leave API를 이용하시면 됩니다.

import { OmniEvent } from "omnitalk-ts-sdk/dist/public-types/common"

sdk.on('event', async(msg) => {
    if (msg.cmd == OmniEvent.RINGING_EVENT) {
        const ringingMsg = msg as EventRinging;
        await omnitalk.answerCall();
    } else if (msg.cmd == OmniEvent.CONNECTED_EVENT) {
	console.log(msg.session);
    }
});

영상 회의

1. 옴니톡 객체 생성

콘솔에서 발급받은 Service ID로 Omnitalk 객체를 생성합니다.

import { Omnitalk } from "omnitalk-ts-sdk";

const SERVICE_ID = '발급받은 service id';
const SERVICE_KEY = '발급받은 service key';

Omnitalk.sdkInit(SERVICE_ID, SERVICE_KEY);
const sdk = Omnitalk.getInstance();

2. 세션 생성

인수로 전달한 user_id로 세션을 생성하게 됩니다. user_id 생략시 Omnitalk 서버에서 임의의 ID를 부여합니다.

const sessionResult = await sdk.createSession('alice');
const session = sessionResult.session

3. 룸 생성

영상 회의를 위한 룸을 생성합니다.

import { VIDEOROOM_TYPE } from "omnitalk-ts-sdk/dist/public-types/common"

const roomResult = await sdk.createRoom(VIDEOROOM_TYPE.VIDEO_ROOM);

4. 룸 참여

룸에 참여하게 되면 음성과 채팅 메시지를 주고 받을 수 있는 상태가 됩니다.

const roomId = roomResult.room_id;
await sdk.joinRoom(roomId);

5. 방송 시작

publish API 호출시 방송을 시작합니다. 영상을 화면에 재생하기 사용자 지정 tag id를 전달할 수 있습니다(미지정시 옴니톡 Tag Rule에 따른 id를 사용하시면 됩니다).

cosnt pubResult = await sdk.publish('Omnitalk-LocalVideo-0');

6. 방송 구독

구독하고자는 방송의 session을 인수로 전달하면 해당 방송을 구독할 수 있습니다. 영상을 화면에 재생하기 사용자 지정 tag id를 전달할 수 있습니다(미지정시 옴니톡 Tag Rule에 따른 id를 사용하시면 됩니다).

const pubSession = pubResult.session;
await sdk.subscribe(pubSession, 'Omnitalk-RemoteVideo-0');

Last updated