boot

SDK 사용을 위한 초기 설정을 진행합니다.
채널 버튼이 나타나고, 마케팅 팝업 등 여러 기능들이 동작할 준비를 마칩니다.

더 자세한 내용은 부트를 참고하세요.

ChannelIO('boot', bootOption: object, callback?: Function)
매개변수타입설명
bootOptionobjectSDK 사용을 위한 초기 설정 정보가 담긴 부트 옵션.
callback(optional) Function부트 이후 호출되는 콜백 함수.
부트 실패 시 첫 번째 인자로 에러 객체를, 두 번째 인자로 null을 전달합니다.
부트 성공 시 첫 번째 인자로 null을, 두 번째 인자로 유저 객체를 전달합니다.
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 인자는 무시됩니다. 해당 유저챗이 존재하지 않으면 에러페이지가 보여집니다.

동작chatIdmessage비고
새로운 유저챗을 엽니다.undefinedundefined워크플로우가 운영 중인 경우, 워크플로우가 진행됩니다.
메시지가 입력된 새로운 유저챗을 엽니다.undefinedstring워크플로우가 운영 중인 경우, 워크플로우가 진행됩니다. message는 워크플로우가 완료된 후 입력창에 입력됩니다.
특정 유저챗을 엽니다stringundefinedchatId가 유효하지 않을 경우 에러페이지가 보여집니다.
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)
매개변수타입설명
workflowIdstring워크플로우의 id. 전달한 workflowId에 대응하는 워크플로우가 존재하지 않으면 에러페이지가 보여집니다.
// id가 '123'인 워크플로우가 존재할 경우, 해당 워크플로우가 실행됩니다.
// 만약 존재하지 않을 경우, 에러페이지가 보여집니다.
ChannelIO('openWorkflow', '123');

track

이벤트를 추적합니다.

한 번도 생성된 적이 없는 이벤트를 추적할 경우 해당 이벤트가 새로 생성됩니다.
이벤트가 새로 생성되어 데스크 상에서 보여지기까지 짧게는 수 분에서, 길게는 몇 시간이 소요될 수 있습니다.

ChannelIO('track', eventName: string, eventProperty?: object);
매개변수타입설명
eventNamestring이벤트의 이름. 최대 30글자를 넘지 않아야 합니다.
eventProperty(optional) object이벤트의 속성.
// 예시 1
ChannelIO('track', 'OrderRequest');

// 예시 2
ChannelIO('track', 'Order', {
  "price": 100,
  "currency": 'USD'
});

onShowMessenger

메신저가 열릴 때 실행될 콜백 함수를 등록합니다.

ChannelIO('onShowMessenger', callback: Function);
매개변수타입설명
callbackFunction메신저가 열릴 때 실행될 콜백 함수.
ChannelIO('onShowMessenger', function onShowMessenger() {
	console.log('Messenger is shown.');
});

onHideMessenger

메신저가 닫힐 때 실행될 콜백 함수를 등록합니다.

ChannelIO('onHideMessenger', callback: Function);
매개변수타입설명
callbackFunction메신저가 닫힐 때 실행될 콜백 함수.
ChannelIO('onHideMessenger', function onHideMessenger() {
	console.log('Messenger is hidden.');
});

onBadgeChanged

유저가 아직 읽지 않은 메시지의 수가 바뀔 때 실행될 콜백 함수를 등록합니다.

ChannelIO('onBadgeChanged', callback: Function);
매개변수타입설명
callbackFunction유저가 아직 읽지 않은 메시지의 수가 바뀔 때 실행될 콜백 함수.
callback은 첫 번째 인자로 unread를, 두 번째 인자로 alert를 전달합니다.
unread는 유저가 읽지 않은 모든 메시지 숫자입니다. alert 메시지의 수를 포함합니다. 채널 버튼에서 빨간 점으로 알림이 표현됩니다.
alert는 유저가 읽지 않은 주요 메시지 숫자입니다. 채널 버튼에서 숫자로 알림이 표현됩니다.
ChannelIO('onBadgeChanged', function onBadgeChanged(unread, alert) {
	console.log(`Unread is changed to ${unread}, alert is changed to ${alert}.`);
});

onChatCreated

유저챗이 생성되었을 때 실행될 콜백 함수를 등록합니다.

ChannelIO('onChatCreated', callback: Function);
매개변수타입설명
callbackFunction유저챗이 생성되었을 때 실행될 콜백 함수.
ChannelIO('onChatCreated', function onChatCreated() {
	console.log('New Chat is created.');
});

onFollowUpChanged

유저가 프로필을 변경했을 때 실행될 콜백 함수를 등록합니다.

ChannelIO('onFollowUpChanged', callback: Function);
매개변수타입설명
callbackFunction유저가 프로필을 변경할 때 실행될 콜백 함수.
인자로 유저의 프로필 객체를 전달 받습니다.

콜백 함수의 인자로 전달되는 프로필 객체는 아래 필드로 구성되어 있습니다.

속성타입설명
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);
매개변수타입설명
callbackFunction유저가 링크를 클릭했을 때 실행될 콜백 함수.
인자로 유저가 클릭한 링크의 URL을 전달 받습니다.
ChannelIO('onUrlClicked', function onUrlClicked(url) {
  console.log(`User clicked url: ${url}`);
});

clearCallbacks

아래 API로 등록한 모든 콜백 함수를 제거합니다.

ChannelIO('clearCallbacks');

updateUser

유저의 정보를 업데이트합니다.

ChannelIO('updateUser', userObject: object, callback?: Function);
매개변수타입설명
userObjectobject변경하려는 유저의 정보를 담은 객체.
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)
매개변수타입설명
tagsstring[]추가할 태그가 담겨있는 배열.
같은 태그가 여러 개 존재하는 경우, 하나의 태그만 추가됩니다. 최대 10개의 태그를 전달할 수 있습니다. 태그는 언제나 소문자로 추가됩니다.
callback(optional) FunctionaddTags 이후 호출되는 콜백 함수.
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)
매개변수타입설명
tagsstring[]제거할 태그가 담겨있는 배열.
일치하는 태그가 없는 경우, 해당 태그는 무시됩니다. null이나 빈 배열([])은 허용되지 않습니다.
callback(optional) FunctionremoveTags 이후 호출되는 콜백 함수.
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>)
매개변수타입설명
pagestring변경할 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을 수동으로 실행해줘야 하는 경우는 hideChannelButtonOnBoottrue로 전달했거나, 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');