ニュース一覧

更新情報

アクション実行後にSlackにカスタムメッセージを通知できるようになりました!

ベースマキナの更新情報をお届けします。

アクション実行後のSlack通知機能

アクションの実行後に、実行結果やパラメーターの値を使ってカスタマイズしたメッセージをSlackへ通知できるようになりました。

Slackを連携するだけで、以下の機能が利用できます。

主な機能

  • チャンネル選択: 連携したワークスペースのチャンネル一覧から通知先を選択

  • 環境別設定: 本番環境と開発環境で異なる通知先を設定

  • メンション機能: 通知時に特定のユーザーをメンション

  • メッセージのカスタマイズ: 通知内容をSlackのmrkdwn形式で自由にカスタマイズ

成功時・エラー時の通知

アクションごとに、実行成功時やエラー時の通知を個別に設定できます。

エラー時の通知設定画面のスクリーンショット。「エラー時の通知(有効)」が展開され、通知を有効にするトグルがオン。通知方法は「エラー通知」で、各環境の通知先として開発環境「#bm_alert_dev」と本番環境「#bm_alert」が表示されている。メンション先ユーザーに「ベース太郎」が選択され、下部にエラー通知メッセージのテンプレート({{ action.url }} などの変数を含む)と「Slackでプレビュー」リンクが表示されている。

メッセージのカスタマイズ

通知メッセージにはアクションのパラメーターや実行結果を使用できます。

基本的な使用例

まずはシンプルな通知の例です。

{{ currentUser.name }} が {{ action.name }} を実行しました。
環境: {{ environment.name }}

通知例:「ベース太郎がユーザー作成アクションを実行しました。環境: 本番環境」

パラメーターを含む通知:

アクションにuserNameとnewStatusというパラメーターがある場合の例です。

ユーザー「{{ userName }}」のステータスを「{{ newStatus }}」に更新しました。
実行者: {{ currentUser.name }}

通知例:「ユーザー「マキナ次郎」のステータスを「招待済」に更新しました。実行者: ベース太郎」

実行結果を使った通知

アクションの実行結果を通知メッセージに埋め込むことができます。

HTTP APIの結果を表示:

HTTP APIアクションで {"user": {"id": 123, "name": "マキナ次郎"}} のようなレスポンスが返る場合の例です。

ユーザー情報を取得しました。
・ID: {{ action.success.user.id }}
・名前: {{ action.success.user.name }}

通知例:「ユーザー情報を取得しました。 ・ID: 123 ・名前: マキナ次郎」

配列データの表示:

アクションの実行結果が[{"id":1,"name":"チョコレートパン"},{"id":2,"name":"塩パン"}]のような配列データの場合の例です。

最初の商品: {{ action.success.items[0].name }}

通知例:「最初の商品: チョコレートパン」

エラー時の通知:

エラー時は {{ action.failure }} でエラー内容を表示できます。

アクション「{{ action.name }}」の実行に失敗しました。
エラー内容: {{ action.failure }}
実行者: {{ currentUser.name }}
環境: {{ environment.name }}

通知例:「アクション「新規ユーザー招待」の実行に失敗しました。 エラー内容: すでに招待済みのユーザーです。 実行者: ベース太郎 環境: 本番環境」

JavaScriptアクションとの組み合わせ

より高度な通知をする場合、JavaScriptアクションでデータを加工し、その結果を通知メッセージで使用できます。

売上データを集計して通知する例:

import { executeAction } from "@basemachina/action";

export default async () => {
  const result = await executeAction("get-sales-data");
  const sales = result[0].success;

  const total = sales.reduce((sum, s) => sum + s.amount, 0);
  const count = sales.length;

  return {
    summary: `${count}件の売上、合計${total.toLocaleString()}円`,
    topSale: sales.sort((a, b) => b.amount - a.amount)[0],
  };
};

通知メッセージ:

本日の売上レポート
{{ action.success.summary }}
最高額: {{ action.success.topSale.amount }}円({{ action.success.topSale.customerName }}様)

通知例:「本日の売上レポート 12件の売上、合計850,000円 最高額: 3,000,000円 株式会社ベースマキナ様」

エラーハンドリングと通知:

複数のアクションを実行するワークフローで、どのステップで失敗したかを通知する例です。ResultErrorを使って構造化されたエラー情報を返します。

import { executeAction, ResultError } from "@basemachina/action";

export default async ({ userId, imageFile }) => {
  const uploadResult = await executeAction("upload-image", { imageFile });
  if (uploadResult[0].failure) {
    throw new ResultError({
      step: "画像アップロード",
      message: "画像のアップロードに失敗しました",
      detail: uploadResult[0].failure,
    });
  }

  const imagePath = uploadResult[0].success.path;
  const updateResult = await executeAction("update-user-image", {
    userId,
    imagePath,
  });
  if (updateResult[0].failure) {
    throw new ResultError({
      step: "ユーザー情報更新",
      message: "ユーザー情報の更新に失敗しました",
      detail: updateResult[0].failure,
    });
  }

  return { userId, imagePath };
};

エラー時の通知メッセージ:

ワークフローでエラーが発生しました。
失敗したステップ: {{ action.failure.step }}
エラー内容: {{ action.failure.message }}
詳細: {{ action.failure.detail }}

通知例:「ワークフローでエラーが発生しました。 失敗したステップ: 画像アップロード エラー内容: 画像のアップロードに失敗しました 詳細: 同じファイル名の画像が存在します。」

セットアップ手順

  1. Slack連携: 企業アカウント設定でSlackワークスペースを連携

  2. 通知方法の作成: プロジェクト設定で通知先チャンネルを環境ごとに設定

  3. アクションの通知設定: 各アクションで成功時・エラー時の通知を有効化

詳細はドキュメントの「通知機能」をご参照ください。

今後の展望

アクション実行後のSlack通知機能のみではなく、レビュー依頼/承認/却下などもSlack連携でより便利にしていく予定です。

  • レビュー依頼時にSlackで承認できるユーザー・グループにメンション付きで通知

  • Slack上でのレビュー依頼の確認、承認、却下

  • 承認期限に合わせた自動リマインド通知

機能の設計を進めている段階ですので、ご課題などあればお気軽にご意見いただければ幸いです。

軽微な変更点

CSVダウンロードのオプションに「文字列の値を常にダブルクォーテーションで囲む」を追加

オフの場合は、カンマ・改行・ダブルクォーテーションを含む文字列のみが囲まれます。
詳細は「結果のダウンロード > CSV形式のオプション」をご参照ください。

bridgeのTerraformモジュールを追加

Terraformを使ってbridgeをデプロイする場合にご利用いただけるモジュールを追加しました。

AWS ECS FargateおよびGoogle CloudのCloud Runに対応しています。

詳細は「bridgeとは > Terraformモジュール」をご参照ください。

お問い合わせ

管理画面のリプレイスから、組織のAI活用まで

ベースマキナの導入、テクサポAIのトライアル、AIネイティブ化の相談。まずは現在の課題をお聞かせください。