注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

通知の設定

関数は、プラットフォームで送信される通知や、ユーザーのメールアドレスに外部送信される通知などを柔軟に設定するために使用できます。

関数で通知を設定する際には、PrincipalUserまたはGroupを表す)とnotificationタイプが利用されます。このセクションを進めるにあたり、以下のリファレンスが役立つかもしれません:

カスタム通知の定義

オントロジーには、ユーザーに割り当てられる問題オブジェクトが含まれていると仮定します。問題に関する詳細を持つ通知を指定されたユーザーに送信するべきである関数を作成したいとします。

Copied!
1import { EmailNotificationContent, Function, Notification, ShortNotification, User } from "@foundry/functions-api"; 2import { Issue } from "@foundry/ontology-api"; 3 4export class NotificationFunctions { 5 @Function() 6 public createIssueNotification(issue: Issue, user: User): Notification { 7 // プラットフォーム内で表示される短い通知を作成します 8 const shortNotification = ShortNotification.builder() 9 .heading("新しい問題") 10 .content("新しい問題があなたに割り当てられました。") 11 // プラットフォームのIssueオブジェクトへのリンク 12 .addObjectLink("問題", issue) 13 .build(); 14 15 // メールの本文を定義します。メールの本文には、データの表などのヘッドレスHTMLを含めることができます 16 // ユーザーと問題の両方のプロパティにアクセスできることに注意してください 17 const emailBody = `こんにちは, ${user.firstName}, 18 19新しい問題があなたに割り当てられました: ${issue.description}.`; 20 21 const emailNotificationContent = EmailNotificationContent.builder() 22 .subject("新しい問題") 23 .body(emailBody) 24 .addObjectLink("問題", issue) 25 .build(); 26 27 return Notification.builder() 28 .shortNotification(shortNotification) 29 .emailNotificationContent(emailNotificationContent) 30 .build(); 31 } 32}

ユーザーとグループの取得

関数にユーザーが渡される他に、必要に応じてユーザーまたはグループを取得することができます。問題オブジェクトには assignee フィールドがあり、そのフィールドにはユーザーIDが含まれているとします。そして、ユーザーに問題についてリマインドする通知を実装したいと思います。 次のようにしてそれを行うことができます:

Copied!
1import { EmailNotificationContent, Function, Notification, ShortNotification, User, Users } from "@foundry/functions-api"; 2import { Issue } from "@foundry/ontology-api"; 3 4export class NotificationFunctions { 5 @Function() 6 // 問題に対するリマインダー通知を作成する関数 7 public async createIssueReminderNotification(issue: Issue): Promise<Notification> { 8 // 担当者がいない場合はエラーを投げる 9 if (!issue.assignee) { 10 throw new UserFacingError("Cannot create notification for issue without an assignee."); 11 } 12 13 // 担当者の情報を取得 14 const user = await Users.getUserByIdAsync(issue.assignee); 15 16 // Eメール本文の作成 17 const emailBody = `Hello, ${user.firstName}, 18 19This is a reminder to investigate the following issue: ${issue.description}`. 20 21 // 通知をインラインで構築するための構造も使用できます 22 return Notification.builder() 23 .shortNotification(ShortNotification.builder() 24 .heading("Issue reminder") // 通知のヘッダー 25 .content("Investigate this issue.") // 通知の内容 26 .addObjectLink("Issue", issue) // 通知に問題のリンクを追加 27 .build()) 28 .emailNotificationContent(EmailNotificationContent.builder() 29 .subject("New issue") // Eメールの件名 30 .body(emailBody) // Eメールの本文 31 .addObjectLink("Issue", issue) // Eメールに問題のリンクを追加 32 .build()) 33 .build(); 34 } 35}

受信者の返却

上記で文書化した Notification API は、カスタム通知内容を返すことを許可します。Functions を使用して通知を設定する別の方法は、通知の受信者のリストを返すことです。これを行うには、単に1つ以上の PrincipalUserGroupなど)を返す Function を記述します。以下の例では、Function は問題を報告したユーザーと現在問題に割り当てられているユーザーの両方を返します。

Copied!
1import { Function, User, Users } from "@foundry/functions-api"; 2import { Issue } from "@foundry/ontology-api"; 3 4export class NotificationFunctions { 5 /** 6 * Issueを受け取り、Issueの現在の担当者と元々の報告者を表すUserを返します。 7 * イシューを受け取り、イシューの現在の担当者と元の報告者を表すユーザーを返します。 8 */ 9 @Function() 10 public async getIssueAssigneeAndReporter(issue: Issue): Promise<User[]> { 11 if (!issue.assignee || !issue.reporter) { 12 throw new UserFacingError("Cannot create notification for issue without an assignee or reporter."); 13 // 担当者や報告者のいないイシューに対して通知を作成することはできません。 14 } 15 16 const user = await Users.getUserByIdAsync(issue.assignee); 17 const issueReporter = await Users.getUserByIdAsync(issue.reporter); 18 19 return [user, issueReporter]; 20 } 21}