캠페인을 등록하기 전에 브랜드 자격을 확인하세요
10DLC 캠페인은 등록된 사업자가 발송하려는 메시지, 수신자 동의 방식, 도움말 확인 방법과 수신 거부 방법을 설명합니다. 이 API는 레지스트리 레코드를 생성합니다. 프로덕션 이동통신사 활성화를 완료하는 것은 별도의 계정 설정 단계입니다. 소유한 브랜드를 사용하십시오. 해당 브랜드는 브랜드 등록에서 가져오고 해당 브랜드의 사용 가능한 사용 사례와 선택한 사용 사례의 현재 요구 사항을 불러오십시오.
현재 자격 확인 결과를 사용하여 하위 사용 사례, 대상 네트워크 ID, 메시지 샘플 및 수신 동의/거부/도움말 선언을 선택하십시오. 요구 사항은 브랜드와 네트워크에 따라 다를 수 있습니다. 예시의 식별자를 제출하거나 절차가 다른 사업자를 위해 동의 설명을 복사하지 마십시오.
샌드박스와 프로덕션을 분리하세요
샌드박스 실습에서는 소유한 모의 브랜드와 해당 브랜드가 자격을 갖춘 현재 사용 사례를 사용하십시오. TRIAL은 해당 자격 확인에서 제공되는 경우에만 사용하십시오. 포털은 선택한 브랜드와 캠페인의 환경이 일치하는지 확인합니다. 직접 API 요청은 포털의 전체 마법사 검증을 대신 수행하지 않으므로 통합에서 이러한 분리를 유지하십시오.
프로덕션 캠페인 생성은 과금 대상이며 번호를 자동으로 발신 가능하게 만들지 않습니다. 캠페인 환경을 해당 브랜드와 일치시키고 실제 캠페인을 만들기 전에 요금과 적용 약관을 검토하십시오.
캠페인 JSON 제출
campaign.json 파일을 적격 값으로 준비하십시오. R000000 값은 리셀러 없음을 의미하며 해당 구성이 의도된 경우에만 사용하십시오. 일반적인 MultiTEL 리셀러 구성의 경우 다른 사람의 식별자를 하드코딩하는 대신 계정의 리셀러 컬렉션이나 포털 준비 흐름에서 허용된 MultiTEL LLC 리셀러 식별자를 가져오십시오.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
'https://api.multitel.net/tcr/v2/reseller?companyName=MultiTEL%20LLC&recordsPerPage=500'다음 JSON은 소유한 모의 브랜드에 대한 평가판 캠페인을 예시합니다. 브랜드, 사용 사례, 리셀러 및 동의 문구를 테스트에 실제로 적격한 값으로 바꾸십시오.
{
"brandId": "B123ABC",
"channelId": "10DLC",
"usecase": "TRIAL",
"subUsecases": [],
"resellerId": "R000000",
"description": "Trial account notices requested by users of the example application.",
"messageFlow": "Test users explicitly select an unchecked consent box before requesting these trial notices.",
"sample1": "Example application: your requested account notice is available. Reply STOP to stop notices.",
"subscriberOptin": true,
"optinKeywords": "START",
"optinMessage": "You are subscribed to the example application's requested account notices.",
"subscriberOptout": true,
"optoutKeywords": "STOP",
"optoutMessage": "You will no longer receive the example application's account notices.",
"subscriberHelp": true,
"helpKeywords": "HELP",
"helpMessage": "For help with example account notices, contact support@example.invalid.",
"embeddedLink": false,
"embeddedPhone": false,
"numberPool": false,
"ageGated": false,
"directLending": false,
"termsAndConditions": true,
"autoRenewal": false,
"mnoIds": [],
"referenceId": "your-trial-reference"
}권한 있는 사람이 적용 약관을 검토하고 수락한 후에만 termsAndConditions 필드를 true로 설정하십시오. 이 예시는 사용자를 대신한 동의가 아닙니다. 플래그에는 따옴표로 묶은 문자열이 아닌 JSON 불리언을 사용하십시오.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data-binary @campaign.json \
'https://api.multitel.net/tcr/v2/campaignBuilder'캠페인 필드 및 조건부 요구 사항
| 필드 | 제공할 내용 |
|---|---|
| brandId, channelId, usecase | 소유한 브랜드, 채널 10DLC 및 적격한 현재 사용 사례 코드입니다. 번역된 레이블이 아닌 자격 확인의 코드를 사용하십시오. |
| subUsecases | 적격한 하위 사용 사례 코드의 배열입니다. 선택한 자격 확인의 최소 및 최대 개수를 준수하십시오. |
| resellerId | 허용된 리셀러 식별자입니다. 계정 소유형 경로는 소유한 리셀러, 구성된 공유 리셀러 또는 의도적인 리셀러 없음 값을 허용합니다. 무관한 리셀러는 거부됩니다. |
| description, messageFlow | 실제 목적과 동의 수집 방법을 설명하십시오. 각 항목은 40–4096자여야 합니다. 실제 사용자 동작, 양식 또는 절차를 포함하고 애플리케이션이 수집하지 않는 동의를 만들어내지 마십시오. |
| sample1 … sample5 | 대표 메시지이며 일반적으로 각 20–1024자입니다. 포털에서는 최소 한 건이 필요하고 대상 네트워크에서는 더 많이 요구할 수 있습니다. 현재 자격 확인에서 요구하는 건수를 제공하십시오. |
| subscriberOptin, subscriberOptout, subscriberHelp | 이러한 정확한 필드 이름을 사용하여 지원하는 수신자 흐름을 선언하십시오. 흐름을 활성화한 경우 해당 키워드와 메시지 필드를 제공하십시오. 네트워크 요구 사항에 따라 특정 흐름이 필수일 수 있습니다. |
| optinKeywords, optoutKeywords, helpKeywords | 실제로 인식되는 키워드이며 최대 255자입니다. 수신 애플리케이션의 동작과 일치해야 합니다. |
| optinMessage, optoutMessage, helpMessage | 해당 메시지입니다. 현재 게시된 필드 규칙은 20–1024자를 지정합니다. 실제 지원 내용과 수신 거부 동작을 포함하십시오. |
| embeddedLink, embeddedPhone, embeddedLinkSample | 포함된 링크나 전화번호를 사실대로 선언하십시오. 적격한 네트워크라도 이를 금지할 수 있습니다. 링크 샘플은 최대 255자까지 허용됩니다. |
| mnoIds | 자격 확인에서 가져온 적격한 숫자 네트워크 ID의 선택적 배열입니다. 모든 네트워크가 선택한 사용 사례를 지원한다고 가정하지 마십시오. |
| numberPool, ageGated, directLending | 해당하는 캠페인 특성을 JSON 불리언으로 지정합니다. 실제 서비스에 따라 선택하십시오. |
| privacyPolicyLink, termsAndConditionsLink | 해당하는 경우 관련 공개 정책 및 약관 URL을 각각 최대 2048자로 지정하십시오. 실제 메시징 서비스를 설명해야 합니다. |
| termsAndConditions | 적용되는 캠페인 약관에 대한 명시적 수락입니다. 포털에서는 true 값이 필요하며 마법사에서도 현재 개별 확인을 수집합니다. |
| autoRenewal | 캠페인을 갱신할지 여부입니다. 기본값은 true입니다. 갱신을 비활성화해도 프로덕션 캠페인에 이미 연결된 최소 약정이 제거되지 않습니다. |
| referenceId, tag | 캠페인 참조(최대 50자) 및 선택적 태그입니다. referenceId는 Idempotency-Key 헤더가 아닙니다. |
게시된 스키마의 설명 표에는 대소문자 표기가 일부 일치하지 않습니다. 현재 포털 요청은 위에 표시된 대로 subscriberOptin 및 subscriberOptout 필드를 사용합니다. 해당 표기를 정확히 유지하십시오. 이 가이드는 테넌트용 10DLC 워크플로를 다루며 다른 채널의 필수 필드나 활성화 단계가 동일하다고 추론하지 마십시오.
동일한 의도의 요청을 안전하게 다시 시도하세요
이 의도된 생성에는 하나의 Idempotency-Key 키를 사용하십시오. 키는 공백 없는 1–128자의 인쇄 가능한 ASCII 문자이며 소유자 계정으로 범위가 지정됩니다. 다시 시도할 때는 HTTP 메서드, 경로, 쿼리 문자열 및 정확한 본문 바이트를 변경하지 마십시오. 값이 동일하더라도 형식이 변경된 JSON 파일은 충돌합니다.
진행 중인 중복은 HTTP 409 상태와 Retry-After 헤더를 반환할 수 있습니다. 완료된 요청은 저장된 응답을 재생할 수 있습니다. 캐시된 오류는 레지스트리가 아무것도 만들지 않았다는 것을 증명하지 않습니다. campaignId, requestId 및 관련 헤더를 저장하고 기존 캠페인을 검사한 뒤 실제 상태를 확인하고 부분 실패로 인한 불일치를 해결한 후 새 키를 고려하십시오.
캠페인 ID가 최종 발신 설정은 아닙니다
응답은 HTTP 상태와 직접 JSON을 사용합니다. 생성에 성공하면 campaignId 값을 보관하고 현재 상태를 확인하십시오:
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"현재 포털의 프로덕션 워크플로는 캠페인을 메시징 이동통신사와 공유하고 브랜드/캠페인을 발신 계정으로 불러옵니다. 이는 이 공개 생성 호출과 별개의 작업입니다. 이후 공유나 이동통신사 불러오기 단계가 실패하더라도 레지스트리 캠페인이 존재할 수 있습니다.
결합된 등록, 공유 및 이동통신사 불러오기 순서가 필요하면 포털의 통합 프로덕션 생성 워크플로를 사용하십시오. 이 API로 직접 이미 생성된 프로덕션 캠페인에 대해서는 해당 캠페인 ID를 유지하고 계정의 이동통신사 설정을 지원을 통해 조정하십시오. 현재 고객 화면은 직접 생성된 모든 프로덕션 캠페인에 대한 일반적인 다시 시작 버튼을 제공하지 않습니다. 활성화를 다시 시도하려고 다른 등록을 만들지 마십시오. 캠페인이 활성 상태이고 이동통신사 설정이 완료되었는지 확인한 후 발신 번호 할당 작업을 진행하십시오. 해당 번호도 소유되고 활성 상태이며 SMS를 사용할 수 있어야 합니다. 캠페인 생성으로 메시지가 발송되지 않습니다.
프로덕션 캠페인 요금
| 사용 사례 | 월 요금 |
|---|---|
| LOW_VOLUME, UCAAS_LOW | $1.67 |
| SOLE_PROPRIETOR | $2.23 |
| CHARITY | $3.34 |
| EMERGENCY | $5.56 |
| AGENTS_FRANCHISES | $33.34 |
| 기타 구성된 대체 사용 사례 | $11.12 |
이러한 소매 금액은 시월 24일(2026년)의 현재 포털 구성과 대조하여 확인되었습니다. 프로덕션 제출 전에 현재 적격 사용 사례와 표시된 가격을 확인하십시오. 레지스트리 자격 확인 응답의 monthlyFee는 자동으로 사용자의 MultiTEL 소매 가격이 아닙니다.
현재 포털은 비정치적 프로덕션 캠페인에 대해 세 달의 최소 약정을 명시합니다. 확정하기 전에 적용 약관과 갱신 선택을 검토하십시오. 등록, 번호 임대, 추가 심사 및 메시지 사용은 별도 요금입니다. 생성 성공 응답은 모든 청구나 이동통신사 활성화 단계가 완료되었음을 독립적으로 증명하지 않습니다.
유효성 검사 및 부분 실패 처리
HTTP status 값과 반환된 JSON을 확인하십시오. 유효성 검사 실패는 code/description 객체의 배열일 수 있으며 로컬 실패는 대신 message, status 및 일부 처리 오류의 경우 requestId 값을 포함한 객체일 수 있습니다.
| HTTP 결과 | 다음 조치 |
|---|---|
| 400 | 특정 필드나 멱등 키를 수정하십시오. 현재 자격 확인, 필요한 샘플 수 및 수신자 흐름 요구 사항을 다시 확인하십시오. |
| 401, 403 또는 404 | API 자격 증명과 허용된 출발지 IP를 확인한 후 브랜드/리셀러 소유권과 권한을 확인하십시오. 다른 계정의 식별자를 사용하지 마십시오. |
| 402 | 동일한 의도의 생성을 다시 시도하기 전에 프로덕션 자금과 구매 권한을 검토하십시오. |
| 409 | 동일한 키를 사용하는 변경된 요청과 진행 중인 재생을 구분하십시오. 조정할 때 기존 캠페인과 요청 세부 정보를 유지하십시오. |
| 429 또는 제한기 사용 불가 | Retry-After 헤더가 있으면 이를 준수하고 원래 키와 정확한 요청을 유지하십시오. |
| 500 또는 502 | 생성이 이미 발생했을 수 있습니다. campaignId 및 requestId 값을 저장하고 기존 캠페인을 확인한 뒤 중복을 만들지 말고 해당 활성화를 재개하거나 조정하십시오. |