Skip to content

gongdo/coolsms-net

Repository files navigation

coolsms-net

CoolSMS의 닷넷 클라이언트입니다.

가장 기초적인 문자 메시지 전송과 전송 내역 확인 API만 구현하였습니다.

Status

Build status

QuickStart

Nuget

Install-Package CoolSms

API 초기화

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");

테스트 전송

Modetest로 설정하여 실제로 통신사를 거쳐서 전송하지 않고 시뮬레이션만 수행합니다. 수신자는 자동으로 01000000000로 설정됩니다.

var request = SendMessageRequest.CraeteTest("테스트메시지");
var result = await api.SendMessageAsync(request);

또는

var result = await api.SendTestMessageAsync(request);

테스트 전송도 GetMessageAsync()로 조회를 할 수 있습니다.