본문 바로가기
웹 개발 이야기/js, jquery

[JS] 알리고 알림톡 발송

by Gommin 2023. 3. 16.

// 카카오 플러스친구 계정 생성 후 비즈니스 인증 필요 (비즈니스 인증 시 사업자 등록증 필요)
// 알리고 사이트에서 api key 발급 및 발송 서버 ip 등록, 발신번호 등록이 되어있어야한다.
// 테스트 발송 시에도 잔액이 충전되어있어야한다.
// 아래 코드는 알리고 알림톡 템플릿이 한가지일 경우의 코드이다.
// 템플릿이 여러개일 경우 'get_tpllist_alimtalk' 함수의 결과 처리 부분을 수정해야한다. (템플릿 선택 부분 제작 필요)
// 'send_alimtalk' 함수의 sender (발신번호)는 알리고 사이트에서 등록한 발신번호만 이용 가능하다.

/* 알리고 알림톡 */
function alimtalk(mb_name, mb_hp, msg, subject, tpl_code){
    const apikey = 'API KEY';
    const userid = 'ALIGO ID';
    const senderkey = 'Senderkey';
    get_token_alimtalk(apikey,userid).then(function (result){
        // console.log(result);
        const token = result;
        get_tpllist_alimtalk(apikey,userid,token,senderkey).then(function (result2){
            console.log(result2.list[0]);
            const templtCode = result2.list[0]['templtCode'];
            send_alimtalk(apikey, userid, token, senderkey, mb_name, mb_hp, msg, subject, templtCode).then(function (result3){
                console.log(result3);
            });
        });
    });
}
const get_token_alimtalk=(apikey,userid)=>{
    return new Promise(function (resolve, reject){
        $.ajax({
            type: "POST",
            url: "https://kakaoapi.aligo.in/akv10/token/create/30/s/",
            contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
            dataType: 'json',
            data: {
                apikey:apikey,
                userid:userid,
            },
            cache: false,
            success: function (data) {
                //console.log(data);
                if(data.code==0){
                    resolve(data.token);
                }else{
                    alert(data.message);
                }
            }
        })
    })
}
const get_tpllist_alimtalk=(apikey,userid,token,senderkey)=>{
    return new Promise(function (resolve, reject){
        $.ajax({
            type: "POST",
            url: "https://kakaoapi.aligo.in/akv10/template/list/",
            contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
            dataType: 'json',
            data: {
                apikey:apikey,
                userid:userid,
                token:token,
                senderkey:senderkey,
            },
            cache: false,
            success: function (data) {
                //console.log(data);
                if(data.code==0){
                    resolve(data);
                }else{
                    alert(data.message);
                }
            }
        })
    })
}
const send_alimtalk=(apikey,userid,token,senderkey,mb_name, mb_hp, msg, subject, tpl_code)=>{
    return new Promise(function (resolve, reject){
        $.ajax({
            type: "POST",
            url: "https://kakaoapi.aligo.in/akv10/alimtalk/send/",
            contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
            dataType: 'json',
            data: {
                apikey:apikey,
                userid:userid,
                token:token,
                senderkey:senderkey,
                tpl_code:tpl_code,
                sender:'010-1234-5678',
                receiver_1:mb_hp,
                recvname_1:mb_name,
                subject_1:subject,
                message_1:msg,
                testMode:'Y',
            },
            cache: false,
            success: function (data) {
                //console.log(data);
                if(data.code==0){
                    resolve(data);
                }else{
                    alert(data.message);
                }
            }
        })
    })
}

댓글