문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.
개발 환경 : AWS lambda
개발 언어 : node.js20x
봇 id : 66d422d3e5715f75b255ace4
카카오 비즈니스로 채널을 개설하고 챗봇을 만들고 있었습니다. 콜백 기능을 사용하기 위해 다음과 같이 테스트 코드를 작성하였는데요
import axios from ‘axios’;
export const handler = async (event) => {
const body = JSON.parse(event.body);
const userMessage = body.userRequest.utterance;
const callbackUrl = body.userRequest.callbackUrl;
// 초기 대기 메시지 설정
const initialResponse = {
statusCode: 200,
body: JSON.stringify({
"version" : "2.0",
"useCallback" : true,
"data": {
"text" : "생각하고 있는 중이에요😘 \n15초 정도 소요될 거 같아요 기다려 주실래요?!"
}
})
};
// 2초 후 대기 메시지 반환
const initialWait = new Promise((resolve) => {
setTimeout(() => {
console.log("대기 메시지 전송 완료");
resolve(initialResponse);
}, 2000);
});
// 2초 후 대기 메시지 반환
const response = await initialWait;
console.log("대기 메시지 전송 중");
await sendCallbackAfterDelay(userMessage, callbackUrl); // 콜백 메시지를 별도의 비동기 작업으로 처리
return response;
};
// getBotMessage 실행 후 콜백 메시지를 전송하는 비동기 함수
async function sendCallbackAfterDelay(userMessage, callbackUrl) {
const result = await getBotMessage(userMessage);
const responseBody = {
version: “2.0”,
template: {
outputs: [
{
simpleText: {
text: result
}
}
]
}
};
try {
await kakaoCallback(callbackUrl, responseBody);
console.log("콜백 메시지 전송 완료");
} catch (error) {
console.error("Callback 전송 오류:", error);
}
}
// 7초 지연 후 콜백 메시지 반환하는 함수
async function getBotMessage(userMessage) {
console.log(“getBotMessage 호출됨”);
return new Promise((resolve) => {
setTimeout(() => {
resolve(‘콜백 메시지’);
}, 7000);
});
}
// 콜백 URL로 최종 응답을 전송하는 함수
async function kakaoCallback(callbackUrl, responseBody) {
try {
await axios.post(callbackUrl, responseBody);
console.log(‘Callback 전송 성공’);
} catch (error) {
console.error(‘Callback 전송 오류:’, error);
}
}
5초 타임아웃 전에 대기메시지를 출력하고 7초 대기후 콜백메시지를 전송하는 코드인데 다음과 같은 오류가 발생합니다
Invalid Callback token. Check your Callback token.',
찾아보니깐 여러가지 요인이 있던데 우선 7초 대기이니 1분을 넘어서 발생하는 것은 아니고 usecallback도 true 처리했고 json format 도 맞추었는데 다음과 같은 오류가 발생합니다. 무엇이 문제 일까요?