Sun Java System Messaging Server 6 2005Q4 管理ガイド

SMS メッセージの送信プロセス

電子メールメッセージが 1 つまたは複数の SMS メッセージ (通常は各受取人用に異なるセットがある) に変換されると、SMS メッセージは宛先 SMSC に送信されます。送信処理は、TCP/IP 対応の SMPP V3.4 を使用して実行されます。SMPP サーバーのホスト名 (SMPP_SERVER) は、SMS チャネルに関連付けられた正式なホスト名として採用されます。使用する TCP ポート (SMPP_PORT) は、port チャネルキーワードで指定します。

処理するメッセージがある場合、チャネルが起動します。チャネルは 「SMPP オプション」で説明されているように、ESME_ チャネルオプションで指定されている証明書を提示して SMPP サーバーにトランスミッタとしてバインドします。表 D–2 に、BIND_TRANSMITTER PDU (プロトコルデータユニット) で設定するフィールドの一覧と各フィールドの値を示します。

表 D–2 生成された BIND_TRANSMITTER PDU のフィールド

フィールド 

値 

system_id

「ESME_SYSTEM_ID」チャネルオプション。デフォルト値は空の文字列

password

「ESME_PASSWORD」チャネルオプション。デフォルト値は空の文字列

system_type

「ESME_SYSTEM_TYPE」チャネルオプション。デフォルト値は空の文字列

interface_version

0x34 は SMPP V3.4 を示します 

addr_ton

「ESME_ADDRESS_TON」。デフォルト値は 0x00 で、これは不明な TON を示します

addr_npi

「ESME_ADDRESS_NPI」。デフォルト値は 0x00 で、これは不明な NPI を示します

addr_range

「ESME_IP_ADDRESS」チャネルオプション。デフォルト値は空の文字列

チャネルはマルチスレッドです。送信するメールの数に応じて、チャネルは複数のデキュースレッドを実行します。複数のチャネルプロセスが実行されていることさえもあります。各スレッドは BIND_TRANSMITTER を実行して TCP/IP 接続上で送信する必要のあるすべての SMS メッセージを送信し、その後 UNBIND を送信して接続を終了します。再び使用する可能性をふまえてアイドル時間に接続を開いたままにしておく試行は行われません。リモート SMPP サーバーがスロットルエラーを返してきた場合は、UNBIND が発行されて TCP/IP 接続は終了し、新しい接続と BIND が確立されます。SMS メッセージの送信が終了する前に SMPP サーバーが UNBIND を返してきた場合も同様に動作します。

その後、SMS メッセージは SMPP SUBMIT_SM PDU を使用して送信されます。永久的なエラーが返された場合 (たとえば、ESME_RINVDSTADR)、電子メールメッセージは配信されずに戻ってきます。一時的なエラーが返された場合は、電子メールメッセージはあとで配信が試行されるように再びキューに入れられます。正確には、永久的なエラーとは、エラーが原因で発生した状態がいつまでも続く可能性があるもので、配信試行の繰り返しに前向きな効果がないものです。たとえば、無効な SMS 宛先アドレスなどです。これとは異なり、一時的なエラーとは、エラーが原因で発生した状態が近い将来に存在しなくなる可能性のあるものです。たとえば、サーバーダウンやサーバーが混み合っている状態です。

USE_HEADER_FROM オプションの値が 1 である場合、送信される SMS メッセージのソースアドレスが設定されます。使用される値は、元の電子メールメッセージから生成され、返信の送信先 (電子メール) アドレスとしてもっとも可能性の高いものに選ばれます。したがって、ソースアドレスは次の 7 つのソースから作成されます。ソースは優先度の高いものから低いものの順で表示されています。


1. Resent-reply-to:
2. Resent-from:
3. Reply-to:
4. From:
5. Resent-sender:
6. Sender:
7. Envelope From:

Resent-reply-to: および Reply-to: ヘッダー行は、「USE_HEADER_REPLY_TO」オプションの値が 1 である場合にのみ考慮されることに注意してください。また、Resent-reply-to:Resent-from:、および Resent-sender: ヘッダー行は、「USE_HEADER_RESENT」オプションの値が 1 である場合にのみ考慮されることにも注意してください。つまり、Resent-reply-to: ヘッダー行が考慮されるには、これらのオプションの両方の値が 1 である必要があります。これらのオプションは両方とも、デフォルト値は 0 です。したがって、デフォルトの設定では項目 4、6、および 7 のみが考慮されます。さらに、SMS メッセージのソースアドレスは 20 バイトに制限されているので、選択されるソースアドレスは、その制限を超えている場合は切り捨てられることに注意してください。

表 D–3 に、SUBMIT_SM PDU に設定する必須フィールドを示します。

表 D–3 生成された SUBMIT_SM PDU の必須フィールド

フィールド 

値 

service_type

「DEFAULT_SERVICE_TYPE」チャネルオプション。デフォルト値は空の文字列。

source_addr_ton

「DEFAULT_SOURCE_TON」チャネルオプション。USE_HEADER_FROM=1 の場合、このフィールドの値は英数字の TON を示す0x05 になります。これ以外の場合は、デフォルト値の国際 TON を示す 0x01 になります。

source_addr_npi

「DEFAULT_SOURCE_NPI」チャネルオプション。デフォルト値は 0x00。

source_addr

「DEFAULT_SOURCE_ADDRESS」チャネルオプション。USE_HEADER_FROM=0 以外の場合は、電子メールメッセージの差出人を示す英数字の文字列。

dest_addr_ton

TON アドレス指定属性または 「DEFAULT_DESTINATION_TON」チャネルオプション。デフォルト値は国際 TON を示す 0x01 です。

dest_addr_npi

NPI アドレス指定属性または 「DEFAULT_SOURCE_NPI」チャネルオプション。デフォルト値は不明のNPI を示す 0x00 です。

dest_addr

電子メールエンベロープ To: アドレスのローカル部分を基に生成された宛先 SMS アドレス。「電子メールをチャネルに送信する」を参照。

esm_class

片方向 SMS の場合は 0x03 に設定し、ストアアンドフォワードモード、デフォルトの SMSC メッセージタイプ、および返信パスを設定しないことを示します。双方向 MSM メッセージの場合は 0x83 に設定します。 

protocol_id

0x00 は CDMA および TDMA には使用されません。GSM の場合に 0x00 を指定すると、インターネットプロトコルを使用せず、SME 対 SME のプロトコルを使用することを示します。 

priority_flag

GSM と CDMA の場合は 0x00、TDMA の場合は 0x01。どちらも標準レベルの優先度を示します。「DEFAULT_PRIORITY」チャネルオプションの説明を参照。

schedule_delivery_time

空の文字列は即時配信を示します。 

validity_period

「DEFAULT_VALIDITY_PERIOD」チャネルオプション。デフォルト値は空の文字列で、これは SMSC のデフォルトを使用することを示します。

registered_delivery

0x00 は登録された配信がないことを示します。 

replace_if_present_flag

0x00 は過去の SMS メッセージを置き換えないことを示します。 

data_coding

0x00 は SMSC のデフォルトの文字セットを示します。0x08 は UCS2 文字セットを示します。 

sm_default_msg_id

0x00 はあらかじめ定義されているメッセージを使用しないことを示します。 

sm_length

SMS メッセージの長さと内容。詳細は、「電子メールから SMS への変換プロセス」を参照。

short_message

SMS メッセージの長さと内容。詳細は、「電子メールから SMS への変換プロセス」を参照。

表 D–4 に、SUBMIT_SM PDU に設定するオプションのフィールドを示します。

表 D–4 生成された SUBMIT_SM PDU のオプションのフィールド

フィールド 

値 

privacy

「DEFAULT_PRIVACY」チャネルキーワードの説明を参照。デフォルトでは、電子メールメッセージに Sensitivity: ヘッダー行がない場合、このフィールドは提供されません

sar_refnum

「USE_SAR」チャネルキーワードの説明を参照。デフォルトでは、このフィールドは提供されません

sar_total

前述の sar_refnum を参照。

sar_seqnum

前述の sar_refnum を参照。

チャネルは、送信する SMS メッセージがなくなるまで (メッセージキューが空になるまで)、または 「MAX_PAGES_PER_BIND」を超過するまで、SMPP サーバーにバインドしたままです。後者の場合で送信する SMS メッセージがまだ残っている場合は、新しい接続が確立され、バインドが実行されます。

SMS チャネルはマルチスレッドです。チャネルの処理スレッドは、それぞれが SMPP サーバーとの専用の TCP 接続を保持します。たとえば、3 つの処理スレッドがあり、それぞれが送信対象の SMS メッセージを処理する場合、チャネルは SMPP サーバーとの 3 つの開いた TCP 接続を持ちます。各接続はトランスミッタとして SMPP サーバーにバインドします。また、どの処理スレッドにも、処理中の SMS 送信は 1 度に 1 つしかありません。つまり、スレッドは SMS メッセージを送信すると、送信応答 (SUBMIT_SM_RESP PDU) があるまで待機し、それまで別の SMS メッセージを送信しません。