Class: Sendgo::SenderRegistrationService

Inherits:
Object
  • Object
show all
Defined in:
lib/sendgo/management.rb

Overview

발신번호(문자) 등록 · 심사 접수.

v2 전용. 카카오와 달리 개인 계정 애플리케이션도 쓸 수 있다.

등록하면 곧바로 쓸 수 있는 게 아니라 PENDING 으로 접수되고, 운영자 승인 후 SUCCESS 가 된다.

Constant Summary collapse

RESOURCE =
"senders"
REGISTRABLE_TYPES =

API 로 접수할 수 있는 발신번호 유형 — 전부다.

%w[
  personal_mobile
  personal_other
  team_main
  team_representative_mobile
  team_emp_mobile
  team_other_company
].freeze
IDENTITY_DOCUMENT_TYPES =

신분증 사본(+identityDocument+)이 필요한 유형.

콘솔은 PASS 본인인증을 쓰지만 API 는 신분증 사본을 받아 sendgo 운영자가 직접 확인한다. 이 경로로 접수된 건은 자동 승인되지 않는다.

%w[personal_mobile team_representative_mobile team_emp_mobile].freeze

Instance Method Summary collapse

Constructor Details

#initialize(http:) ⇒ SenderRegistrationService

Returns a new instance of SenderRegistrationService.



324
325
326
# File 'lib/sendgo/management.rb', line 324

def initialize(http:)
  @http = http
end

Instance Method Details

#create(sender_alias:, sender_number_type:, phone_e164:, files:, **extra) ⇒ Object

등록 신청. 서류가 붙으므로 multipart 로 나간다.

files 에는 최소한 +csuCertificate+(통신서비스 이용증명원)가 있어야 한다. 휴대폰 계열은 +identityDocument+(신분증 사본)가, team_other_company 는 수임·위임 서류가 더 필요하다 — #number_types 로 확인한다.



358
359
360
361
362
363
364
365
366
# File 'lib/sendgo/management.rb', line 358

def create(sender_alias:, sender_number_type:, phone_e164:, files:, **extra)
  fields = {
    senderAlias: sender_alias,
    senderNumberType: sender_number_type,
    phoneE164: phone_e164
  }.merge(Sendgo.camelize_keys(extra))

  @http.post_multipart(RESOURCE, fields, files)
end

#delete(sender_key) ⇒ Object

삭제. 기본 발신번호를 지우면 남은 번호 중 하나가 기본으로 승계된다.



377
378
379
# File 'lib/sendgo/management.rb', line 377

def delete(sender_key)
  @http.delete("#{RESOURCE}/#{CGI.escape(sender_key)}")
end

#listObject

목록 조회. 심사 상태(+status+)를 여기서 확인한다.



329
330
331
# File 'lib/sendgo/management.rb', line 329

def list
  @http.get(RESOURCE)
end

#number_typesObject

계정 종류에 맞는 발신번호 유형과 유형별 필수 서류.

유형별 +identityVerification+(+none+/+document+)과 필요한 서류 목록을 준다.



341
342
343
# File 'lib/sendgo/management.rb', line 341

def number_types
  @http.get("#{RESOURCE}/number-types")
end

#show(sender_key) ⇒ Object

상세 조회.



334
335
336
# File 'lib/sendgo/management.rb', line 334

def show(sender_key)
  @http.get("#{RESOURCE}/#{CGI.escape(sender_key)}")
end

#update(sender_key, sender_alias:, primary_type: nil) ⇒ Object

별칭 변경 / 기본 발신 지정. 번호와 심사 상태는 바꿀 수 없다.



369
370
371
372
373
374
# File 'lib/sendgo/management.rb', line 369

def update(sender_key, sender_alias:, primary_type: nil)
  body = { senderAlias: sender_alias }
  body[:primaryType] = primary_type unless primary_type.nil?

  @http.patch("#{RESOURCE}/#{CGI.escape(sender_key)}", body)
end

#validate(phone_e164, sender_number_type) ⇒ Object

등록 전 형식·중복 확인.

응답의 duplicationReasonRequired 가 true 면 createduplication_reason 을 함께 넣어야 한다.



349
350
351
# File 'lib/sendgo/management.rb', line 349

def validate(phone_e164, sender_number_type)
  @http.post("#{RESOURCE}/validate", { phoneE164: phone_e164, senderNumberType: sender_number_type })
end