開発者

POST/v3/smslength

SMSのエンコーディングとセグメント数を計算する

送信や配信料金の見積もりを行わずに、最終的なメッセージ本文を分析します。

このページの内容
  1. 実際に送信するメッセージ本文を分析する
  2. リクエスト
  3. レスポンス
  4. エンコーディングとセグメントの上限
  5. エラーと空の本文
  6. 送信前に結果を活用する

実際に送信するメッセージ本文を分析する

送信予定の本文について、エンコーディング、エンコード後の長さ、SMSのセグメント数を計算します。このエンドポイントは、SMSの送信、ルートの予約、配信料金の見積もりの返却を行いません。送信ワークフローで追加されるフッター、リンク、配信停止の案内文もすべて含めた、最終的な本文全体を渡してください。

リクエスト

有効なAPIアカウントと、そのアカウントで許可されている送信元IPアドレスを使用して認証してください。認証情報はサーバー側のシークレットストレージに保管してください。UTF-8の文字列をtextフィールドで送信してください。この例では環境変数を使用しています。

curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
  --data-urlencode 'text=Your message here' \
  https://api.multitel.net/v3/smslength

フォームエンコードされた入力に対応しています。次のようなJSONオブジェクトも{"text":"Your message here"}、フォームフィールドもクエリフィールドも指定されていない場合に受け付けられます。メッセージ本文がURLに含まれないよう、POSTの使用を推奨します。フォーム入力とクエリ入力の両方がある場合は、フォーム入力が使用されます。リクエスト形式を混在させないでください。

レスポンス

{
  "status": {
    "code": "200",
    "msg": ""
  },
  "response": {
    "charset": 0,
    "encoding": "GSM-7",
    "count": 1,
    "parts": 1,
    "chars": 17,
    "units": 17,
    "single_limit": 160,
    "multipart_limit": 153
  }
}
計算結果のフィールド
フィールド意味
charset0はGSM-7、2はUTF-16を表します。
encodingGSM-7またはUTF-16。
parts, count計算されたSMSセグメント数を表す二つの名前です。本文が空の場合は、どちらもゼロになります。
units, charsエンコード後の単位数を表す二つの名前です。見た目の文字数と一致するとは限りません。
single_limit選択されたエンコーディングで、単一セグメントに収まるエンコード後の単位数の上限です。
multipart_limit連結用のオーバーヘッドを差し引いた、各セグメントのエンコード後の単位数の上限です。

エンコーディングとセグメントの上限

計算に使用する上限
エンコーディング単一セグメント複数セグメントに分割する場合の各セグメント
GSM-7160セプテット153セプテット
UTF-1670コード単位67コード単位

GSM-7の拡張文字である^、波括弧、角括弧、バックスラッシュ、縦棒、チルダ、ユーロ記号などは、それぞれ二セプテットを消費します。GSM-7に含まれない文字があると、メッセージ全体がUTF-16でのカウントに切り替わります。基本多言語面に含まれない絵文字は、UTF-16の二単位を使用します。見た目では一つの絵文字として表示されるシーケンスに、複数のコードポイントが含まれることもあります。

たとえば、160文字の通常のGSM-7の英字は一セグメントに収まりますが、161文字では二セグメントが必要です。八十文字の^は160単位を使用し、一セグメントに収まりますが、八十一文字では162単位を使用し、二セグメントが必要です。基本多言語面外の単純な絵文字三十五個は70のUTF-16単位を使用し、一セグメントに収まりますが、三十六個では72単位を使用し、二セグメントが必要です。結合文字や連結された絵文字によって、これらの数は変わることがあります。

エラーと空の本文

textフィールドがない場合、スカラー値の代わりに配列やオブジェクトを指定した場合、またはUTF-8が不正な場合は、APIコード403が返されます。HTTPステータスに加え、JSONのstatus.codeとstatus.msgも確認してください。このエンドポイントはコードを文字列として返します。空文字列は有効で、単位数とセグメント数はいずれもゼロになります。

送信前に結果を活用する

レビュー対象の計算機能には、メッセージの送信、通信事業者への呼び出し、アカウントからの料金引き落とし処理は含まれていません。結果は渡された本文の分析であり、配信の保証や最終的な請求額ではありません。送信時には、宛先別の料金、通信事業者の手数料、キャンペーンの要件、本文の追加変換が適用されることがあります。メッセージを変更した後は再計算し、承認済みの送信ワークフローとアカウントの最新料金を使用してください。