この章では、Oracle User Messaging Serviceで使用可能なParlay X Multimedia Messaging Web Service、およびParlay X Web Services Multimedia Messaging APIを使用してOracle User Messaging Serviceを介してメッセージを送受信する方法について説明します。
注意: Oracle User Messaging Serviceのアーキテクチャとコンポーネントの詳細は、『Oracle Fusion Middleware Oracle SOA Suiteスタート・ガイド』を参照してください。 |
項目は次のとおりです。
注意: Oracle User Messaging Serviceのコード・サンプルに関する詳細を参照したり、サンプルを自分で実行するには、URL:https://soasamples.samplecode.oracle.com/ にあるOracle Technology Networkのコード・サンプル・ページを参照してください。
このページにナビゲートした後は、検索条件の「UMS」を入力して「検索」をクリックすることで、Oracle User Messaging Serviceのコード・サンプルを検出できます。 |
注意: Oracle User Messaging Serviceには、Parlay X APIを実装したJavaクライアント・ライブラリも含まれています。 |
次の項では、サポートされている各操作のセマンティクスおよびParlay X Gatewayの実装固有の詳細について説明します。次の各表はParlay X仕様から直接抽出したもので、各操作に対する入力および出力メッセージ・パラメータの説明が記載されています。
Oracle User Messaging Serviceには、Parlay X 2.1 Multimedia Messaging仕様のサブセットが実装されています。特に、Oracle User Messaging Serviceは、SendMessageインタフェースおよびReceiveMessageインタフェースをサポートしています。MessageNotificationインタフェースおよびMessageNotificationManagerインタフェースはサポートされていません。
SendMessageインタフェースでは、sendMessage
操作で1つ以上の受信者アドレスにメッセージを送信したり、getMessageDeliveryStatus操作で以前送信したメッセージの配信ステータスを取得することができます。次の要件が適用されます。
受信者アドレスは、Oracle User Messaging Serviceのアドレス書式要件に準拠している必要があります(また、URIも有効である必要があります)。一般的な書式はdelivery_type
:
protocol_specific_address
で、email:user@domain
、sms:5551212
、im:user@jabberdomain
などのように記述します。
URIでは使用できない文字もあり、アドレスに含める必要がある場合には、エンコードまたはエスケープする必要があります。適切にエンコードされたURIを作成する方法は、java.net.URI
のJavaDocを参照してください。
WSDLでは送信者アドレスに対してすべての文字が使用可能ですが、Oracle User Messaging Serviceでは、その送信者アドレスが有効なメッセージ・アドレスである必要があります。
Oracle User Messaging Serviceでは、配信タイプごとに送信者アドレスを指定する必要があります。そのため、電子メールなどの特定の配信タイプの受信者に適用する送信者アドレスについては、その送信者アドレスにも、電子メールの配信タイプを指定する必要があります。この操作では、複数の受信者アドレスと単一の送信者アドレスの処理が可能であるため、送信者アドレスは同じ配信タイプの受信者にのみ適用されます。
Oracle User Messaging Serviceは、MessageNotificationインタフェースをサポートしていないため、receiptRequestが指定されている場合でも、配信確認を生成しないでください。つまり、receiptRequestパラメータは無視されます。
表63-1に、sendMessage
操作のsendMessageRequest
入力メッセージの説明を示します。
表63-1 sendMessage入力メッセージの説明
パート名 | パート・タイプ | オプション | 説明 |
---|---|---|---|
addresses |
xsd:anyURI[0..unbounded] |
いいえ |
このメッセージの宛先アドレス。 |
senderAddress |
xsd:string |
はい |
メッセージの送信者アドレス。このパラメータは、すべてのサード・パーティのプロバイダに対して使用不可です。Parlay Xサーバーは、このパラメータを特定アプリケーションのSLAに従って処理する必要があるため、その使用によって、PolicyExceptionが発生する場合があります。 |
subject |
xsd:string |
はい |
メッセージの件名。SMSにマップされた場合、このパラメータは、個別のsenderAddressが指定されている場合でも、senderAddressとして使用されます。 |
priority |
MessagePriority |
はい |
メッセージの優先度。存在しない場合は、ネットワークによって、演算子のポリシーに基づいた優先度が割り当てられます。このメッセージに適用するように指定します。 |
charging |
common: ChargingInformation |
はい |
このメッセージに適用するように指定してください。 |
receiptRequest |
common:SimpleReference |
はい |
アプリケーション・エンドポイント、インタフェース名および相関機能を定義します。これらの定義内容は、アプリケーションに、メッセージが端末に配信されたときや配信が不可能な場合を通知するために使用されます。 |
表63-2に、sendMessage
操作のsendMessageResponse
出力メッセージの説明を示します。
getMessageDeliveryStatus
操作では、以前送信したメッセージの配信ステータスを取得します。入力requestIdentifierは、sendMessage操作によるresult値です。これは、他のMessagingドキュメントでメッセージIDと呼ばれている識別子と同じ識別子です。
表63-3に、getMessageDeliveryStatus
操作のgetMessageDeliveryStatusRequest
入力メッセージの説明を示します。
表63-3 getMessageDeliveryStatusRequest入力メッセージの説明
パート名 | パート・タイプ | オプション | 説明 |
---|---|---|---|
registrationIdentifier |
xsd:string |
いいえ |
配信ステータス・リクエストに関連する識別子。 |
表63-4に、getMessageDeliveryStatus
操作のgetMessageDeliveryStatusResponse出力メッセージの説明を示します。
ReceiveMessageインタフェースには3つの操作があります。getReceivedMessages
操作では、最後にgetReceivedMessages
を起動した以降に受信したメッセージについてサーバーをポーリングします。このgetReceivedMessages
では、必ずしもすべてのメッセージ・コンテンツを戻すわけではないことに注意してください。通常は、メッセージ・メタデータのみを戻します。
他の2つの操作(getMessage
およびgetMessageURIs
)は、メッセージ・コンテンツの取得に使用されます。
この操作では、受信したメッセージについてサーバーをポーリングします。次の要件に注意してください。
登録IDパラメータは、アプリケーションがメッセージを受信するエンドポイント・アドレスを識別する文字列です。詳細は、ReceiveMessageManagerインタフェースの説明を参照してください。
Parlay X仕様では、登録IDが未指定の場合、このアプリケーションに対するすべてのメッセージが戻されます。ただし、WSDLでは登録IDパラメータは必須です。そのため、ここでの実装では、空の文字列("")を指定なしの値として処理します。空の文字列を登録IDとしてgetReceivedMessagesをコールした場合は、このアプリケーションのすべてのメッセージを取得します。したがって、空の文字列は、startReceiveMessagesをコールする場合の登録IDとして許可されない値です。
受信したメッセージ・コンテンツがParlay X仕様に従った純粋なASCIIテキストの場合、そのメッセージ・コンテンツは、MessageReferenceオブジェクト内のインラインで戻され、messageIdentifier(メッセージID)要素はNULLです。ここでの実装では、この操作の目的のために、Content-Typeがtext/plainのすべてのコンテンツ、us-asciiを純粋なASCIIテキストとしてエンコードしているすべてのコンテンツを処理します。MIME仕様では、エンコードが指定されていない場合はus-asciiとみなされ、Content-Typeが指定されていない場合はtext/plainとみなされます。
優先度パラメータは現在無視されています。
表63-5に、getReceivedMessages
操作のgetReceivedMessagesRequest
入力メッセージの説明を示します。
表63-5 getReceivedMessagesRequest入力メッセージの説明
パート名 | パート・タイプ | オプション | 説明 |
---|---|---|---|
registrationIdentifier |
xsd:string |
いいえ |
オフライン・プロビジョニングの手順を識別します。この手順によって、アプリケーションではメッセージの受信通知を指定の基準に従って受信できます。 |
priority |
MessagePriority |
はい |
Parlay Xゲートウェイからポーリングするメッセージの優先度。指定した優先度以上のすべてのメッセージを取得します。指定しない場合は、すべてのメッセージが戻されます。つまり、優先度をLowに指定した場合と同じです。 |
表63-6に、getReceivedMessages
操作のgetReceivedMessagesResponse
出力メッセージの説明を示します。
表63-6 getReceivedMessagesResponse出力メッセージの説明
パート名 | パート・タイプ | オプション | 説明 |
---|---|---|---|
registrationIdentifier |
xsd:string |
いいえ |
オフライン・プロビジョニングの手順を識別します。この手順によって、アプリケーションではメッセージの受信通知を指定の基準に従って受信できます。 |
priority |
MessagePriority |
はい |
Parlay Xゲートウェイからポーリングするメッセージの優先度。指定した優先度以上のすべてのメッセージを取得します。指定しない場合は、すべてのメッセージが戻されます。優先度をLowに指定した場合と同じです。 |
getMessage
操作では、以前のgetReceivedMessagesの起動時のメッセージIDを使用してメッセージ・コンテンツを取得します。レスポンス・メッセージにはSOAP本体がありません。コンテンツは単一のSOAP添付ファイルとして戻されます。
表63-7に、getMessage
操作のgetMessageRequest
入力メッセージの説明を示します。
表63-7 getMessageRequest入力メッセージの説明
パート名 | パート・タイプ | オプション | 説明 |
---|---|---|---|
messageRefIdentifier |
xsd:string |
いいえ |
メッセージのアイデンティティ。 |
getMessage
操作に対するgetMessageResponse
出力メッセージはありません。
getMessageURIs
では、メッセージ・コンテンツをURIのリストとして取得します。次の要件に注意してください。
これらのURIは、参照を解除してコンテンツを取得できるHTTP URLです。
インバウンド・メッセージのContent-Typeがmultipartの場合は、サブパートごとに複数のURIが戻されます。Content-Typeがmultipartでない場合は、単一のURIが戻されます。
インバウンド・メッセージがParlay X仕様に従った本体テキスト・パートの場合、そのインバウンド・メッセージは、ASCIIテキストとしてエンコードされた場合のメッセージ本体として定義され、MessageURIオブジェクト内のインラインで戻されます。ここでの実装の目的のために、この動作を次のように定義します。
メッセージのContent-Typeがtext/*(任意のテキスト・タイプ)で、charsetパラメータがus-asciiの場合、コンテンツはMessageURIオブジェクトのインラインで戻されます。インラインで戻された内容以外にコンテンツがないため、戻されるURIはありません。
メッセージのContent-Typeがmultipart/(任意のマルチパート・タイプ)で、最初の本体パートのContent-Typeがtext/で、charsetがus-asciiである場合、そのパートはMessageURIオブジェクトのインラインで戻され、そのパートに対応して戻されるURIはありません。
MIME仕様では、charsetパラメータが省略されている場合は、us-asciiがデフォルト値とみなされます。Content-Typeヘッダーがメッセージに指定されていない場合、Content-Typeはtext/plainとみなされます。
表63-8に、getMessageURIs
操作のgetMessageURIsRequest
入力メッセージの説明を示します。
表63-8 getMessageURIsRequest入力メッセージの説明
パート名 | パート・タイプ | オプション | 説明 |
---|---|---|---|
messageRefIdentifier |
xsd:string |
いいえ |
取得するメッセージのID。 |
表63-9に、getMessageURIs
操作のgetMessageURIsResponse
出力メッセージの説明を示します。
Parlay X Messagingの仕様では、メッセージ・フローの特定部分が未定義のままです。未定義状態の主要な領域は、クライアントを、(ReceiveMessageインタフェースを介して)同期受信するアドレスにバインディングするためのプロセス部分です。
Oracle User Messaging Serviceには、このプロセスをサポートするために、Parlay Xへの拡張インタフェースが含まれています。この拡張インタフェースは、Oracle XMLネームスペース内の個別のWSDLとして実装されていますが、Parlay X公認ではありません。クライアントはこの追加インタフェースを使用しないか、モジュール型の方法で使用するかを選択できます。後者の場合は、このインタフェースの中核となるメッセージング・ロジックはParlay X仕様に完全に準拠することになります。
ReceiveMessageManagerは、メッセージを受信するクライアントの登録を管理するためのOracle固有のインタフェースです。クライアントはこのインタフェースを使用して、特定のアドレスでのメッセージの受信を開始、および停止します (これは、Messaging APIでのアクセス・ポイントの登録/登録解除の概念に類似しています)。
この操作を起動すると、クライアントは、メッセージを受信するために、クライアント自体を指定のエンドポイントにバインドできます。次の要件に注意してください。
エンドポイントは、アドレスおよびオプションの基準で構成されています。この基準は、Parlay Xの仕様では、メッセージの件名またはコンテンツの最初の空白デリミタ付きトークンとして定義されています。
エンドポイント情報の他に、クライアントでは、この操作の起動時に登録IDも指定できます。このIDは一意の文字列で、後でstopReceiveMessage
操作とgetReceivedMessages
操作でこの特定のバインディングを参照するために使用できます。
他のクライアント・アプリケーションによって、エンドポイントがすでに登録されている場合、または登録IDがすでに使用されている場合は、ポリシー・エラーが発生します。
特定の文字はURIに使用できません。特定の文字をアドレスに含める必要がある場合、それらの文字はエンコードまたはエスケープできます。適切にエンコードされたURIの作成方法の詳細は、java.net.URIのjavadocを参照してください。たとえば、XMPPメッセージを受信するように登録する場合は、IM:jabber|user@example.com
のようにアドレスを指定する必要があります。ただし、パイプ(|
)文字はURIに使用できないため、サーバーへの送信前にエスケープする必要があります。
指定したエンドポイント・アドレスで、サーバーが実際にメッセージを受信できる保証はありません。受信の可否は、Oracle User Messaging Service全体の構成、特にシステムにデプロイされているメッセージング・ドライバによって決まります。サーバーがメッセージを受信できないアドレスにクライアントがバインドされている場合、エラーは表示されません。
startReceiveMessage
操作には次の入出力があります。
表63-10に、startReceiveMessage
操作のstartReceiveMessageRequest
入力メッセージの説明を示します。
表63-10 startReceiveMessageRequest入力メッセージの説明
パート名 | パート・タイプ | オプション | 説明 |
---|---|---|---|
registrationIdentifier |
xsd:string |
いいえ |
登録識別子。 |
messageService ActivationNumber |
xsd:anyURI |
いいえ |
メッセージ・サービスのアクティブ化番号。 |
criteria |
xsd:string |
はい |
説明文字列。 |
startReceiveMessage
操作に対するstartReceiveMessageResponse
出力メッセージはありません。
この操作を起動すると、クライアントと受信エンドポイント間ですでに確立されているバインディングが削除されます。クライアントは、破損しているエンドポイントのバインディングを識別するために、startReceiveMessage
のコール時に指定した登録IDと同じ登録IDを指定します。このアプリケーションのサーバーに認識されている、対応する登録IDのバインディングがない場合は、ポリシー・エラーが発生します。
表63-11に、stopReceiveMessage
操作のstopReceiveMessageRequest
入力メッセージの説明を示します。
表63-11 stopReceiveMessageRequest入力メッセージの説明
パート名 | パート・タイプ | オプション | 説明 |
---|---|---|---|
registrationIdentifier |
xsd:string |
いいえ |
登録識別子。 |
stopReceiveMessage
操作に対するstopReceiveMessageResponse
出力メッセージはありません。
Parlay X Messaging Clientは、Parlay X WSDLファイルおよびWebサービス・アセンブリ・ツールのみを使用してアセンブルできますが、サポート対象のParlay X Messagingインタフェースに対しては、事前作成のWebサービス・スタブおよびインタフェースが用意されています。SOAP添付ファイルがあるWebサービスをParlay Xで指定されているスタイルでアセンブルすることは困難であるため、WSDLから開始せずに提供されているAPIを使用することをお薦めします。
Parlay X Messaging APIで使用可能なクラスの完全なリストは、Messaging JavaDocを参照してください。このAPIに対する主要なエントリ・ポイントは、次のクライアント・クラスを経由します。
oracle.sdp.parlayx.multimedia_messaging.send.SendMessageClient
oracle.sdp.parlayx.multimedia_messaging.receive.ReceiveMessageClient
oracle.sdp.parlayx.multimedia_messaging.extension.receive_manager.
ReceiveMessageManager
各クライアント・クラスにより、クライアント・アプリケーションは対応するインタフェースで操作を起動できます。クライアント・クラスのインスタンスを構成するときは、リモート・ゲートウェイURLなどの追加のWebサービス・パラメータ、および必要なセキュリティ資格証明が提供されます。詳細は、Javadocを参照してください。セキュリティ資格証明は、Parlay Xの仕様で指定されている標準的なWS-Securityヘッダーを使用してサーバーに伝播されます。
クライアント・アプリケーションの一般的なプロセスは、前述のクライアント・クラスのいずれかを作成し、必要な構成項目(エンドポイント、ユーザー名、パスワード)を設定してビジネス・メソッド(SendMessageClient.sendMessage()
など)のいずれかを起動することです。このAPIの使用方法の例については、Oracle Technology Network(OTN)で入手できるメッセージ・サンプル、特にusermessagingsample-parlayx-src.zip
を参照してください。
この項では、OTNでOracle User Messaging Serviceが提供するParlay X APIを使用して、サンプル・チャット・アプリケーションを作成、デプロイおよび実行する方法を説明します。
注意: Oracle User Messaging Serviceのコード・サンプルに関する詳細を参照したり、サンプルを自分で実行するには、URL:https://soasamples.samplecode.oracle.com/ にあるOracle Technology Networkのコード・サンプル・ページを参照してください。
このページにナビゲートした後は、検索条件の「UMS」を入力して「検索」をクリックすることで、Oracle User Messaging Serviceのコード・サンプルを検出できます。 |
注意: Oracle User Messaging Serviceのアーキテクチャとコンポーネントの詳細は、『Oracle Fusion Middleware Oracle SOA Suiteスタート・ガイド』を参照してください。 |
項目は次のとおりです。
このサンプルは、電子メール、SMSまたはIMを通じてメッセージを送受信するWebベースのチャット・アプリケーションの作成方法を示します。このサンプルでは、標準ベースのParlay X Web Service APIを使用してユーザー・メッセージング・サーバーと相互作用します。このサンプル・アプリケーションには、3つのWebサービス・インタフェース(Parlay Xで定義されたSendMessageサービス、ReceiveMessageサービス、Parlay Xに対するOracleの拡張機能であるReceiveMessageManagerサービス)のそれぞれに対するWebサービス・プロキシ・コードが含まれています。Oracle JDeveloperでアプリケーション・サーバー接続を定義し、アプリケーションをデプロイして実行します。事前作成されたOracle JDeveloperプロジェクトとして提供されるこのアプリケーションには、単純なWebチャット・インタフェースが含まれています。
次の手順を実行して、事前作成されたサンプル・アプリケーションを実行し、デプロイします。
Oracle JDeveloperで、usermessagingsample-parlayx.jws(.zipファイルに含まれています)を開きます。
Oracle JDeveloperのメイン・ウィンドウにプロジェクトが表示されます。
Oracle JDeveloperで、「ファイル」→「開く」の順に選択し、前述のディレクトリに移動して、ワークスペース・ファイル「usermessagingsample-parlayx.jws」を開きます。
これにより、Parlay Xサンプル・アプリケーションに対して事前作成されたJDeveloperアプリケーションが開きます。このアプリケーションには、1つのWebモジュールが含まれています。アプリケーションのソース・コードはすべて設定されています。インストールに固有のパラメータは構成する必要があります。
Webモジュールで「Oracle UMS Client」ライブラリが使用されていることを確認して、サンプル・アプリケーションのビルド依存性を満たします。
「アプリケーション・ナビゲータ」で、Webモジュール「usermessagingsample-parlayx-war」を右クリックし、「プロジェクト・プロパティ」を選択します。
左側のペインで、「ライブラリとクラスパス」を選択します。
「OK」をクリックします。
ナビゲーション・ペインでプロジェクトを右クリックし、「新規」を選択して、アプリケーション・サーバー接続を作成します。第63.6.4項「新規アプリケーション・サーバー接続の作成」の説明に従います。
プロジェクトをデプロイするには、「usermessasgingsample-parlayx project」→「デプロイ」→「usermessasgingsample-parlayx」→「デプロイ先」→「SOA_server」の順に選択します(図63-3)。
メッセージBuild Successful
がログに表示されていることを確認します。
デフォルトのリビジョンを入力し、「OK」をクリックします。
メッセージDeployment Finished
がデプロイメント・ログに表示されていることを確認します。
アプリケーションが正常にデプロイされました。
サンプルを実行するには、その前に、次の項の説明に従って、Oracle User Messaging Serviceの追加ドライバを構成し、ユーザー・メッセージング・プリファレンスでメッセージを受信するユーザー用のデフォルト・デバイスを構成する必要があります。
注意: 詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。 |
次の手順を実行し、サンプルを実行およびテストします。
Webブラウザを開きます。
次のようにアプリケーションのURLに移動し、ログインします。
http://
host
:
port
/usermessagingsample-parlayx/
メッセージングParlay XサンプルWebページが表示されます(図63-4)。このページには、ナビゲーション・タブ、およびアプリケーションの手順が表示されます。
「構成」をクリックして、次の値を入力します(図63-5)。
送信エンドポイントを指定します。例: http://localhost:port/sdpmessaging/parlayx/SendMessageService
受信エンドポイントを指定します。例: http://localhost:port/sdpmessaging/parlayx/ReceiveMessageService
受信マネージャ・エンドポイントを指定します。例: http://localhost:port/sdpmessaging/parlayx/ReceiveMessageMessageService
ユーザー名とパスワードを指定します。
ポリシーを指定します(ユーザー・メッセージング・サービスのインスタンスでWS-Securityが有効になっている場合に必要)。
「保存」をクリックします。
「管理」をクリックします。
登録IDを入力して、登録およびメッセージを受信するアドレスを指定します(図63-6)。このページを使用すると、アドレスでのメッセージの受信を停止することもできます。
「開始」をクリックします。
メッセージRegistration operation succeeded
が表示されていることを確認します。
「チャット」をクリックします(図63-7)。
図63-7に示す書式で受信者をTo:フィールドに入力します。
メッセージを入力します。
「送信」をクリックします。
メッセージが受信されていることを確認します。
次の手順を実行し、アプリケーション・サーバー接続を作成します。
プロジェクトを右クリックし、「新規」→「接続」→「アプリケーション・サーバー接続」の順に選択して、新規アプリケーション・サーバー接続を作成します(図63-8)。
接続にSOA_server
という名前を付けて、「次へ」をクリックします(図63-9)。
「接続タイプ」に「WebLogic 10.3」を選択します。
認証情報を入力します。ユーザー名の一般的な値はweblogic
です。
「接続」ダイアログで、SOA管理サーバーのホスト名、ポートおよびSSLポートを入力し、Oracle WebLogic Serverドメインのドメイン名を入力します。
「次へ」をクリックします。
「テスト」ダイアログで、「接続のテスト」をクリックします。
メッセージSuccess!
が表示されていることを確認します。
アプリケーション・サーバー接続が作成されました。