'1057 content에 치환되지 않은 변수가 있습니다' 오류가 발생합니다. #61
Answered
by
Palbahngmiyine
soo74
asked this question in
SOLAPI Q&A
-
사용 중인 프로그래밍 언어 및 버전Node.js v20.11.1 SDK 버전REST API 직접 호출 사용 (SDK 사용 안함) 운영 환경개발 환경 (로컬) 질문/문제 설명버튼 클릭시 카카오 알림톡 기능 구현중 '1057 content에 치환되지 않은 변수가 있습니다' 오류가 계속 발생합니다. 알림톡 템플릿에 등록된 변수와 코드상 변수가 일치한지 확인했고, 혹시 null이나 undefined 값들이 허용되지않을까봐 방어로직도 넣었습니다. 숫자값, 날짜값들도있어서 string으로도 치환해봤는데도 똑같은 오류가 납니다. 코드 예시// api 호출부
function safeString(value: any) {
return value === undefined || value === null ? '' : value.toString();
}
const requestBody = {
name: safeString(target.name),
phone: safeString(target.phone),
reserveDateTime: safeString(new Date().toLocaleString()),
carModel: safeString(target.carType),
departureDate: safeString(new Date(target.startDate).toLocaleDateString()),
useDays: safeString(target.days),
priceTotal: safeString(target.priceTotal)
};
// 카카오 알림톡 전송
await fetch('/api/kakao/send-alimtalk', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(requestBody),
});
// api 실행
import type { NextApiRequest, NextApiResponse } from 'next';
import defaultFetcher from '@/lib/defaultFetcher';
import { AuthenticationParameter } from '@/lib/authenticator';
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== 'POST') {
return res.status(405).json({ success: false, message: 'Method Not Allowed' });
}
const apiKey = process.env.API_KEY!;
const apiSecret = process.env.API_SECRET!;
function safeString(value: any) {
return value === undefined || value === null ? '' : value.toString();
}
function safeNumber(value: any) {
return value === undefined || value === null || value === '' ? 0 : Number(value);
}
const {
name, phone, reserveDateTime, carModel,
departureDate, useDays, priceTotal
} = req.body;
function forceStringify(obj: any) {
const result: any = {};
for (const key in obj) {
result[key] = obj[key] === undefined || obj[key] === null ? '' : obj[key].toString();
}
return result;
}
const variables = forceStringify(req.body);
const data = {
message: {
to: safeString(phone),
from: '010-1111-2222',
kakaoOptions: {
pfId: '생략',
templateId: '생략',
variables
}
}
};
const request = {
url: 'https://api.solapi.com/messages/v4/send',
method: 'POST',
};
const authParameter: AuthenticationParameter = { apiKey, apiSecret };
try {
const responseData = await defaultFetcher<typeof data, any>(authParameter, request, data);
return res.status(200).json({ success: true, data: responseData });
} catch (error: any) {
return res.status(500).json({ success: false, message: error.message });
}
}시도한 해결 방법
기대하는 결과버튼을 클릭했을때 카카오 알림톡이 전송되어야합니다. 확인사항
|
Beta Was this translation helpful? Give feedback.
Answered by
Palbahngmiyine
Jun 23, 2025
Replies: 1 comment
-
|
안녕하세요, 솔라피 기술지원팀입니다. 실제 데이터가 문제없는지 확인하기 위해 관련한 파라미터(민감한 데이터는 지워주셔도 좋습니다)를 첨부 부탁드리며, kakaoOptions내 variables 오브젝트 프로퍼티의 키는 단순 치환문구로 넣는게 아니라 #{변수명} 형식을 따라주셔야 하는 점 참고 부탁드립니다. 예시 // 나머지 데이터 생략
variables: {
'#{변수1}': '홍길동'
} |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
Palbahngmiyine
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
안녕하세요, 솔라피 기술지원팀입니다. 실제 데이터가 문제없는지 확인하기 위해 관련한 파라미터(민감한 데이터는 지워주셔도 좋습니다)를 첨부 부탁드리며, kakaoOptions내 variables 오브젝트 프로퍼티의 키는 단순 치환문구로 넣는게 아니라 #{변수명} 형식을 따라주셔야 하는 점 참고 부탁드립니다.
예시