NHN Cloud에서 알림톡을 사용하였습니다.
알림톡 가이드 : https://docs.toast.com/ko/Notification/KakaoTalk%20Bizmessage/ko/alimtalk-api-guide/
메시지 치환 발송 요청
[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();
}
}
감사합니다.
'개발 > Spring' 카테고리의 다른 글
Spring @RequestParam @RequestBody @ModelAttribute 차이 (0) | 2022.03.20 |
---|---|
Part.1 Spring boot 갯수 제한 이벤트 구현(Redis 이용) Redisson, Transaction, Sync(lock) 유저가 많이 몰릴때. (0) | 2022.03.19 |
Spring boot s3 이미지 Upload, url 이미지 다운로드하기 (0) | 2022.03.19 |
Spring boot CORS 처리 (0) | 2022.03.17 |
Spring boot,nuxt(vue) oauth2 security token기반 소셜 로그인(카카오,네이버,구글,페이스북,로컬) (0) | 2022.03.13 |