목차

반응형

1. 개요

2. 필요한 정보

3. 코드

4. 기타

 

 

 

 

1. 개요

대량의 유저 정보를 채널톡 Upsert API를 사용하여 Upsert 해야 하는 상황이다.

근데 설명서가 조온나 불친절하다. 에러코드도 제대로 정의 안되어있다.

그래서 채널톡 개발자랑 문의하면서 정리해놓은 Upsert API 활용 방법을 적도록 하겠다.

이미 개발자가 이런 게시물을 정리해서 작성해야 할 정라고 생각이 들 정도면 API Docs를 똑바로 못 만든 거다.

반성해라 채널톡

 

2. 필요한 정보

API를 사용하기 위한 최소한의 필요정보는 아래 3개다.

API 키 값 x-access-key, x-access-secret

유저 ID 정보

유저정보(profile 값)

 

 

API 키 값 x-access-key, x-access-secret 조회하는 방법

 

설정 > API 인증 및 관리
없으면 새로 만들어주자

 

유저 ID 정보

정말로 유저의 고유 ID 값이다. Upsert API니까 이미 채널톡에 등록되어 있는 ID를 사용하면 Update고 없는 ID면 Insert를 하게 된다.

 

유저정보(profile 값)

기입하고 싶은 유저 정보다. 이 부분은 본인 코드로 알아서 가져오도록 하자.

 

 

그러면 아래 3개의 데이터가 모였다. 이 데이터를 조합해서 채널톡의 API를 호출해야 한다.

API 키 값 x-access-key, x-access-secret

유저 ID 정보

유저정보(profile 값)

 

https://api.channel.io/open/v4/users/@유저ID정보

method: 'put',
            headers: {
                'Content-Type': 'application/json',
                'x-access-key': '----',
                'x-access-secret': '----'
            },
            data:유저정보

 

요런 식으로 쏴주면 되겠다. node의 axios 형식인데 알잘딱 이해하도록 하자!

 

3. 코드

나는 또 친절하기 때문에 node로 어떤 코드를 짜야하는지 내가 사용한 코드까지 올려두도록 하겠다.

let body = { "profile": {
	"name": data.name ? data.name : "미정",
	"mobileNumber": data.phone && data.phone.split('-').length === 3 ? `+8210${data.phone.split('-')[1]}${data.phone.split('-')[2]}` : "",
	"phoneVerified":data.phoneVerified
    }, 
"unsubscribed": data._doc._terms?.length >= 3 ? false : true }

let url = `https://api.channel.io/open/v4/users/@${data.id}`

let options = {
method: 'put',
  headers: {
    'Content-Type': 'application/json',
    'x-access-key': '----',
    'x-access-secret': '----'
  },
    data:body
}


await axios(url, options).then(result =>{
	console.log(result)
}).catch(error => {
	console.log(error)
})

 

 

4. 기타

- 전화번호는 +81 국제전화 양식으로 해야 한다.

- API docs의 example에 보면 "vanlia" : { profile: { ... } } 이런식으로 예제를 짜놨는데 개소리고 그냥 { profile : { ... } }만 넣어주면 된다.(여기서 빡침 ㅋㅋ 그러면 공식 문서에 왜 이따구로 써놨냐고)

- 추가한 필드가 유저 정보 리스트 조회 페이지에서 나오도록 하려면 "채널 설정 → 고객 프로필 정보"에서 설정 가능하다.

- 에러 문구가 불친절하니 님이 해석해서 해결하려는 에너지 낭비하지 말고 그냥 채널톡 왼쪽 하단의 "채널팀에 문의하기" 를 통하여 개발 문의를 하자(답변 빨리 옴, 근데 밤에 문의해놓으면 확인을 못하는지 아예 답장이 안 오니까 영업시간에 물어보도록 하자)

반응형