CoolSMS의 닷넷 클라이언트입니다.
가장 기초적인 문자 메시지 전송과 전송 내역 확인 API만 구현하였습니다.
Install-Package CoolSms
CoolSMS 계정 정보를 통해 Authentication을 제공합니다.
var api = new SmsApi(new SmsApiOptions
{
ApiKey = "{your API Key}",
ApiSecret = "{your API Secret}",
DefaultSenderId = "{your Sender Id(PhoneNumber)}" // 국내 SMS발신의 경우 필수
});
API 클라이언트는 동일한 설정일 경우 하나의 인스턴스를 전역에서 공유해도 문제가 없습니다.
POST Send API 기능을 구현합니다.
var request = new SendMessageRequest("01000000000", "헬로 메시지");
var result = await api.SendMessageAsync(request);
// 성공적인 경우 잠시후 문자 메시지가 도착
// result는 반드시 null이 아니며 result.GroupId가 설정되어 있어야 함.
// 200 OK 외에는 `ResponseException`예외가 발생
SendMessageAsync()
는 전송을 '요청'하는 것이며 OK
가 되더라도 실제로 전송에 성공했는지 여부는 GetMessageAsync()
로 조회를 해야 알 수 있습니다.
다음과 같은 숏컷 확장 메서드도 준비되어 있습니다.
var result = await api.SendMessageAsync("01000000000", "헬로 뭐시기");
NOTE 메시지 길이가 80byte를 넘으면 자동으로 LMS로 전송합니다. 글자의 길이는 ANSI code 127보다 큰 글자는 2byte, 그 이하는 1byte로 계산합니다. LMS/MMS로 전송할 경우 제목(
Subject
)를 설정하지 않으면 본문중 일부가 자동으로 들어갑니다.
GET Sent API 기능을 구현합니다.
var request = new GetMessageRequest
{
GroupId = "{SendMessageResponse.GroupId}"
};
var result = await api.GetMessageAsync(request);
// 마찬가지로 정상적인 경우 null이 아니며,
// 오류가 발생한 경우 예외를 던집니다.
SendMessageAsync()
로 전송한 직후 GetMessageAsync()
를 해보면 결과가 존재하지 않을 가능성이 있습니다.
따라서 전송 결과를 업데이트할 때에는 임의의 타임아웃 시간을 정해놓고 주기적으로 재시도를 해야합니다.
다음과 같이 GroupId
에 대한 숏컷 확장 메서드도 준비되어 있습니다.
var result = await api.GetMessagesAsync("group-id-in-the-result");
Mode
를 test
로 설정하여 실제로 통신사를 거쳐서 전송하지 않고 시뮬레이션만 수행합니다. 수신자는 자동으로 01000000000
로 설정됩니다.
var request = SendMessageRequest.CraeteTest("테스트메시지");
var result = await api.SendMessageAsync(request);
또는
var result = await api.SendTestMessageAsync(request);
테스트 전송도 GetMessageAsync()
로 조회를 할 수 있습니다.