[네이버 클라우드 알림톡] API 호출 시 ‘메시지 내용이 템플릿와 일치하지 않음’ 에러 발생

sig03
4 min readJan 11, 2024

1.

네이버 클라우드를 통해 알림톡 발송 작업을 하고 있다. 카카오 비즈니스에서 알림톡을 발송하려면 카카오에 직접 작업할 수 없고 딜러사를 통해서 해야 한다. 딜러사는 여러개 있는데 그중 네이버 클라우드는 없다. 그럼에도 네이버 클라우드도 알림톡 발송 서비스를 지원한다. 고객 센터에 문의해보니 중간에 업체를 끼고 한다는데

카카오 ↔ 중간 업체 ↔ 네이버 클라우드

이런 구조로 연동을 지원하는 듯 하다. 공식 딜러사가 아니라 꺼림칙하지만 문자 발송을 네이버 클라우드로 쓰고 있어 편의를 위해 여기서 알림톡 발송을 하기로 결정했다. 안되는 부분 있으면 네이버가 알아서 해 주겠지. 하다가 안 되면 그때 공식 딜러사 이용하면 되고. 이런 마인드로 접근했다.

2.

아래와 같이 알림톡에 템플릿을 등록 후 템플릿과 동일하게 문자열을 작성해서 API 호출을 하면 된다. 이때 #{} 부분에 변경할 값을 넣으면 된다. #{} 부분 빼고 나머지는 다르면 안 된다.

# 템플릿 등록

안녕하세요?
#{name} 입니다.

#{message} 테스트 중입니다.

3.

템플릿을 등록 후 API 를 호출했더니 아래와 같은 에러가 발생했다. 템플릿과 동일하게 API 호출한 것 같은데 계속 아래와 같은 메시지가 나온다.

"requestStatusCode": "A000",
"requestStatusName": "success",
"requestStatusDesc": "성공",
"messageStatusCode": "3016",
"messageStatusName": "fail",
"messageStatusDesc": "메시지 내용이 템플릿과 일치하지 않음",

4.

고객 센터에 문의해보고 이유를 알았다. 줄바꿈을 위해 템플릿에 \n을 넣었던 게 문제였다.

# 템플릿 등록
안녕하세요?\n
#{name} 입니다.\n\n

#{message} 테스트 중입니다.\n
# API
message = '안녕하세요?\n#{name} 입니다.\n\n#{message} 테스트 중입니다.\n'

5.

템플릿 등록할 때 텍스트 창에서 줄바꿈을 하면 그게 줄바꿈으로 인식된다. 템플릿에 \n 같은 걸로 줄바꿈 문자를 넣을 필요가 없다. 템플릿 창에 \n을 넣으면 이것도 문자열로 인식해 버린다. 그런데 API 호출할 때는 \n을 줄바꿈으로 인식하고 문자열로 인식하지 않는다. 그러니까 템플릿에는 \n이 문자열로 들어가 있고 API 호출시에는 \n으로 줄바꿈을 해서 템플릿 입장에서는 \n 문자가 없는 API 호출인 것이다. 그래서 메시지가 다르다는 에러가 나온다.

그럴필요는 없지만 \n을 문자열로 인식시키려면 \\n과 같이 보내야 한다. 대신 이렇게하면 알림톡에도 \n 문자가 온다.

# API
message = '안녕하세요?\\n#{name} 입니다.\\n\\n#{message} 테스트 중입니다.\\n'

6.

정석은 아래와 같다.

  • 템플릿 등록창에서 줄바꿈을 한다. \n 같은걸 넣지 않는다.
  • API 호출시에는 줄바꿈용 \n (한칸 줄바꿈), \n\n (두칸 줄바꿈) 을 넣어서 템플릿의 줄바꿈과 맞춰준다.
# 템플릿 등록
안녕하세요?
#{name} 입니다.

#{message} 테스트 중입니다.
# API
message = '안녕하세요?\n#{name} 입니다.\n\n#{message} 테스트 중입니다.\n'

7.

문자 발송은 자유롭게 보낼 수 있는데, 알림톡은 템플릿 등록하고 검수받아야 하고 템플릿이랑 다르면 안 되는 등 제약이 많다. 굳이 쓰고싶지 않은 알림톡.

--

--