Channel Developers

thumbnail

Function


채널톡에서 앱의 기능을 요청하기 위해 사용하는 프로토콜입니다. 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}

채널톡→앱 서버로 호출되는 요청입니다

JSON

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

  1. signing key를 hexadecimal bytes로 encode 합니다.

  2. request body는 UTF-8 bytes로 encode 합니다.

  3. 1번에서 구한 시크릿 키와 HMAC SHA-256 함수로 2번에서 구한 값의 다이제스트를 구합니다.

  4. 다이제스트를 base64로 encode 합니다.

  5. header의 X-Signature 값과 4번에서 구한 값이 같은지 비교합니다.

Java

field

type

notes

result

object or array

요청 처리 성공시 응답값을 가진 필드

error

object

요청 에러시 에러 오브젝트

성공 여부에 따라 result 또는 error 를 반환해야 합니다.

JSON
JSON

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

JSON

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

요청 에러시 에러 오브젝트

JSON
JSON

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

JSON

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

요청 에러시 에러 오브젝트

JSON
JSON

field

type

notes

type

string

에러 타입

message

string

에러 메세지

App

registerCommands

JSON

Channel

writeGroupMessage

JSON

writeUserChatMessage

JSON

getManager

JSON

batchGetManagers

JSON

searchManagers

JSON

getUserChat

JSON

getUser

JSON

getChannel

JSON

manageUserChat

JSON

Manager

writeGroupMessageAsManager

JSON

writeUserChatMessageAsManager

JSON

writeDirectChatMessageAsManager

JSON

User

writeUserChatMessageAsUser

JSON