連結とエンコード
SMSメッセージを送受信する際には、メッセージの長さに注意する必要があります。なぜなら、メッセージの長さによって、メッセージが1つで届くのか、2つ以上のメッセージに分割されるのかが決まるからです。SMSが使用するエンコーディング方式(text または unicode) は、1つのメッセージに収まる最大文字数に影響します。
本書では以下のトピックを扱う:
連結
1メッセージあたりの最大文字数を超えるメッセージを送信すると、Vonageから 連結SMS.連結されたSMSは、以下のセグメンテーション情報によって連結された複数のSMSパートを含む。 ユーザー・データ・ヘッダ(UDH).
このセグメンテーション情報は、端末に、連結されたSMSを構成するメッ セージ・パートの数と、その中の各メッセージ・パートの位置を知らせる。携帯端末は、すべてのメッセージパートを受信すると、それらを1つのテキストとして受信者に提示する。
詳細については、Vonage Knowledgebaseに以下の詳細情報があります。 マルチパートSMS.
エンコーディング
Vonage SMS APIがサポートするエンコーディングは主に2種類あります: text そして unicode.
エンコーディングは type パラメータを使用します。使用すべきエンコーディングは、メッセージに含まれる文字に依存します:
- を設定する。
typeパラメータをtextの文字だけを含むメッセージには GSM標準および拡張文字セット. - を設定する。
typeパラメータをunicode文字を含むメッセージの場合 GSM文字セット外 (中国語、日本語、韓国語の文字など)。
新ライン
メッセージに改行を入れるには、UTF-8 エンコーディングを使って改行 (LF) を表します。 %0Aの値である。 text プロパティを使用します。これは、メッセージの文字数に対して1文字としてカウントされます。例えば text:
&text=This is one line.%0AThis is another line.
は次のようなSMSメッセージを送信する:
This is one line.
This is another line.
注:新規回線に関する上記のガイダンスは、SMS APIを直接使用する場合に適用されます。VonageのようなHTTPクライアントを使用してAPIとやり取りする場合は、以下のようになります。 サーバーSDKの場合、そのツールの適切な規約を使用してください。Vonage Server SDKの場合、これはそのSDKで使用されるプログラミング言語固有の改行構文になります。
GSM文字セット
Vonageは、GSM拡張テーブルの文字だけでなく、すべての標準GSM文字をサポートしています。標準テーブルの文字は、エンコードに1文字あたり7ビットを必要とします:
! " # $ % ' ( ) * + , - . / : ; < = > ? @ _ ¡ £ ¥ § ¿ & ¤
0 1 2 3 4 5 6 7 8 9
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
Ä Å Æ Ç É Ñ Ø ø Ü ß Ö à ä å æ è é ì ñ ò ö ù ü Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ
の登場人物 拡張テーブル エンコードには2つの文字が必要です。 ESC 文字のプレフィックスに続き、拡張テーブルから必要な文字を選ぶ:
| ^ € { } [ ] ~ \
ユニコード
アラビア語、中国語、韓国語、日本語、キリル文字などの言語は、GSMの標準および拡張範囲を超えるUnicode文字を必要とします。これらの文字は16ビットUCS-2エンコーディングを必要とします。
を設定する。 type パラメータを unicode, すべて メッセージ内の文字は、たとえGSM標準文字セットに含まれていても、UCS-2を使用してエンコードされる。
エンコード例
| メッセージ | タイプ | 1文字あたりのバイト数 | 必要な総バイト数 | メッセージで使用される文字セット |
|---|---|---|---|---|
Bonjour monde | text | 1 | 13 | GSM規格 |
This ^ That | text | 1 (2 ^ 拡張文字セットにあるので) | 12 | GSM標準およびGSM拡張 |
こんにちは世界 | unicode | 2 (UCS-2) | 14 | ユニコード |
最大文字数
1つのSMSメッセージの最大長は140バイトであり、これは標準的なGSMの7ビット文字160個、またはUCS-2の16ビット文字70個に相当する。それ以上の長さのメッセージは分割されます。
注:GSM拡張テーブルの文字は、エンコードに1文字につき2バイト必要です。
でメッセージを送信する場合 type 価値 text その場合、以下の文字数制限が適用される:
| 部品 | 最大文字数 | 計算 |
|---|---|---|
| 1 | 160 | UDHなしで160文字が使用可能 |
| 2 | 306 | (160 - 7) * 2 = 306 |
| 3 | 459 | (160 - 7) * 3 = 459 |
| 4 | 612 | (160 - 7) * 4 = 612 |
でメッセージを送信する場合 type の unicode の場合、メッセージの各文字は2バイトを必要とする。
Vonageは3200文字までのSMSを受け付けていますが、すべてのキャリアが対応しているわけではありません。メッセージが6つのSMSパートを超えないようにするのがベストプラクティスです。
注:連結されたSMSの各部分に対して課金されます。
このツールでメッセージテンプレートをテストしてください:
注意: このツールは、APIによってメッセージがどのように連結されるかを示すためのものです。本番での使用は想定していません。同じ内容のメッセージを大量に送信し、メッセージの連結による潜在的なコストを事前に計算したい場合は、まずテスト番号に単一のメッセージを送信し、メッセージ・パートの数を正確に決定することをお勧めします。については SMS API に表示されます。 message-count プロパティの 応答本文.については Messages API に表示されます。 sms.count_total プロパティの メッセージ・ステータス.
試してみる
メッセージ
データ
部品
It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.インバウンドメッセージ
インバウンドメッセージはSMSの仕様に準拠しています。お客様のバーチャル番号に送信されたSMSが、SMSの仕様より長い場合は、SMSの仕様に従います。 最大文字数 単一のSMSに対して許可された場合、連結されたメッセージを分割して受信します。
ただし、ユーザーが送信するキャリアが連結SMSをサポートしている場合のみ、受信した連結SMSを受信することができます。キャリアが連結をサポートしていない場合、有効な回避策は、短い時間内に同じ番号から送信されたすべてのSMSを連結されたものとして扱うことです。以下を参照してください。 インバウンドSMS連結 詳しくはナレッジベースの記事をご覧ください。
参照 インバウンドSMS 受信SMSの連結についての詳細は、Concepts Documentを参照のこと。