Channel Developers

thumbnail
카테고리

App

첫 Channel 앱 만들기

이 튜토리얼에서는 Channel 대화창에서 /tutorial을 입력하면 작은 앱 화면이 열리고, 버튼을 눌러 테스트 메시지를 보내는 앱을 만듭니다. 처음에는 TypeScript 경로를 권장합니다. Go를 사용한다면 Go로 진행하기로 이동하세요. 완성된 모습은 다음과 같습니다. 시작하기 전에 세 가지 용어만 알아두세요. - Function: 앱 서버가 수행하는 한 가지 작업입니다. 이 튜토리얼에서는 화면 열기와 메시지 보내기가 Function입니다. - Extension: 앱의 Function을 Channel의 기능과 연결하는 설정입니다. 여기서는 /tutorial Command를 연결합니다. - WAM: Channel 안에서 열리는 앱 화면입니다. 이 튜토리얼에서는 두 개의 메시지 전송 버튼을 보여줍니다. SDK가 Function 요청의 서명 확인, Extension 등록, WAM과 서버의 연결을 처리하므로 이 동작을 직접 구현할 필요는 없습니다. 1. 시작 전 준비 다음 항목이 필
첫 Channel 앱 만들기

핵심 개념

Channel 앱은 Function을 실행하는 서버와, 필요한 경우 WAM으로 만든 웹 UI로 구성됩니다. Extension은 여러 Function을 Channel의 표준 기능에 연결하고, AppStore는 호출·등록·권한의 경계를 담당합니다. Channel 클라이언트 → AppStore → 서명된 PUT /functions/v1 → SDK 검증·dispatch → Function handler Function 결과 → WAM 열기 → WAM SDK → 앱 Function 또는 Channel native function Function Function은 앱 서버에서 실행되는 하나의 타입이 있는 동작입니다. 호출 요청은 다음 값을 포함합니다. - method: 호출할 Function의 전체 이름 - params: 호출자가 보낸 입력 - context: AppStore가 구성한 호출자, 채널, 언어, 인증/config 정보 Handler는 보통 검증된 context와 params를 받아
핵심 개념

Function 등록

Function은 Channel 또는 다른 앱이 앱 서버에 요청하는 typed RPC입니다. 요청의 method가 Function의 전체 이름이고 params가 입력입니다. 앱 고유 Function은 orders.get처럼 standalone으로 등록하고, 표준 Extension Function은 Extension 이름과 relative name으로 전체 이름을 만듭니다. Wire contract 수신 요청은 다음 JSON-RPC-like envelope를 사용합니다. { "method": "orders.get", "params": { "orderId": "order-1" }, "context": { "caller": { "type": "manager", "id": "manager-id" }, "channel": { "id": "channel-id" } }, "systemVersion": "v1" } - method: discovery에 공개된 정확한 전체 Function 이름 -
Function 등록

Command 가이드

Command Extension은 user 또는 manager가 Channel의 desk/front command UI에서 앱 기능을 실행하게 합니다. Command metadata는 노출 방식과 입력을 정의하고, 실제 동작은 metadata가 가리키는 typed Function이 처리합니다. 현재 계약 Function 또는 field 필수 여부 역할 extension.command.metadata.getCommands 필수 Command definition을 discovery actionFunctionName Command별 필수 선택된 command 실행 autoCompleteFunctionName 선택 Parameter suggestion 반환 paramDefinitions[].autoComplete 선택 해당 parameter의 suggestion 활성화 commands에는 최대 30개의 definition을 반환할 수 있습니다. Metadata field 현재 제약 name
Command 가이드

WAM 가이드

WAM(Web App Module)은 Channel 클라이언트 안에서 열리는 앱의 React 웹 UI입니다. 앱 서버가 아니며 서버 credential을 보관하지 않습니다. Command, widget, custom tab처럼 사용자 상호작용이 필요한 Extension action에서 사용합니다. WAM을 여는 action Function이 다음과 같은 action result를 반환하면 Channel 클라이언트가 WAM을 엽니다. { "type": "wam", "attributes": { "appId": "public-app-id", "name": "tutorial", "wamArgs": { "view": "summary" } } } appId는 공개 식별자이고 name은 WAM 경로를 선택합니다. wamArgs는 브라우저에서 읽을 수 있으므로 secret, token, provider credential, 고객 원문을 넣지 마세요. Endpoint와 React 설정 Develop
WAM 가이드

Extension 전체 가이드

Extension이란 무엇인가 Extension은 typed app Function을 Channel의 표준 기능에 연결하는 이름과 버전이 있는 계약입니다. 앱이 공식 Function 이름과 schema를 구현하면 Channel 화면은 command, widget, custom tab, hook, OAuth 등 해당 기능을 discovery하고 호출할 수 있습니다. Extension은 보통 두 종류의 Function으로 구성됩니다. Function 종류 역할 예시 Metadata 또는 discovery 기능을 설명하고 runtime Function을 가리킴 extension.command.metadata.getCommands Runtime 또는 action 사용자에게 보이는 작업이나 background 작업을 실행 extension.command.command.execute Metadata는 orders.sync 같은 standalone app Function을 참조할 수도 있습니다.
Extension 전체 가이드

프로덕션 준비 가이드

설치된 Test Channel에서 앱의 전체 흐름이 동작한 뒤 이 문서를 사용하세요. 첫 앱 Quickstart를 완료하기 위한 필수 문서는 아닙니다. 동작하는 Function, Extension, 선택적 WAM을 안전하게 배포하고 rollback하며 관측·운영할 수 있는 release로 만드는 것이 목적입니다. 먼저 핵심 개념, Extension 전체 가이드, 필요한 family 상세 문서를 완료하세요. 정확한 API는 TypeScript 레퍼런스와 Go 레퍼런스를 기준으로 확인합니다. 이 가이드를 사용하는 방법 각 section을 release gate로 사용합니다. 앱에 해당하는 각 항목의 담당자, 검증 근거, rollback 결정을 기록하세요. Gate Release 전 필요한 근거 Contract Function schema, Extension discovery, permission 검토 완료 Security Signature, credential, authorization
프로덕션 준비 가이드