boot
SDK 사용을 위한 초기 설정을 진행합니다.
채널 버튼이 나타나고, 마케팅 팝업 등 여러 기능들이 동작할 준비를 마칩니다.
더 자세한 내용은 부트를 참고하세요.
ChannelIO('boot', bootOption: object, callback?: Function)
ChannelIO('boot', {
pluginKey: 'YOUR_PLUGIN_KEY'
}, function onBoot(error, user) {
if (error) {
console.error(error);
} else {
console.log('boot success', user);
}
});
shutdown
SDK 내에서 실행 중인 모든 작업을 중단하고, 내부 데이터를 초기화 합니다.
ChannelIO('shutdown');
showMessenger
메신저를 엽니다.
ChannelIO('showMessenger');
hideMessenger
메신저를 닫습니다.
ChannelIO('hideMessenger');
openChat
유저챗을 엽니다.
chatId
인자로 빈 값을 전달하면 새 유저챗이 열립니다. 이때, message
인자를 전달하면 해당 메시지가 입력창에 입력됩니다. 만약 워크플로우가 활성화된 경우, 워크플로우 작동합니다.
chatId
인자로 전달한 값에 대응하는 유저챗이 존재하면 해당 유저챗이 열립니다. 이때, message
인자는 무시됩니다. 해당 유저챗이 존재하지 않으면 에러페이지가 보여집니다.
동작 | chatId | message | 비고 |
---|---|---|---|
새로운 유저챗을 엽니다. | undefined | undefined | 워크플로우가 운영 중인 경우, 워크플로우가 진행됩니다. |
메시지가 입력된 새로운 유저챗을 엽니다. | undefined | string | 워크플로우가 운영 중인 경우, 워크플로우가 진행됩니다. message 는 워크플로우가 완료된 후 입력창에 입력됩니다. |
특정 유저챗을 엽니다 | string | undefined | chatId 가 유효하지 않을 경우 에러페이지가 보여집니다. |
ChannelIO('openChat', chatId?: string, message?: string)
매개변수 | 타입 | 설명 |
---|---|---|
chatId | (optional) string | 유저챗의 id. |
message | (optional) string | 새로운 유저챗이 열릴 때 메시지 입력창에 들어갈 문자열. |
// 새로운 유저챗이 열립니다.
ChannelIO('openChat');
// 새로운 유저챗이 열리고, 메시지 입력창에 'Text here'가 입력됩니다.
// 만약 워크플로우가 운영 중인 경우, 워크플로우가 진행됩니다. 워크플로우가 완료된 후 메시지 입력창에 'Text here'가 입력됩니다.
ChannelIO('openChat', undefined, 'Text here');
// id가 '123'인 유저챗이 존재할 경우, 해당 유저챗이 열립니다.
// 만약 존재하지 않을 경우, 에러페이지가 보여집니다.
ChannelIO('openChat', '123');
openWorkflow
유저챗을 열며 특정 워크플로우를 실행합니다.
- 워크플로우 트리거가 “채널톡 버튼에서 새 상담을 시작할 때”로 설정된 경우에만 가능합니다.
workflowId
인자로 전달한 값에 대응하는 워크플로우가 존재하면 해당 워크플로우가 실행됩니다. 만약workflowId
를 전달하지 않으면 아무런 동작이 수행되지 않습니다.- 전달한 workflowId에 대응하는 워크플로우가 존재하지 않으면 에러페이지가 보여집니다.
ChannelIO('openWorkflow', workflowId: string)
매개변수 | 타입 | 설명 |
---|---|---|
workflowId | string | 워크플로우의 id. 전달한 workflowId 에 대응하는 워크플로우가 존재하지 않으면 에러페이지가 보여집니다. |
// id가 '123'인 워크플로우가 존재할 경우, 해당 워크플로우가 실행됩니다.
// 만약 존재하지 않을 경우, 에러페이지가 보여집니다.
ChannelIO('openWorkflow', '123');
track
이벤트를 추적합니다.
한 번도 생성된 적이 없는 이벤트를 추적할 경우 해당 이벤트가 새로 생성됩니다.
이벤트가 새로 생성되어 데스크 상에서 보여지기까지 짧게는 수 분에서, 길게는 몇 시간이 소요될 수 있습니다.
ChannelIO('track', eventName: string, eventProperty?: object);
매개변수 | 타입 | 설명 |
---|---|---|
eventName | string | 이벤트의 이름. 최대 30글자를 넘지 않아야 합니다. |
eventProperty | (optional) object | 이벤트의 속성. |
// 예시 1
ChannelIO('track', 'OrderRequest');
// 예시 2
ChannelIO('track', 'Order', {
"price": 100,
"currency": 'USD'
});
onShowMessenger
메신저가 열릴 때 실행될 콜백 함수를 등록합니다.
ChannelIO('onShowMessenger', callback: Function);
매개변수 | 타입 | 설명 |
---|---|---|
callback | Function | 메신저가 열릴 때 실행될 콜백 함수. |
ChannelIO('onShowMessenger', function onShowMessenger() {
console.log('Messenger is shown.');
});
onHideMessenger
메신저가 닫힐 때 실행될 콜백 함수를 등록합니다.
ChannelIO('onHideMessenger', callback: Function);
매개변수 | 타입 | 설명 |
---|---|---|
callback | Function | 메신저가 닫힐 때 실행될 콜백 함수. |
ChannelIO('onHideMessenger', function onHideMessenger() {
console.log('Messenger is hidden.');
});
onBadgeChanged
유저가 아직 읽지 않은 메시지의 수가 바뀔 때 실행될 콜백 함수를 등록합니다.
ChannelIO('onBadgeChanged', callback: Function);
ChannelIO('onBadgeChanged', function onBadgeChanged(unread, alert) {
console.log(`Unread is changed to ${unread}, alert is changed to ${alert}.`);
});
onChatCreated
유저챗이 생성되었을 때 실행될 콜백 함수를 등록합니다.
ChannelIO('onChatCreated', callback: Function);
매개변수 | 타입 | 설명 |
---|---|---|
callback | Function | 유저챗이 생성되었을 때 실행될 콜백 함수. |
ChannelIO('onChatCreated', function onChatCreated() {
console.log('New Chat is created.');
});
onFollowUpChanged
유저가 프로필을 변경했을 때 실행될 콜백 함수를 등록합니다.
ChannelIO('onFollowUpChanged', callback: Function);
매개변수 | 타입 | 설명 |
---|---|---|
callback | Function | 유저가 프로필을 변경할 때 실행될 콜백 함수. 인자로 유저의 프로필 객체를 전달 받습니다. |
콜백 함수의 인자로 전달되는 프로필 객체는 아래 필드로 구성되어 있습니다.
속성 | 타입 | 설명 |
---|---|---|
name | (optional) string | null | 유저의 이름 |
email | (optional) string | null | 유저의 이메일 |
mobileNumber | (optional) string | null | 유저의 핸드폰 번호. E.164 포맷을 따릅니다. |
ChannelIO('onFollowUpChanged', function onFollowUpChanged(profile) {
console.log('User changed profile', profile);
});
onUrlClicked
유저가 링크를 클릭했을 때 실행될 콜백 함수를 등록합니다.
채널톡에서 유저가 클릭할 수 있는 링크는 아래와 같습니다.
- 마케팅 팝업의 링크 버튼/텍스트
- 유저챗에서 매니저 및 유저가 보낸 메시지의 링크 버튼/텍스트
ChannelIO('onUrlClicked', callback: Function);
매개변수 | 타입 | 설명 |
---|---|---|
callback | Function | 유저가 링크를 클릭했을 때 실행될 콜백 함수. 인자로 유저가 클릭한 링크의 URL을 전달 받습니다. |
ChannelIO('onUrlClicked', function onUrlClicked(url) {
console.log(`User clicked url: ${url}`);
});
clearCallbacks
아래 API로 등록한 모든 콜백 함수를 제거합니다.
ChannelIO('clearCallbacks');
updateUser
유저의 정보를 업데이트합니다.
ChannelIO('updateUser', userObject: object, callback?: Function);
매개변수 | 타입 | 설명 |
---|---|---|
userObject | object | 변경하려는 유저의 정보를 담은 객체. |
callback | (optional) Function | 유저의 정보를 업데이트 했을 때 실행되는 콜백 함수. 업데이트 실패 시 첫 번째 인자로 에러 객체를, 두 번째 인자로 null 을 전달합니다.업데이트 성공 시 첫 번째 인자로 null 을, 두 번째 인자로 유저 객체를 전달합니다. |
업데이트할 유저의 정보로 아래 필드를 전달할 수 있습니다.
필드 | 타입 | 설명 |
---|---|---|
language | (optional) string | 유저의 언어를 설정합니다.language 가 ‘ko’ 나 ‘ja’ 일 경우, 해당 언어로 채널톡 내부 UI의 텍스트가 변경됩니다. 그 이외의 경우에는 UI의 텍스트가 영어로 설정됩니다. |
profile | (optional) object | null | 유저의 프로필을 설정합니다.null 을 전달할 경우 전체 프로필이 초기화됩니다. profile 객체 내부의 특정 필드에 null 을 전달할 경우, 해당 필드의 값만 초기화됩니다. 빈 객체는 허용되지 않습니다. 필드명은 Camel Case를 따라야 합니다. mobileNumber 필드를 전달할 경우 e.164 포맷을 따라야 합니다. |
profileOnce | (optional) object | 유저의 프로필을 설정합니다.profileOnce 객체 내부 필드 중, 기존에 값이 존재하지 않는 필드에 대해서만 해당 필드를 추가합니다. |
tags | (optional) array | null | 유저의 태그를 설정합니다. 태그의 수는 최대 10개를 넘어가지 않아야 합니다. null 을 전달할 경우 태그가 초기화됩니다. 빈 배열은 허용되지 않습니다. |
unsubscribeEmail | (optional) boolean | 유저의 마케팅 이메일 구독 여부를 설정합니다. 값이 true 인 경우 구독을 중단합니다. |
unsubscribeTexting | (optional) boolean | 유저의 마케팅 SMS 구독 여부를 설정합니다. 값이 true 인 경우 구독을 중단합니다. |
const userObject = {
language: 'ko',
tags: ['a', 'b'],
profile: {
email: '[email protected]',
mobileNumber: '+821012345678',
name: 'test name',
},
profileOnce: {
customerType: 'vip',
registeredAt: '2022-11-22'
},
unsubscribeEmail: false,
unsubscribeTexting: true
};
ChannelIO('updateUser', userObject, function onUpdateUser(error, user) {
if (error) {
console.error(error);
} else {
console.log('updateUser success', user);
}
});
addTags
유저의 태그를 추가합니다.
ChannelIO('addTags', tags: array, callback?: Function)
매개변수 | 타입 | 설명 |
---|---|---|
tags | string[] | 추가할 태그가 담겨있는 배열. 같은 태그가 여러 개 존재하는 경우, 하나의 태그만 추가됩니다. 최대 10개의 태그를 전달할 수 있습니다. 태그는 언제나 소문자로 추가됩니다. |
callback | (optional) Function | addTags 이후 호출되는 콜백 함수.addTags 실패 시 첫 번째 인자로 에러 객체를, 두 번째 인자로 null 을 전달합니다.addTags 성공 시 첫 번째 인자로 null 을, 두 번째 인자로 유저 객체를 전달합니다. |
ChannelIO('addTags', ['tag1', 'tag2'], function onAddTags(error, user) {
if (error) {
console.error(error);
} else {
console.log('addTags success', user);
}
});
removeTags
유저의 태그를 제거합니다.
ChannelIO('removeTags', tags: array, callback?: Function)
매개변수 | 타입 | 설명 |
---|---|---|
tags | string[] | 제거할 태그가 담겨있는 배열. 일치하는 태그가 없는 경우, 해당 태그는 무시됩니다. null 이나 빈 배열([] )은 허용되지 않습니다. |
callback | (optional) Function | removeTags 이후 호출되는 콜백 함수.removeTags 실패 시 첫 번째 인자로 에러 객체, 두 번째 인자로 null 을 전달합니다.removeTags 성공 시 첫 번째 인자로 null 을, 두 번째 인자로 유저 객체를 전달합니다. |
ChannelIO('removeTags', ['tag1', 'tag2'], function onRemoveTags(error, user) {
if (error) {
console.error(error);
} else {
console.log('removeTags success', user);
}
});
setPage
page및 유저챗 프로필을 설정합니다.
page는 canonical URL 대신 사용될 수 있습니다.
매개변수
page
의 값으로null
이나undefined
를 전달하지 않도록 주의합니다.page를 초기화하려면, resetPage를 사용합니다.
매개변수 profile의 값으로 serialize 불가한 값(함수 등)이 포함되어 있는 경우, 해당 값은 제거되어 등록됩니다.
ChannelIO('setPage', page: string, profile?: Record<string, any>)
매개변수 | 타입 | 설명 |
---|---|---|
page | string | 변경할 page 값. |
profile | (optional)Record<string, any> | 유저챗 프로필 값.profile 객체 내부의 특정 필드에 null 을 전달할 경우, 해당 필드의 값만 초기화됩니다. 설정된 유저챗 프로필은 유저챗이 생성될 때 적용 됩니다. |
// page를 'https://example.com/product' 로 설정합니다.
ChannelIO('setPage', 'https://example.com/product');
// page를 'https://example.com/product' 로 설정하며, 유저챗 프로필 데이터를 설정합니다.
ChannelIO('setPage', 'https://example.com/product', {
currency: 'USD',
// ...
});
resetPage
setPage를 통해 설정된 page 및 유저챗 프로필 값을 초기화합니다.
resetPage
를 사용할 경우, page 값으로 기본값인 canonical URL이 사용됩니다.
ChannelIO('resetPage');
showChannelButton
채널 버튼을 보여줍니다.
showChannelButton
을 실행하지 않아도 부트 시 채널 버튼은 자동으로 나타납니다.
showChannelButton
을 수동으로 실행해줘야 하는 경우는 hideChannelButtonOnBoot를true
로 전달했거나, hideChannelButton을 호출한 경우입니다.
ChannelIO('showChannelButton');
hideChannelButton
채널 버튼을 숨깁니다.
ChannelIO('hideChannelButton');
setAppearance
테마를 변경합니다.
‘light’
: 라이트 테마를 사용합니다.‘dark’
: 다크 테마를 사용합니다.‘system’
: 시스템 테마를 따릅니다.null
: 데스크의 테마 설정을 따릅니다.
ChannelIO('setAppearance', appearance: ‘light’ | ‘dark’ | ‘system’ | null)
매개변수 | 타입 | 설명 |
---|---|---|
appearance | ‘light’ | ‘dark’ | ‘system’ | null | 변경할 테마의 값. |
ChannelIO('setAppearance', 'dark');