SMPP コネクタの説明 smpp-connector-desc
SMS コネクタのデータフロー sms-data-flow
この節では、SMS プロセスによるデータの処理方法について説明します。
SMS プロセスと環境とのやり取りをまとめた、大まかなブロックダイアグラムを次に示します。
SMS プロセスでは、SMPP プロバイダーとの通信を処理する SMPP コネクタ自体と、SR 紐付けのためのバックグラウンドタスクという 2 つの重要なコンポーネントをホストします。
SMPP アカウントのデータフロー sms-data-flow-smpp-accounts
SMS プロセスは NMS をポーリングし :extAccountSMPP コネクタで新しい接続を生成して、各アカウントの設定を渡します。 ポーリング頻度は、serverConf の configRefreshMillis 設定で調整できます。
アクティブな SMPP アカウントごとに、SMPP コネクタは常に接続をアクティブに維持しようとします。接続が失われた場合は、再接続します。
メッセージの送信中のデータフロー sms-data-flow-sending-msg
-
SMS プロセスは、nms:delivery をスキャンしてアクティブな配信を選択します。 配信は、次の場合にアクティブになります。
- メッセージを送信できる状態である
- 有効期限が切れていない
- 実際には配信である(例:テンプレートではなく、削除もされていない)
- SMPP コネクタで、配信にリンクされた外部アカウントに対して 1 つ以上の接続を開くことができる
-
配信ごとに、SMS プロセスでは配信部分を読み込みます。配信部分が部分的に送信された場合、SMS プロセスでは、広範ログを確認して、既に送信されたメッセージを確認します。
-
SMS プロセスでは、配信部分からのパーソナライゼーションデータを使用してテンプレートを展開します。
-
SMPP コネクタは、コンテンツやその他の設定に一致する MT(SUBMIT_SM PDU)を生成します。
-
SMPP コネクタは、トランスミッター(またはトランシーバ)接続を介して MT を送信します。
-
プロバイダーは、この MT の ID を返します。nms:providerMsgId に挿入されます。
-
SMS プロセスでは、広範ログを送信済みステータスに更新します。
-
最終的なエラーが発生した場合、SMS プロセスは広範ログを適宜更新し、nms:broadLogMsg に新しい種類のエラーを作成することがあります。
SR の受信中のデータフロー sms-data-flow-sr
- SMPP コネクタは、SR(DELIVER_SM PDU)を受信してデコードします。外部アカウントで定義された正規表現を使用して、メッセージ ID とステータスを取得します。
- メッセージ ID とステータスが nms に挿入される :providerMsgStatus
- 挿入後、SMPP コネクタは DELIVER_SM_RESP PDU で応答します。
- プロセス中にエラーが発生した場合、SMPP コネクタは負の DELIVER_SM_RESP PDU を送信し、メッセージをログに記録します。
MO の受信中のデータフロー sms-data-flow-mo
- SMPP コネクタは、MO(DELIVER_SM PDU)を受信してデコードします。
- メッセージからキーワードが抽出されます。宣言されたキーワードと一致する場合、対応するアクションが実行されます。強制隔離を更新するために、nms:address に書き込む場合があります。
- カスタム TLV が宣言されている場合、それぞれの設定に従ってデコードされます。
- 完全にデコードおよび処理された MO が nms:inSms テーブルに挿入されます。
- SMPP コネクタは DELIVER_SM_RESP PDU でを用いて応答します。エラーが検出された場合は、エラーコードがプロバイダーに返されます。
MT と SR の紐付け中のデータフロー sms-reconciling-mt-sr
- SR 紐付けコンポーネントは、nms:providerMsgId および nms:providerMsgStatus を定期的に読み取ります。 両方のテーブルのデータが結合されます。
- 両方のテーブルにエントリがあるすべてのメッセージについて、一致する nms:broadLog エントリが更新されます。
- 新しい種類のエラーが検出された場合や、手動で検証されなかったエラーのカウンターを更新する場合は、nms:broadLogMsg テーブルをプロセスで更新できます。
MT、SR、broadLog エントリの照合 sms-matching-entries
次のダイアグラムは、プロセス全体を表しています。
フェーズ 1
- メッセージはスキャンされ、書式設定後に SMPP コネクタに送信されます。
- SMPP コネクタは、これを SUBMIT_SM MT PDU として書式設定します。
- MT は SMPP プロバイダーに送信されます。
- プロバイダーは SUBMIT_SM_RESP で応答します。SUBMIT_SM と SUBMIT_SM_RESP は、sequence_number によって一致します。
- SUBMIT_SM_RESP は、プロバイダーから受け取った ID を提供します。この ID は、広範ログ ID と共に nms:providerMsgId テーブルに挿入されます。
フェーズ 2
- プロバイダーは DELIVER_SM SR PDU を送信します。
- SR は解析され、プロバイダー ID、ステータスおよびエラーコードが抽出されます。このステップでは、抽出用正規表現を使用します。
- プロバイダー ID と対応するステータスが nms:providerMsgStatus に挿入されます。
- すべてのデータがデータベースに安全に挿入されると、SMPP コネクタは DELIVER_SM_RESP で応答します。DELIVER_SM と DELIVER_SM_RESP は、sequence_number によって一致します。
フェーズ 3
- SMS プロセスの SR 調整コンポーネントは、nms:providerMsgId テーブルと nms:providerMsgStatus テーブルの両方を定期的にスキャンします。
- 両方のテーブルのいずれかの行に一致するプロバイダー ID がある場合、2 つのエントリは結合されます。これにより、広範ログ ID(providerMsgId に保存)とステータス(providerMsgStatus に保存)を一致させることができます。
- 広範ログは、対応するステータスに更新されます。
アフィニティと専用プロセスコネクタ sms-affinities
専用プロセスコネクタでは、アフィニティは無視され、SMS プロセス内でのみ実行されます。
serverConf オプション sms-serverconf-options
一部の設定は serverConf.xml で調整できます。このファイル内の他の設定と同様に、config-instance.xml ファイルで指定する必要があります。すべての設定は、< mta2 > 要素内にあります。
次の表は、すべての設定をまとめたものです。最小/最大許容値では、ほとんどの場合に考慮する必要がある範囲を大まかに把握できます。デバッグ値は、パフォーマンスに関連しない問題を見つけようとする際に選択する値です。