채널톡에서 앱의 기능을 요청하기 위해 사용하는 프로토콜입니다. http 위에서 json body 를 가지고 호출되며, body 의 method, params 를 이용해 호출할 rpc 의 이름과 파라미터를 식별합니다. 앱으로 오고 가는 모든 요청은 Function 스키마를 따라 전송됩니다.
Function 이 호출될 경우 개발자 페이지에 등록하신Function Endpoint로 HTTP PUT 요청을 전송하게 됩니다.
Function Endpoint 는 [앱 설정] - [기본 설정] - [서버 설정]에 등록할 수 있습니다.
요청을 받은 경우 Signing Key 를 발급받아 요청이 정당한 소스 (채널톡) 으로부터 온 것인지 검증할 수 있습니다.

앱 서버에서는 이러한 요청을 처리하고 응답을 할 수 있는 HTTP API 를 Function Endpoint 위에서 제공해야 합니다.
method | url | notes |
|---|---|---|
PUT | {Function Endpoint} | 채널톡→앱 서버로 호출되는 요청입니다 |
name | type | notes |
|---|---|---|
method | string | function 으로 호출할 특정 기능의 이름(rpc name) |
params | array or object | function body.function 에 전송할 json 데이터 |
context | object | function이 호출된 컨택스트 정보.아래에 기술 |
context 는 function 의 호출자 정보를 담고 있습니다.
후술한 x-Signature 검증을 수행하는 경우 context 에 담긴 정보는 신뢰 가능합니다
field | type | notes |
|
|---|---|---|---|
channel | object | 호출된 채널 아이디 |
|
caller | object | `type`: 호출자의 타입 - `app`, `user`, `manager` `id`: 호출자의 아이디 |
|
notes | name | required |
|---|---|---|
Signing Key 를 이용한 HMAC 서명 | X-Signature | true |
signing key를 hexadecimal bytes로 encode 합니다.
request body는 UTF-8 bytes로 encode 합니다.
1번에서 구한 시크릿 키와 HMAC SHA-256 함수로 2번에서 구한 값의 다이제스트를 구합니다.
다이제스트를 base64로 encode 합니다.
header의 X-Signature 값과 4번에서 구한 값이 같은지 비교합니다.
field | type | notes |
|---|---|---|
result | object or array | 요청 처리 성공시 응답값을 가진 필드 |
error | object | 요청 에러시 에러 오브젝트 |
성공 여부에 따라 result 또는 error 를 반환해야 합니다.
field | type | notes |
|---|---|---|
type | string | 에러 타입 |
message | string | 에러 메세지 |
앱에서 다른 앱의 function 역시 호출할 수 있습니다.
호출할 앱의 ID 와 앞서 설명한 Function 형식을 이용해 채널톡 api 서버로 요청을 전송합니다.
method | url | notes |
|---|---|---|
PUT | app-store-api.channel.io/general/v1/apps/{appID}/functions | 채널에 설치된 다른 앱의 함수를 호출합니다 |
name | notes | required |
|---|---|---|
x-access-token | 인증 및 권한에서 발급받은 채널 토큰 | true |
field | type | notes |
|---|---|---|
method | string | function 으로 호출할 기능의 이름(rpc name) |
params | array or object | function body.function 에 전송할 json 데이터 |
성공 여부에 따라 result 혹은 error 가 반환됩니다
field | type | notes |
|---|---|---|
result | array or object | 요청 처리 성공시 응답값을 가진 필드 |
error | object | 요청 에러시 에러 오브젝트 |
field | type | notes |
|---|---|---|
type | string | 에러 타입 |
message | string | 에러 메세지 |
Native Function 이란 채널톡에서 기본적으로 제공되는 Function 목록입니다. 유저챗에 메세지를 쓰거나, 매니저의 정보를 조회하는 등 채널톡 리소스를 조작하기 위해 사용합니다. 앱에서 Native Function 을 호출 하는 방법은 아래와 같습니다.
url | app-store-api.channel.io/general/v1/native/functions |
|---|---|
method | PUT |
notes | 채널톡 Native Function 을 호출합니다 |
name | notes | required |
|---|---|---|
x-access-token | 인증 및 권한에서 발급받은 채널 토큰 | true |
field | type | notes |
|---|---|---|
method | string | function 으로 호출할 특정 기능의 이름(rpc name) |
params | array or object | function body.function 에 전송할 json 데이터 |
성공 여부에 따라 result 또는 error 가 반환됩니다
field | type | notes |
|---|---|---|
result | object | 요청 처리 성공시 응답값을 가진 필드 |
error | object | 요청 에러시 에러 오브젝트 |
field | type | notes |
|---|---|---|
type | string | 에러 타입 |
message | string | 에러 메세지 |
App
registerCommands
Channel
writeGroupMessage
writeUserChatMessage
getManager
batchGetManagers
searchManagers
getUserChat
getUser
getChannel
manageUserChat
Manager
writeGroupMessageAsManager
writeUserChatMessageAsManager
writeDirectChatMessageAsManager
User
writeUserChatMessageAsUser