ブログ

[SAP BTP]SAP Build Work Zoneの通知機能でCloud Foundryアプリへ遷移させる(前編)通知テンプレートの登録

この記事をSNSでシェア!

はじめに

株式会社KYOSOでは、SAP Build Work Zone 上での SAP Fiori アプリケーション開発や、クライアントへの技術支援を幅広く行っています。

今回は、SAP Build Work Zone に備わる「通知機能」 に焦点を当て、調査する機会がありました。

設定方法・注意点・実装の流れ を、画面イメージを交えながら解説します。

SAP BTP、 Cloud Foundry environment にデプロイされるカスタムアプリは、通知を登録できる仕組みを持っています。ユーザーはサイトのシェルヘッダーから通知を確認し、クリックすることで 任意のアプリ画面に遷移 できます。

「通知をクリックして指定画面に遷移させたい」という要件は多いのではないでしょうか。
しかし、この便利な機能は意外と活用されていないのが現状です。

これから通知機能の導入・運用を検討されている方や、技術調査を進めている方の参考になれば幸いです。本記事では、その第一歩として、「通知テンプレートの登録方法」をわかりやすく解説します。


前提条件

通知機能を利用するには以下の環境が整っている必要があります。

  • SAP BTP (Cloud Foundry 環境) が利用可能であること
  • Work Zone Standard Edition がサブスクライブ済み
  • Cloud Foundryアプリケーションがデプロイ済み

通知の基本的な仕組み

Work Zone の通知は提供されているAPIを使用し通知テンプレートを作成し、それを指定し通知を送信する構成になっています。

通知のテンプレート登録

実際の通知の登録

本記事では、①通知のテンプレート登録を行う方法について説明致します。


通知テンプレートの登録手順

SAP Build Work Zoneでの通知有効化設定

Business_Notifications_Adminをロール追加した後、サイトディレクトリの「設定」から「通知」タブを選択し「生成」ボタンで認証情報を生成します。

通知関連機能に必要な情報を生成

サイト設定

通知機能を有効にしたいサイトの「設定」ボタンを押下

通知表示をオンにし保存

上記で通知機能の有効化設定の完了です。

適応後、サイト右上部分にベルのアイコンが表示され、こちらから通知を確認できるようになります。

通知テンプレート登録

提供されているAPIを使用しpostmanで動作確認していきます。

以下のトークン情報を取得します

  1. access_token
  2. csrfトークン
  3. Cookies情報

上記必要情報を取得します。

1. access_tokenの取得

以下情報を設定し、access_tokenを取得します。

項目内容
Addresshttps://生成した認証情報のトークンエンドポイント?grant_type=client_credentials
AuthorizationBasic Auth
ユーザ名生成した認証情報のクライアントID
パスワード生成した認証情報のクライアントシークレット

レスポンスのaccess_tokenを取得

*”expires_in”: 43199と記載が返却されているので約12時間(11時間59分59秒)の有効期限です。

2. csrfトークン取得

以下情報を設定し、csrfトークンを取得します。

項目内容
Addresshttps://生成した認証情報のホスト/v2/NotificationType.svc/NotificationTypes
AuthorizationBearer アクセストークン
Token取得したaccess_token

上記レスポンスのx-csrf-tokenを取得

3. Cookies情報を取得

上記レスポンスのx-csrf-tokenを取得


通知テンプレートの作成

NotificationTypesと呼ばれる通知テンプレートを作成します。

通知タイプのプロパティは以下です。

フィールド必須最大長 (文字数)
NotificationTypeKey通知のキー – 通知の登録時に使用
Type設定に紐づくID通知作成時にNotificationTypeVersionと共に参照します。
128
NotificationTypeVersion通知のバージョン管理
NotificationTypeKey、NotificationTypeVersion の特定の組み合わせの通知タイプは、アプリケーションごとに 1 つだけです。
20
TEMPLATES (必須)
Language通知の言語を指定します。
TemplateSensitive通知の本文 ① *下記画像参照250
TemplatePublicプッシュ通知に使用されるテキストです。250
TemplateGroupedグループ名 ② *下記画像参照500
Subtitleサブタイトル ③ *下記画像参照5000
Description設定の説明を記載、個人設定での通知タイプの文言に当たる値です。 ④ *下記画像参照250
TemplateLanguage通知テンプレートの本文では、動的に値を差し込むことができます。
この差し込みには プレースホルダーを使い
デフォルトの形式
プロパティ名を {property}(一重の中かっこ) で囲んで記述します。

Mustache形式の場合
プロパティ名を {{property}}(二重の中かっこ) で囲んで記述します。

テンプレートを設定するときに「どちらの形式を使うか」を選べる仕組みです。
EmailSubjectメール件名255
EmailHtml電子メール通知のペイロードの HTML 書式20000
EmailText電子メール通知のペイロードのプレーンテキスト書式20000
ACTIONS (オプション)
ActionId実行されるアクションの特定に使用される値32
ActionTextクリック時ユーザに示されるテキスト40
GroupActionText同じタイプの通知がグループ化される場合に、ユーザに示されるテキスト40
DELIVERY CHANNELS (オプション)
Type配信チャネルのタイプです。
現在、MAIL タイプのみがサポートされています。
Enabledこの通知チャネルを実際に使うかどうかを指定します。
true にすると有効になり、通知がそのチャネルを通じて配信されます。

ユーザー設定の「通知」項目

上記パラメーターを使用し、実際にNotificationType(通知テンプレート)の登録を行います。

項目内容
Addresshttps://生成した認証情報のホスト/v2/NotificationType.svc/NotificationTypes
AuthorizationBearer アクセストークン
Token取得したaccess_token
X-CSRF-Token取得したX-CSRF-Token
Cookie取得したCookie
Acceptapplication/json
Body下記JSON 
{
    "NotificationTypeKey": "Test",
    "NotificationTypeVersion": "0.1",
    "Templates": [
        {
            "Language": "ja",
            "TemplatePublic": "TemplatePublicです。",
            "TemplateSensitive": "TemplateSensitive表示欄です。{{requester_name}}が実行した通知テストが成功しました。",
            "TemplateGrouped": "登録実行結果",
            "TemplateLanguage": "Mustache",
            "Subtitle": "Subtitleです。",
            "Description": "Descriptionです、登録した通知タイプの説明を記載します。",
            "EmailSubject": "これは通知テストです",
            "EmailText": "This is a Leave Request. It needs your attention",
            "EmailHtml": "<html><body><p>This is a Leave Request. It needs your attention</p></body></html>"     
        }
    ],
    "DeliveryChannels": [
        {
            "Type": "MAIL",
            "Enabled": true
        }
    ]
}

実際にデータを POST して動作を確認します。

同一エンドポイントのGETで現在登録中の通知テンプレートが確認可能です。

注意点として、公式記事の注意文にもある通り

通知タイプは、「NotificationTypeKey と NotificationTypeVersion の組み合わせ」で一意に識別されます。
つまり、アプリケーションごとに同じキー・同じバージョンの組み合わせは 1 つしか存在できません

そのため、登録内容を更新したい場合には、以下のような対応が必要です。

  • 内容を改訂して利用したい場合
    → NotificationTypeVersion を上げて、新しいバージョンとして登録します。
  • 完全に置き換えたい場合
    → 既存の通知タイプを削除してから、同じキー・バージョンで再登録します。

削除は、通知タイプ登録時に生成された GUID を指定して、以下のように DELETE を実行することで可能です。

GUIDで生成されているキーでテンプレートが管理されるので、登録上限数を気にする必要はありません。

最後に

ここまでで、SAP Build Work Zone の通知機能 を利用するための事前準備 と、
NotificationType(通知テンプレート)の登録方法 についてご紹介しました。

通知テンプレートを登録しておくことで、実際に通知を送信する際に再利用でき、管理のしやすさにつながります。

次回(後編)記事は、今回登録したテンプレートを実際に使い、

  • 通知を送信する方法
  • 通知クリック時に任意のアプリケーション画面へ遷移させる方法

について具体的に解説していきます。

投稿者プロフィール

増田 駿也
増田 駿也
2021年入社、BS事業部所属。

現在はSAP BTP上でのSide-by-Side拡張開発に携わっており、SAP Fioriを活用したUI開発案件を担当しています。

社内のアプリケーションの開発基盤標準化や、社外活動の参加にも積極的に関わり、ナレッジの共有を通じてチーム全体のスキル向上にも貢献したいと考えています。
趣味はツーリング。
この記事をSNSでシェア!