Agile育成ブログ
未来を変える喜びを
未分類

Zoom→Dify→Slackのワークフロー

1. Zoom録画をトリガーに設定

• Zoomで録画が完了したときにZapierで処理を開始するよう設定。

2. Zapierで中間処理

• 録画データ(文字起こしファイル含む)を取得し、Dify APIに送信。

• 必要な評価結果を取得。

3. Slackに送信

• Difyから返された結果をSlackに投稿。


1. Zapierの基本設定

1. Zapierアカウント作成またはログイン

Zapier にアクセスしてアカウントを作成、またはログインします。

2. Zap作成

• 「Create Zap」ボタンをクリックして新しいZapを作成します。

2. トリガー: Zoom録画が完了したとき

1. Trigger Appを設定

• アプリ検索で「Zoom」を選択。

2. Trigger Eventを選択

Zoomの設定で、録画が完了した際にWebhook通知を送信するように設定します。
このWebhook通知をZapierのトリガーとして使用します。

• 「Recording Completed」を選択。

• このトリガーは、Zoomで録画が完了したときに発火します。

3. Zoomアカウントを接続

• ZoomアカウントをZapierに接続します(OAuth認証を使用)。

• 必要なアクセス権限を付与します。

4. テストトリガー

• 既存のZoom録画データを使ってトリガーが正常に動作することを確認します。

3. アクション1: Zoom録画データの処理

1. 録画URLを取得

• トリガーのデータから録画ファイル(または文字起こしファイル)のURLを取得します。

1. ベースURL:https://api.dify.ai/v1

2. 文字起こしファイルを扱う際のエンドポイント:

ファイルアップロード: /files/upload

チャットメッセージ送信: /chat-messages

1. ファイルアップロードの例

Zoomから提供された文字起こしファイルのURLをDifyに渡すには、まずファイルをアップロードします。以下はリクエストボディの構造例です:

{
  "file": {
    "type": "document",
    "transfer_method": "remote_url",
    "url": "https://us06web.zoom.us/rec/download/your_transcription_file.vtt"
  },
  "user": "unique_user_identifier"
}

リクエストボディ(例: ファイルアップロード)

4. アクション2: Difyでスクリプトを評価

1. Dify Webhookを設定

Zoomから取得したデータをDifyに渡すプロセスを自動化できます。

• Zapierから「Webhook by Zapier」をアクションとして追加。

Action Eventに「Custom Request」を選択。

2. Webhookリクエスト設定

Method: POST

URL: Dify APIエンドポイント

(例: https://api.dify.ai/evaluate)

Headers:

• Authorization: Bearer YOUR_DIFY_API_KEY

• Content-Type: application/json

Body

{
  "text": "{{Recording Transcript URL}}"
}

• {{Recording Transcript URL}} はZoomから取得した文字起こしURL。

3. テストリクエスト

• Dify APIが正しく応答するか確認します。

• 正常に動作すれば評価結果が返されます。

• 実際の音声ファイルをZoomから取得するプロセスはDifyの責任範囲です。

• Zapierは単にURLを転送するだけで、実際のファイル取得処理には関与しません。

5. アクション3: Slackに結果を送信

1. Slackアクションを追加

• アクションアプリとして「Slack」を選択。

• 「Send a Channel Message」を選択。

2. Slackアカウントを接続

• SlackアカウントをZapierに接続します。

• 送信先のチャンネルを指定。

3. メッセージ内容を設定

• 評価結果をメッセージに含めるために、Difyから返されたデータを動的に挿入。

: 「Zoom録画の評価結果です: {{評価結果}}」

4. テストメッセージ送信

• 正常にSlackにメッセージが送信されることを確認。

6. Zapの有効化

1. Zapの保存

• Zap全体の設定を保存します。

2. Zapを有効化

• 上部のトグルスイッチをオンにしてZapをアクティブにします。

Zoomの設定


Zoomの録画をクラウドに保存する設定に切り替えるにはZoomの有料プラン(Pro以上)でのみ利用可能です。

レコーディングタブの「コンピュータ ファイルにレコーディングする」にはチェックを入れないこと

Zoomからデータ取得時の認証について

Zoomからデータ取得時に認証が不要な場合

1. パブリックに共有可能なURLを使用している場合

• Zoomの録画ファイル(動画、音声、文字起こしなど)のURLがパブリック共有可能に設定されている場合、認証なしでアクセス可能です。

• 例: 録画ファイルの「Share URL」や「Download URL」が認証なしでアクセス可能に設定されている。

2. トリガー型Webhookを利用している場合

• ZoomのWebhook機能を利用してデータがZapierなどに送信される場合、事前認証されたデータが直接渡されるため、追加の認証は不要です。

3. Zapierで事前に認証済みの接続を利用している場合

• ZapierでZoomアカウントを認証している場合、その認証を経由してデータを取得している可能性があります。この場合、認証はバックグラウンドで処理されています。

各コード解説

Zoom-sdk-replit/server/index.ts

index.ts はサーバーのエントリーポイントです。主な機能は以下の通りです:

  • Express サーバーの初期化: HTTPリクエストを処理するためのルーティングとミドルウェアを設定。
  • Vite 開発サーバーの統合: setupVite を呼び出して、開発環境でのフロントエンドコードのホットリロードを提供。
  • WebSocketサーバーのセットアップ: registerRoutes 経由で WebSocket サーバーをセットアップ。
  • CORS や MIME タイプの設定: 静的ファイル(特に .wasm ファイル)の提供時に適切な MIME タイプや CORS を設定。
  • エラーハンドリング: 全てのエラーをキャッチして適切なレスポンスを返す。
Zoom-sdk-replit/server/routes.ts
  • HTTP ルート設定:
  • /api/health: サーバーの状態確認用。
  • /api/meeting-status: ミーティング状態を返す(ここでは固定値)。
  • WebSocketサーバーの初期化:
  • /ws エンドポイントを介して WebSocket サーバーを提供。
  • WebSocket メッセージを処理するロジックは websocket.ts に委譲。
Zoom-sdk-replit/server/websocket.ts
  • 音声処理のロジック:
  • Google Cloud Speech-to-Text を利用して、音声データを文字起こし。
  • 音声データは WebSocket 経由で Base64 エンコードされた形式で受信。
  • メッセージの優先度分析:
  • キーワードの頻出度合いから、メッセージの重要度(low/medium/high)を決定。
  • WebSocket メッセージ処理:
  • 音声データ (type: "audio") のみを処理する。

エラー

zoom-meeting-container の常時レンダリングをすることで