티스토리 뷰
뿌리오를 통해 카카오알림톡을 보내는 소스코드를 받았다.
뿌리오에서 제공하는 소스코드는 Java와 PHP 2가지였다.
뿌리오 측에 node.js용 소스코드는 없다고 문의했더니 현재까지는 없다고 답을 받았다.
node.js 용은 없어서 아래와 같이 node.js 용으로 바꿔보았다.
아래의 소스코드를 가지고 실제로 연동에 성공했다.
const axios = require('axios');
const base64 = require('base-64');
const crypto = require('crypto');
const TIME_OUT = 5000;
const API_KEY = '';
const PPURIO_ACCOUNT = '';
const SENDER_PROFILE = '';
const TEMPLATE_CODE = '';
const URI = 'https://message.ppurio.com';
/**
* Access Token 요청 (24시간 유효)
*/
async function getToken() {
const basicAuthorization = `Basic ${base64.encode(`${PPURIO_ACCOUNT}:${API_KEY}`)}`;
try {
const response = await axios.post(`${URI}/v1/token`, {}, {
headers: {
Authorization: basicAuthorization,
'Content-Type': 'application/json',
},
timeout: TIME_OUT,
});
// 응답 데이터 전체 출력
console.log('Token Response:', response.data);
// 토큰이 응답 데이터에 포함되어 있는지 확인
if (response.data && response.data.token) {
console.log('Access Token:', response.data.token); // 토큰 값 출력
return response.data.token; // 토큰 값만 반환
} else {
// 토큰 값이 없는 경우 에러 처리
throw new Error(`Invalid token response: ${JSON.stringify(response.data)}`);
}
} catch (error) {
console.error('Error fetching token:', error.response?.data || error.message);
throw error;
}
}
/**
* 카카오(알림톡) 발송 요청 (발송 정보 파라미터로 전달)
* @param {string} account 뿌리오 계정
* @param {string} senderProfile 발신자 프로필명
* @param {string} templateCode 알림톡 템플릿 코드
* @param {Array} target 수신자 정보 배열
* @param {Array} resend 대체 발송 정보 배열
*/
async function sendMessage(account, senderProfile, templateCode, target, m_resend) {
const apiUrl = 'https://message.ppurio.com/v1/kakao'; // 카카오 알림톡 API URL
const token = await getToken(); // getToken 함수 호출하여 발급받은 토큰 저장
let resend = {
messageType: 'SMS', // 메시지 유형
from: '', // 발신 번호
content: '', // 메시지 내용
subject: '', // 메시지 제목
};
const sendData = {
account, // 뿌리오 계정 ID
messageType: 'ALT', // 메시지 유형: 알림톡(ALI)
senderProfile, // 발신자 프로필
templateCode, // 템플릿 코드
duplicateFlag: 'N', // 중복 수신 번호 제거 여부
targetCount: target.length, // 수신자 수
targets: target, // 수신자와 치환 변수 정보
refKey: crypto.randomBytes(16).toString('hex'), // 고유 참조 키 생성
isResend: 'Y', // 대체 발송 여부 설정
resend, // 대체 발송 정보
};
const headers = {
Authorization: `Bearer ${token}`, // Bearer 타입 인증 토큰 추가
'Content-Type': 'application/json', // JSON 형식으로 데이터 전송
};
// 요청 데이터와 헤더 확인
console.log('Send Data:', JSON.stringify(sendData, null, 2));
console.log('Headers:', headers);
try {
const response = await axios.post(apiUrl, sendData, { headers }); // 알림톡 발송 요청 전송
console.log('Response:', response.data); // API 응답 출력
} catch (error) {
if (error.response) {
console.error('Error Response:', error.response.data); // 서버에서 반환한 에러 메시지
} else {
console.error('Error:', error.message); // 네트워크 또는 기타 오류
}
}
}
// sendMessage와 getToken 함수 내보내기
module.exports = {
sendMessage,
getToken
};
소스코드를 다운로드 하실 수 있도록 파일 공유합니다.
'IT 이야기 > 프로그래밍' 카테고리의 다른 글
[vue.js] Node.js와 npm 설치 (0) | 2024.05.23 |
---|---|
ASP + MYSQL 연동하기 (0) | 2023.08.28 |
[javascript] undefined, null 체크하는 함수 (0) | 2022.05.31 |
VBA로 크롤링해보기 (0) | 2022.04.26 |
How do I wrap text in a pre tag? (0) | 2022.04.05 |
[NODE.JS] PM2에 대해서 (0) | 2021.06.23 |
[NODE.JS] 소스코드 수정시 자동으로 재시작 해주는 PM2, nodemon (0) | 2021.06.23 |
[JAVA] 0부터 100까지 짝수만 출력되게 하는 소스코드 (0) | 2020.05.28 |
c언어 중첩 for 숫자 (0) | 2020.04.28 |
[C언어 기초] return 이란? 함수인가요? return 0; 의 의미는? (4) | 2017.03.27 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- W3Schools Online Web Tutorials
- 구차니의 잡동사니 모음
- [IT]블로거팁닷컴
- 비앤아이님의 블로그
- Blog Suspect
- 즐거운하루 blog
- zinicap의 검색엔진 마케팅(SEM)
- 머니야머니야님의 블로그
- [Friend] AtinStory
- [기타배우기]해브원 박스
- [웹표준] SINDB.com
- 해커 C 이야기
- [애드센스] 길라잡이
- 정순봉의 IT SCHOOL
- 씨디맨의 컴퓨터이야기
- 2proo Life Story
- 못된준코의 세상리뷰
- [IT강좌] 정보문화사
- IN 대전
- 에우르트는 나쁜남자 -_-
- 씬의 싱크탱크
- 엔돌슨의 IT이야기
- 진이늘이
- 'Cooltime'의 블로그
- 후이의 Tistory
- Soulstorage
- 앤드&엔드의 블로그
- June Blog
- 노지의 소박한 이야기
- gbWorld
- 인터넷 속 나의 생각
- HarshNix
- ART of WEB
- 녹두장군 - 상상을 현실로
TAG
- MBTI
- MBTI 강좌
- C언어 소스
- php
- MBTI 검사
- C언어 문제
- 프로그래밍
- JavaScript
- 프로그래밍 문제
- 소스코드
- 인터넷
- 소스
- C
- 스마트폰
- It
- 인터넷 익스플로러
- 모토로이
- 강좌
- 효과음
- HTML
- 안드로이드 어플 추천
- MBTI 테스트
- 안드로이드 어플
- 예제 소스
- 안드로이드
- MBTI 자료
- 강의
- 성공
- 리뷰
- C언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함