# SDK State

Omnitalk SDK는 내부적으로 사용자의 상태를 관리하고 있습니다. 각 상태별로 호출 가능한 API가 제한되며, 이 상태는 호출하는 API에 따라서 변하게 됩니다.

아래에서는 각 상태에 대한 설명과 상태별로 호출할 수 있는 API 목록을 보여줍니다.

## NULL\_STATE

세션 생성을 하지 않았거나 leave()를 호출하여 세션이 없는 상태를 의미합니다. 호출 가능한 API 목록은 아래와 같습니다.

* createSession

## SESSION\_STATE

createSession 호출을 성공하여 세션이 생성된 상태입니다. 이 상태에서는 회의실 등의 목록 조회가 가능하며 전화를 걸거나 받을 수 있고, 회의실에 참가 할 수 있습니다. 호출 가능한 API 목록은 아래와 같습니다.

* ~~sessionList (deprecated)~~
* roomList
* callList
* createRoom
* joinRoom
* offerCall
* answerCall
* makeSipNumber
* destroyRoom

## ACTIVE\_STATE

joinRoom 호출을 성공하여 회의실에 참가하여 음성 회의가 시작된 상태입니다. 이 상태에서는 회의실 참가자 목록 등의 목록 조회가 가능하며 다른 참가자의 영상을 송출하거나 구독할 수 있습니다. ( 영상 송출은 video room 타입에서만 가능 ) 호출 가능한 API 목록은 아래와 같습니다.

* partiList
* publishList
* screenList
* publish
* screenShare ( 회의실당 1명만 화면 공유 가능 )
* screenUnshare
* subscribe
* unsubscribe
* leave
* kickout
* sendMessage

## CONNECT\_STATE

publish 호출을 성공하여 영상을 송출하고 있는 상태입니다. 이 상태에서는 영상 회의실 참가자 목록 등의 목록 조회가 가능하며 다른 참가자의 영상을 구독할 수 있습니다. 호출 가능한 API 목록은 아래와 같습니다.

* partiList
* publishList
* screenList
* screenShare ( 회의실당 1명만 화면 공유 가능 )
* screenUnshare
* subscribe
* unsubscribe
* leave
* kickout
* sendMessage
* recordingStart
* recordingStop
