개발/Spring

Spring boot NHN Cloud api-alimtalk 2.2 사용하기

JangHC 2022. 3. 19. 15:29

NHN Cloud에서 알림톡을 사용하였습니다.

 

알림톡 가이드 : https://docs.toast.com/ko/Notification/KakaoTalk%20Bizmessage/ko/alimtalk-api-guide/

 

API v2.2 가이드 - NHN Cloud 사용자 가이드

Notification > KakaoTalk Bizmessage > Alimtalk > API v2.2 Guide Alimtalk [API Domain] Domain https://api-alimtalk.cloud.toast.com Overview of v2.2 API 알림톡 대량 발송 조회, 통계 조회 API가 추가되었습니다. 메시지 치환 발송 API

docs.toast.com

 

메시지 치환 발송 요청

[URL]

POST  /alimtalk/v2.2/appkeys/{appkey}/messages
Content-Type: application/json;charset=UTF-8

[Path parameter]

이름타입설명

appkey String 고유의 Appkey

[Header]

{
  "X-Secret-Key": String
}

이름타입필수설명

X-Secret-Key String O 콘솔에서 생성할 수 있다. [참고]

[Request body]

{
    "senderKey": String,
    "templateCode": String,
    "requestDate": String,
    "senderGroupingKey": String,
    "createUser": String,
    "recipientList": [{
        "recipientNo": String,
        "templateParameter": {
            String: String
        },
        "resendParameter": {
          "isResend" : boolean,
          "resendType" : String,
          "resendTitle" : String,
          "resendContent" : String,
          "resendSendNo" : String
        },
        "buttons": [
          {
            "ordering": Integer,
            "chatExtra": String,
            "chatEvent": String,
            "target": String
          }
        ],
        "recipientGroupingKey": String
    }],
    "messageOption": {
      "price": Integer,
      "currencyType": String
    }
}

 

위의 http 포맷을 Spring boot에서 코드로 간단하게 구현했습니다.

 

import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

import com.nimbusds.jose.shaded.json.JSONArray;
import com.nimbusds.jose.shaded.json.JSONObject;

@Service
public class ToastServiceImpl implements ToastService {
		
	@Override
	public String sendMsg(String phoneNumber, String msg) {
		WebClient webClient = WebClient.create();
		
		JSONObject jsonObjcet = new JSONObject();
		jsonObjcet.put("senderKey", /*sedner key*/);
		jsonObjcet.put("templateCode",/*지정한 template code*/);
				
		JSONObject jsonObjcet4 = new JSONObject();
		jsonObjcet4.put("recipientNo", phoneNumber);
		
		JSONObject jsonObjcet2 = new JSONObject();
		jsonObjcet2.put("pageApp", /*미리 지정한 페이지*/);

		JSONObject jsonObjcet5 = new JSONObject();
		jsonObjcet5.put("templateParameter", jsonObjcet2);
		
		JSONArray jsonArr = new JSONArray();
		jsonArr.add(jsonObjcet4);
		jsonArr.add(jsonObjcet5);
		
		jsonObjcet.put("recipientList",jsonArr);

        return webClient.post()
                .uri("https://api-alimtalk.cloud.toast.com/alimtalk/v2.0/appkeys/{appkey}/messages")
                .contentType(MediaType.APPLICATION_JSON)
                .header("X-Secret-Key", "{s-key}")
                .bodyValue(jsonObjcet.toString())
                .retrieve()
                .bodyToMono(String.class)
                .block();
	}
}

 

감사합니다.