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

SMS チャネルの動作方式

SMS チャネルは、キューに入れられた電子メールメッセージを SMS メッセージに変換して、配信を担当する SMSC に渡すマルチスレッドチャネルです。

この節には、チャネル動作についての次の項目があります。

電子メールをチャネルに送信する

「SMS チャネルの設定」に従って SMS チャネルを設定すると、チャネルに 1 つまたは複数のホスト名が関連付けられます。説明のため、ここでは sms.siroe.com というホスト名がチャネルに関連付けられたホスト名であると仮定します。この場合、電子メールは次の形式のアドレスでチャネルに送信されます。

local-part@sms.siroe.com

local-part は、SMS 宛先アドレス (携帯電話番号、ポケットベル ID など) または次の形式の属性と値のペアのリストのどちらかです。

/attribute1=value1/attribute 2=value2/.../@sms.siroe.com

表 D–1 に、認識される属性名とその使用法を示します。これらの属性を使用して、一部のチャネルオプションで受取人単位の制御が行えます。

表 D–1 SMS 属性

属性名 

属性値と使用法 

ID

SMS メッセージの送信先である SMS 宛先アドレス (携帯電話番号、ポケットベル ID など)。この属性とその値は必須です。 

FROM

SMS ソースアドレス。オプションが USE_HEADER_FROM=0 である場合は無視されます。

FROM_NPI

指定した NPI 値を使用します。オプションが USE_HEADER_FROM=0 である場合は無視されます。

FROM_TON

指定した TON 値を使用します。オプションが USE_HEADER_FROM=0 である場合は無視されます。

MAXLEN

生成された SMS メッセージまたはこの受取人宛のメッセージに含める最大合計バイト数 (8 ビットバイト)。MAXLEN の値と 「MAX_MESSAGE_SIZE」チャネルオプションで指定されている値のうち、低いほうの値が使用されます。

MAXPAGES

この受取人用に電子メールを分割して生成される SMS メッセージの最大数。MAXPAGES の値と 「MAX_PAGES_PER_MESSAGE」チャネルオプションで指定されている値のうち、低いほうの値が使用されます。

NPI

ID 属性で指定されている宛先 SMS アドレスの番号計画識別子 (NPI) の値を指定します。この属性で受け入れられる値については、「DEFAULT_DESTINATION_NPI」チャネルオプションを参照してください。この属性が使用されると、その値は DEFAULT_DESTINATION_NPI チャネルオプションで指定されている値より優先されます。

PAGELEN

この受取人宛の単一の SMS メッセージに含める最大バイト数。この値と 「MAX_PAGE_SIZE」チャネルオプションで指定されている値のうち、小さいほうの値が使用されます。

TO

ID と同義。 

TO_NPI

NPI と同義。 

TO_TON

TON と同義。 

TON

ID 属性で指定されている宛先 SMS アドレスの番号種別 (TON) の値を指定します。この属性で受け入れられる値については、「DEFAULT_DESTINATION_TON」チャネルオプションを参照してください。この属性が使用されると、その値は DEFAULT_DESTINATION_TON チャネルオプションで指定されている値より優先されます。

次にアドレスの例を示します。


123456@sms.siroe.com
/id=123456/@sms.siroe.com
/id=123456/maxlen=100/@sms.siroe.com
/id=123456/maxpages=1/@sms.siroe.com

電子メールアドレスの SMS 宛先アドレス部分に対する変換、妥当性チェック、およびその他の処理については、「サイト定義のアドレス妥当性チェックと変換」を参照してください。

電子メールから SMS への変換プロセス

電子メールをリモートサイトに送信するには、電子メールをリモート SMSC によって認識される SMS メッセージに変換する必要があります。この節では、SMS チャネルのキューに入れられた電子メールメッセージを 1 つまたは複数の SMS メッセージに変換するプロセスについて説明します。以下で説明されているように、生成される SMS メッセージの最大数、SMS メッセージの合計の長さの最大値、および 1 つの SMS メッセージの最大サイズはオプションで制御します。電子メールメッセージのテキスト部分 (MIME のテキストコンテントタイプ) のみが使用され、変換される部分の最大数も制御できます。

電子メールメッセージのヘッダー行とテキスト部分で使用される文字セットは、すべて Unicode に変換されてから、適切な SMS 文字セットに変換されます。

SMS_TEXT マッピングテーブル (「サイト定義のテキスト変換」を参照) がない場合は、SMS チャネルのキューに入れられた電子メールメッセージに対して図 D–2 で示す処理が実行されます。

図 D–2 SMS チャネルの電子メール処理

SMS チャネルの電子メール処理を示すフローチャート

図 D–3 SMS チャネルの電子メール処理 (続き)

SMS チャネルの電子メール処理を示すフローチャート (続き)

次の手順は、図 D–2 で示されている番号と対応します。

  1. 空の出力バッファーが開始されます。バッファーに使用される文字セットは Unicode です。

  2. 電子メールメッセージの差出人のアドレスは、次の 5 つのソースから 1 つ取り出されます。ソースは優先度の高いものから低いものの順で表示されています。


    1. Resent-from:
    2. From:
    3. Resent-sender:
    4. Sender:
    5. Envelope From:
    

    差出人のアドレスが空の文字列である場合は、差出人のアドレスの代わりに 「FROM_NONE」チャネルオプションの値がバッファーに追加されます。

    差出人のアドレスが空の文字列ではない場合は、「FROM_FORMAT」チャネルオプションを処理した結果および LINE_STOP チャネルオプションの値が出力バッファーに追加されます。

    Resent-from: および Resent-sender: ヘッダー行は、「USE_HEADER_RESENT」オプションの値が 1 である場合にのみ考慮されることに注意してください。それ以外の場合は、Resent- ヘッダー行は無視されます。

  3. Subject: ヘッダー行が存在しない場合または空の場合は、「SUBJECT_NONE」オプションの値が出力バッファーに追加されます。

    それ以外の場合は、「SUBJECT_FORMAT」オプションを処理した結果および 「LINE_STOP」チャネルオプションの値が出力バッファーに追加されます。

  4. テキストメッセージ部分がない場合は、「NO_MESSAGE」チャネルオプションの値が出力バッファーに追加されます。

    テキストメッセージ部分がある場合は、「CONTENT_PREFIX」チャネルオプションの値が出力バッファーに追加されます。

    テキスト以外のメッセージ部分は破棄されます。

  5. 各テキスト部分に関しては、MAX_MESSAGE_PARTS の制限に達していない場合、テキスト部分は Unicode にデコードされ、LINE_STOP チャネルオプションの値とともにバッファーに追加されます。

  6. 結果の出力バッファーは、Unicode から SMSC のデフォルトの文字セットまたは UCS2 (UTF-16) のどちらかに変換されます。SMSC のデフォルトの文字セットは、「SMSC_DEFAULT_CHARSET」オプションを使用して指定します。

  7. 変換後は、「MAX_MESSAGE_SIZE」のバイト数を超えないように切り捨てられます。

  8. 「電子メールから SMS への変換プロセス」で変換された文字列は、1 つまたは複数の SMS メッセージに分割されます。各 SMS メッセージは、MAX_PAGE_SIZE のバイト数以内の長さになります。最大で 「MAX_PAGES_PER_MESSAGE」の SMS メッセージが生成されます。


    注 –

    電子メールメッセージは複数の受取人を持つ場合もあるので、手順 6 〜 手順 8 は受取人のアドレスごとに実行される必要があります。このとき、4 ページの「電子メールをチャネルに送信する」で説明されている MAXLENMAXPAGES または PAGELEN 属性が使用されます。


電子メールメッセージ処理の例

たとえば、チャネルのデフォルトの設定で次のような電子メールメッセージを処理するとします。


From: John Doe 
To: 1234567@sms.siroe.com
Subject: Today’s meeting
Date: Fri, 26 March 2001 08:17

The staff meeting is at 14:30 today in the big conference room.

この電子メールメッセージは次のように SMS メッセージに変換されます。

jdoe@siroe.com (Today’s meeting) The staff meeting is at 14:30 today in the big conference room.

別の一連のオプション設定での処理を次に示します。


CONTENT_PREFIX=Msg:
FROM_FORMAT=From:${pa}
SUBJECT_FORMAT=Subj:$s

この設定では以下の結果になります。

From:John Doe Subj:Today’s meeting Msg:The staff meeting is at 14:30 today in the big conference room.

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 メッセージを送信しません。

サイト定義のアドレス妥当性チェックと変換

サイトで妥当性チェックを実行したり、受取人の電子メールアドレスでエンコードされた SMS 宛先アドレスを変換する必要がある場合もあります (「電子メールをチャネルに送信する」を参照)。たとえば、サイトで実行する処理には以下のようなものがあります。

上記の最初の2 つのタスクは、「DESTINATION_ADDRESS_NUMERIC」および 「DESTINATION_ADDRESS_PREFIX」チャネルオプションを使用して実行できます。一般的に、上記の 3 つのタスクおよびその他のタスクは、マッピングテーブルを使用して実装できます。書き換えルールからマッピングテーブルを呼び出す方法、または FORWARD マッピングテーブルによる方法のどちらかを使用します。書き換えルールからマッピングテーブル呼び出す方法を使用した場合は、柔軟性がもっとも高く、サイト定義のエラー応答が付いたアドレスを拒否することもできます。この節の以下の部分では、このようなアプローチ、つまり書き換えルールからマッピングテーブルを呼び出す方法を使用する場合について説明します。

宛先アドレスは数字のみで、10 または 11 桁の長さを持ち、文字列「+1」が先頭に付いている必要があると仮定します。これは、次の書き換えルールを使用して実現できます。

sms.siroe.com      ${X-REWRITE-SMS-ADDRESS,$U}@sms.siroe.com
sms.siroe.com       $?Invalid SMS address

上記の最初の書き換えルールは、X-REWRITE-SMS-ADDRESS という名前のサイト定義のマッピングテーブルを呼び出しています。このマッピングテーブルは、検査のために電子メールアドレスのローカル部分に渡されます。マッピングプロセスで、そのローカル部分が受け入れ可能と判断された場合は、アドレスは受け入れられ、SMS チャネルに書き換えられます。マッピングプロセスで、そのローカル部分が受け入れ不可と判断された場合は、次の書き換えルールが適用されます。次の書き換えルールは「$?」書き換えルールであるので、アドレスは拒否され、「Invalid SMS address」というエラーテキストが表示されます。

以下に X-REWRITE-SMS-ADDRESS マッピングテーブルを示します。このマッピングテーブルによって、属性と値のペアのリスト形式または SMS 宛先アドレスの行のどちらかであるローカル部分に対して必要な検証ステップが実行されます。

X-VALIDATE-SMS-ADDRESS

! 数値以外の文字を取り除く
 $_*$[$ -/:-~]%* $0$2$R
! アドレス形式が 1nnnnnnnnnn または nnnnnnnnnn の場合は受け入れる
! 受け入れる場合、出力は +1nnnnnnnnnn であることを確認する    1%%%%%%%%%%      +1$0$1$2$3$4$5$6$7$8$9$Y
   %%%%%%%%%%       +1$0$1$2$3$4$5$6$7$8$9$Y
! このアドレスは受け入れられなかったため、無効となる
   *                $N

X-REWRITE-SMS-ADDRESS
    */id=$_*/*       $C$0/id=$|X-VALIDATE-SMS-ADDRESS;$1|/$2$Y$E
    */id=$_*/*       $N
    *                $C$|X-VALIDATE-SMS-ADDRESS;$0|$Y$E
    *                $N

上記の設定の場合、「DESTINATION_ADDRESS_NUMERIC」オプションの値は必ず 0 (デフォルト) にしてください。それ以外の値では、SMS 宛先アドレスから「+」が取り除かれます。

サイト定義のテキスト変換

変換ルールのテーブルを使用して、「電子メールから SMS への変換プロセス」に示した手順 1 〜 6 をサイトでカスタマイズできます。これらのルールは、MTA のマッピングファイル内のマッピングテーブルを使用して指定します。

マッピングテーブルの名前は、SMS_Channel_TEXT とし、SMS_Channel には SMS チャネルの名前を指定します。たとえば、チャネルの名前が sms である場合は SMS_TEXT、チャネルの名前が sms_mway である場合は SMS_MWAY_TEXT とします。

このマッピングテーブルには、2 種類のエントリが入ります。ただし、これらのエントリの形式についての説明を始める前に、エントリの作成および使用方法を理解するため、マッピングファイルの使用方法を理解しておくことが不可欠です。これら 2 種類のエントリの説明の後、マッピングテーブルの例を示します。

2 種類のエントリを以下に示します。

メッセージヘッダーエントリ

メッセージヘッダーエントリは、SMS メッセージに含めるヘッダー行を指定したり、ヘッダー行の略記方法または略記以外の場合に行われる変換方法を指定したりします。メッセージヘッダーエントリの 1 つによって、ヘッダー行がゼロでない長さの文字列に正常にマッピングされた場合にのみ、ヘッダー行は生成される SMS メッセージに含められます。各エントリには次のような形式があります。

H|pattern replacement-text

メッセージのヘッダー行がこのパターンに一致すると、ヘッダー行は置換テキスト「replacement-text」で置き換えられます。このときマッピングファイルのパターン一致機能および文字列置換機能が使用されます。その後、メタキャラクタ「$Y」が置換テキストに指定されていれば、ヘッダー行のマッピングによる最終的な結果は SMS メッセージに含められます。ヘッダー行がどのパターン文字列とも一致しない場合、ヘッダー行が長さゼロの文字列にマッピングされた場合、またはメタキャラクタ「$Y」が置換テキストに指定されていない場合は、ヘッダー行は SMS メッセージに含められません。以下に 2 つのエントリを示します。


H|From:* F:$0$Y 
H|Subject:* S:$0$Y

これらのエントリによって、From: および Subject: ヘッダー行は SMS メッセージに含められます。このとき From: および Subject:F:S: として略記されます。以下のエントリの場合、


H|Date:* H|D:$0$R$Y 
H|D:*,*%19%%*:*:* H|D:$0$ $5:$6$R$Y

Date: ヘッダー行が受け入れられ、次のヘッダー行のようにマップされます。

Date: Wed, 16 Dec 1992 16:13:27 -0700 (PDT)

これは次のように変換されます。

D: Wed 16:13

非常に複雑で反復的なマッピングが作成される場合もあります。サイトにカスタムフィルタを設定する場合は、最初にマッピングファイルの動作方法を理解しておく必要があります。エントリの右側の H| は、必要に応じて省略できます。H| は、一連の反復的なマッピングで必要とされるテーブルエントリの数を削減するために右側に置かれています。

メッセージ本文エントリ

メッセージ本文エントリは、マッピングを確立してメッセージ本文の各行に適用されます。メッセージ本文の各行は、確立されたマッピングが適用されてから、生成中の SMS メッセージに組み込まれます。メッセージ本文エントリは、次の形式をとります。

B|pattern B| replacement-text

メッセージ本文の行が pattern パターンと一致すると、置換テキスト replacement-text で置き換えられます。ここでも、この機能を使用して非常に複雑で反復的なマッピングが作成される場合があります。エントリの右側の B| は、必要に応じて省略できます。

SMS マッピングテーブルの例

例 D–1 に、SMS_TEXT マッピングテーブルの例を示します。各行の終わりにある括弧の中の数字は、このテーブルのあとに示す 「説明テキスト」というタイトルのセクションでの項目番号と対応しています。


例 D–1 SMS_TEXT マッピングテーブルの例


SMS_TEXT

   H|From:*        H|F:$0$R$Y       (1)
   H|Subject:*     H|S:$0$R$Y       (1)
   H|F:*<*>*       H|F:$1$R$Y       ()
   H|F:*(*)*       H|F:$0$2$R$Y     (2)
   H|F:*"*"*       H|F:$0$2$R$Y     (3)
   H|F:*@*         H|F:$0$R$Y       (4)
   H|%:$ *         H|$0:$1$R$Y      (5)
   H|%:*$          H|$0:$1$R$Y      (5)
   H|%:*$ $ *      H|$0:$1$ $2$R$Y  (6)
   B|*--*          B|$0-$1$R        (7)
   B|*..*          B|$0.$1$R        (7)
   B|*!!*          B|$0!$1$R        (7)
   B|*??*          B|$0?$1$R        (7)
   B|*$ $ *        B|$0$ $1$R       (6)
   B|$ *           B|$0$R           (5)
   B|*$            B|$0$R           (5)

               

説明テキスト

上記の例の SMS_TEXT マッピングテーブルのエントリの説明を以下に示します。

上記の例では、マッピングの反復的適用の実装と制御にメタキャラクタ「$R」が使用されています。これらのマッピングを反復することによって、強力なフィルタリングが実行されます。たとえば、前後に付いている単一のスペースを削除する (6)、または 2 つのスペースを 1 つに削減する (7) という単純なマッピングは、全体として採用された場合に、前後に付いているすべてのスペースを削除し、連続する複数のスペースを単一のスペースに削減するフィルタとなります。このようなフィルタリングによって、各 SMS メッセージのサイズを小さくできます。

  1. これらの 2 つのエントリによって、From: および Subject: ヘッダー行が SMS メッセージに含められます。From: および Subject: は、それぞれ F:S: として略記されます。これら以外のエントリにも、From: および Subject: ヘッダー行にさらに影響を与えるものがあります。

    このエントリは、<...> パターンを含む From: ヘッダー行を角括弧内のテキストのみにします。例:

    F: "John C. Doe" <jdoe@siroe.com> (Hello)

    これは、次のように置き換えられます。

    F: jdoe@siroe.com

  2. このエントリは、From: ヘッダー行の (...) パターン内のすべてを包括的に削除します。例:

    F: "John C. Doe" <jdoe@siroe.com> (Hello)

    これは、次のように置き換えられます。

    F: "John C. Doe" <jdoe@siroe.com>

  3. このエントリは、From: ヘッダー行の "..." パターン内のすべてを包括的に削除します。例:

    F: "John C. Doe" <jdoe@siroe.com> (Hello)

    これは、次のように置き換えられます。

    F: <jdoe@siroe.com> (Hello)

  4. このエントリは、From: ヘッダー行のアットマーク (@) の右側にあるものをすべて包括的に削除します。例:

    F: "John C. Doe" <jdoe@siroe.com> (Hello)

    これは、次のように置き換えられます。

    F: "John C. Doe" <jdoe@

  5. これらの 4 つのエントリは、メッセージヘッダーと本文の行から前後に付いているスペースを削除します。

  6. これら 2 つのエントリは、メッセージのヘッダーと本文の行の 2 つのスペースを 1 つのスペースに削減します。

  7. これらの 4 つのエントリは、二重になっているダッシュ、ピリオド、感嘆符、および疑問符を一致する文字の単一の不定発生に削減します。これによっても、SMS メッセージのバイト数を節約できます。

エントリの順序は非常に重要です。たとえば、所定の順序で、次のようなメッセージの From: ヘッダー行から始めます。

From: "John C. Doe" (Hello)

これは次のように短縮されます。

jdoe

この結果までの手順は次のとおりです。

  1. 次の From: ヘッダー行から始めます。

    From: "John C. Doe" (Hello)

    最初のマッピングエントリのパターンがこれと一致し、次の結果になります。

    F: "John C. Doe" (Hello)

    結果文字列の「$R」メタキャラクタによって、結果文字列は再度マッピングされます。

  2. 直前の手順の結果文字列にマッピングが適用されます。これによって、次の結果になります。

    F: jdoe@siroe.com

    マッピングの「$R」によって、一連のマッピング全体がこの手順の結果に再び適用されます。

  3. 次に、マッピングが適用され、次の結果になります。

    F: jdoe

    マッピングの「$R」によって、一連のマッピング全体がこの手順の結果に再び適用されます。

  4. 次に、マッピングが適用され、次の結果になります。

    F:jdoe

    マッピングの「$R」によって、一連のマッピング全体がこの手順の結果に再び適用されます。

  5. ほかのエントリは一致しないため、最終的な結果文字列は次のとおりになります。

    F:jdoe

    これが SMS メッセージに取り込まれます。


    注 –

    imsimta test-mapping ユーティリティーを使用してマッピングテーブルをテストすることができます。次に例を示します。


    # imsimta test -mapping -noimage_file -mapping_file=test.txt
    Enter table name: SMS_TEXT
    Input string: H|From: "John C. Doe"  (Hello)
    Output string: H|F:jdoe
    Output flags: [0,1,2,89]
    Input string: ^D
    #

    imsimta test ユーティリティーの詳細については、『Sun Java System Messaging Server 6 2005Q4 Administration Reference』「imsimta test」を参照してください。