メインコンテンツにスキップ

Outgoing Webhookで文字起こし・要約完了時に別サービスへ通知する

RimoからWebhookを利用して、別サービスへ文字起こしや要約の情報を連携するオプション機能のご利用方法について

│この機能ついて│

🎙️プロダクト:Rimo

📍利用可能プラン:法人プラン

👤利用できる権限:すべてのユーザー

※Webhookは、有料オプション機能です。ご希望の場合は、Rimoの営業・CS担当にお問い合わせください。

1. 概要

ノートの文字起こし・AI 要約・アクションが完了したときに、指定した URL へ HTTP POST で通知を送る機能です。

外部システム(Zapier、n8n、Slack、社内 DB など)との連携や、自動化ワークフローの起点として使えます。

主な用途:

  • 文字起こし完了時に外部システムへ通知する

  • 要約(議事録)の生成完了時に Slack・メールへ自動通知する

  • 完了したノートの内容を外部データベースへ自動保存する

  • n8n などを通じて Salesforce の活動・商談情報を自動更新する

2. 設定方法

Webhook 機能は組織ごとに有効化が必要です。ご利用になれない場合は Rimo の担当者へご連絡ください。

2-1. Webhook を作成する(組織管理者)

1. Rimo の 設定 > Webhook を開き、「+ Webhookを作成」をクリックします。

2. 次の項目を入力します。

3.「テスト送信」で受信できることを確認してから「作成」をクリックします(テスト送信の内容は 8 章)。

項目

説明

Webhook名

管理用の名前(例: 「SF自動更新」)

URL

通知先の URL(例: https://example.com/webhook)。
HTTPS を推奨します

通知タイミング

「文字起こし完了時」「要約完了時」「アクション完了時」から 1 つ選択

データフォーマット

「IDのみ」または「コンテンツを含む」

作成した Webhook は一覧で確認でき、有効/無効の切り替え、「…」メニューからの編集・削除ができます。1 つの Webhook が送るのは、選んだ 1 種類の通知だけです。複数の種類を受け取りたい場合は、種類ごとに Webhook を作成してください。

2-2. チームフォルダに紐付ける

Webhook は、紐付けたチームフォルダに入っているノートについてのみ送信されます。

  1. 対象のチームフォルダの設定を開き、「Webhook通知」タブを選びます。

  2. 送信したい Webhook にチェックを入れて保存します。

  • 1 つのチームフォルダに複数の Webhook を紐付けられます。

  • 組織全体に一括で紐付ける設定はありません(非公開のノートが意図せず外部に送られることを防ぐため)。

  • チームフォルダに入っていないノート(個人のノートなど)は送信対象外です。

3. 通知の種類

通知は 3 種類で、event_type で見分けます。

画面の表示

event_type

送信されるとき

文字起こし完了時

transcription.completed

ノートの文字起こしが完了した直後

要約完了時

summary.completed

AI 要約(議事録)が 1 件生成されるたびに送信

アクション完了時

action.completed

ノートに紐づくアクション(AI によるタスク実行)が、完了・失敗・キャンセルのいずれかで終了したとき

同じノートについて複数回の通知が届くケース

次の場合、同じノートについて同じ種類の通知が複数回届きます。

  • 文字起こし完了時: ノートを再度文字起こしした場合

  • 要約完了時: 1 つのノートで複数の要約テンプレートを使った場合(要約ごとに 1 通)、要約を再生成した場合

  • アクション完了時: 1 つのノートで複数のアクションを実行した場合(アクションごとに 1 通)

通知そのものを一意に識別する ID はありません。受信側で重複を判定する場合は、次の組み合わせをお使いください。

通知の種類

識別に使う項目

文字起こし完了時

id

要約完了時

id + summary_id

アクション完了時

id + action.work_item_id

4. 送信内容

どの通知も、JSON を本文にした HTTP POST で届きます。届く項目は「データフォーマット」で変わります。

4-1. HTTP リクエスト

項目

値

メソッド

POST

Content-Type

application/json(UTF-8)

User-Agent

Rimo-Webhook/1.0

X-Rimo-Signature

署名(7 章)

X-Rimo-Timestamp

署名に使った時刻(Unix 秒)

4-2. データフォーマット

画面の表示

内容

向いている用途

IDのみ

ノート ID、作成者 ID、開催日時などの最小限の情報

通知だけを受け取り、内容は Rimo の画面で確認する

コンテンツを含む

上記に加えて、作成者のメールアドレス・表示名、タイトル、文字起こし全文、要約本文、アクションの内容

文字起こしや要約の本文を外部システムへ連携する

「コンテンツを含む」は会議の内容そのものを送るため、HTTPS の URL を使い、7 章の署名検証を行うことを推奨します。

4-3. 共通の項目(両フォーマット)

項目

型

説明

event_type

string

通知の種類(3 章)

id

string

ノート ID

state

string

ノートの状態(3 章)

summary_id

string

要約 ID。要約完了時のみ

timestamp

string

Rimo が通知を送信した時刻(RFC 3339 / UTC。小数秒が付く場合あり)。会議の時刻ではありません

user.id

string

ノート作成者のユーザー ID

held_at

string

会議の開催日時(RFC 3339)。不明な場合は項目ごと省略

team_id

string

ノートが入っているチームフォルダのチーム ID

organization_id

string

組織 ID

4-4. 「コンテンツを含む」で追加される項目

項目

型

説明

user.email

string

ノート作成者のメールアドレス

user.display_name

string

ノート作成者の表示名

note.title

string

ノートのタイトル(文字起こし完了時・要約完了時)

note.transcripts[]

array

発言ごとの文字起こし(文字起こし完了時・要約完了時)

note.transcripts[].text

string

発言の本文

note.transcripts[].start_time

number

発言の開始位置(録音開始からのミリ秒)

note.transcripts[].end_time

number

発言の終了位置(録音開始からのミリ秒)

note.transcripts[].speaker_uuid

string

話者の識別子(4-6)。話者が割り当てられていない発言では省略

note.truncated

boolean

文字起こしが大きすぎて途中までしか入っていない場合のみ true(4-7)

summary.content

string

要約本文(Markdown)。要約完了時のみ。本文が取得できなかった場合は summary ごと省略

summary.template_mode

string

要約に使ったテンプレートの種類

summary.custom_template_id

string

カスタムテンプレートを使った場合のみ、その ID

4-5. アクション完了時の項目

項目

フォーマット

説明

action.work_item_id

両方

アクションの ID

action.plan_status

両方

終了したときの状態(done / failed / cancelled)

action.steps[]

両方(「IDのみ」では常に空)

実行したステップ。各要素は title / state / order

action.artifacts

両方

将来の拡張用。現在は常に空配列

action.title / content / purpose

コンテンツを含む

アクションのタイトル・内容・目的

アクション完了時は note(タイトル・文字起こし)は含まれません。

4-6. 話者の情報について

  • 送信内容に話者名は含まれません。speaker_uuid は、同じノートの中で同じ話者を見分けるための識別子です(名前ではありません)。

  • 話者の割り当ては文字起こしの完了後に行われます。そのため文字起こし完了時の通知では、speaker_uuid が含まれない、または後から変わることがあります。

  • 話者名を連携したい場合は、Rimo の担当者へご相談ください。

4-7. サイズの上限

「コンテンツを含む」の文字起こしは、約 3MB を上限に送信します。長時間の会議で上限を超えた場合は、先頭から上限までの発言を送り、note.truncated を true にします。全文は Rimo の画面でご確認ください。

5. 送信例

時刻・ID・本文は例です。形は実際の送信処理が出力するものと同じです。

文字起こし完了時 / IDのみ

{   "event_type": "transcription.completed",   "id": "noteXYZ123",   "state": "ASR_DONE",   "timestamp": "2026-11-10T07:18:05.277260167Z",   "user": { "id": "user123" },   "held_at": "2026-11-10T06:00:00Z",   "team_id": "team123",   "organization_id": "org123" }

文字起こし完了時 / コンテンツを含む

{   "event_type": "transcription.completed",   "id": "noteXYZ123",   "state": "ASR_DONE",   "timestamp": "2026-11-10T07:18:05.277352959Z",   "user": {     "id": "user123",     "email": "[email protected]",     "display_name": "山田 太郎"   },   "held_at": "2026-11-10T06:00:00Z",   "team_id": "team123",   "organization_id": "org123",   "note": {     "title": "2026年11月 週次ミーティング",     "transcripts": [       {         "text": "皆さんおはようございます。今日は来週のリリースについて話し合います。",         "start_time": 0,         "end_time": 5000,         "speaker_uuid": "speaker-1"       },       {         "text": "よろしくお願いします。",         "start_time": 5000,         "end_time": 6500,         "speaker_uuid": "speaker-2"       }     ]   } }

要約完了時 / IDのみ

{   "event_type": "summary.completed",   "id": "noteXYZ123",   "state": "SUMMARY_DONE",   "summary_id": "docABC456",   "timestamp": "2026-11-10T07:20:31.104331Z",   "user": { "id": "user123" },   "held_at": "2026-11-10T06:00:00Z",   "team_id": "team123",   "organization_id": "org123" }

要約完了時 / コンテンツを含む

{   "event_type": "summary.completed",   "id": "noteXYZ123",   "state": "SUMMARY_DONE",   "summary_id": "docABC456",   "timestamp": "2026-11-10T07:20:31.104422885Z",   "user": {     "id": "user123",     "email": "[email protected]",     "display_name": "山田 太郎"   },   "held_at": "2026-11-10T06:00:00Z",   "team_id": "team123",   "organization_id": "org123",   "note": {     "title": "2026年11月 週次ミーティング",     "transcripts": [       { "text": "皆さんおはようございます。…", "start_time": 0, "end_time": 5000, "speaker_uuid": "speaker-1" }     ]   },   "summary": {     "content": "## 概要\n\n…\n\n## アクションアイテム\n\n- [ ] 最終テストの実施(担当:佐藤)",     "template_mode": "default"   } }

アクション完了時 / IDのみ

{   "event_type": "action.completed",   "id": "noteXYZ123",   "state": "ACTION_DONE",   "timestamp": "2026-11-10T08:02:11.5Z",   "user": { "id": "user123" },   "held_at": "2026-11-10T06:00:00Z",   "team_id": "team123",   "organization_id": "org123",   "action": {     "work_item_id": "wi789",     "plan_status": "done",     "steps": [],     "artifacts": []   } }

アクション完了時 / コンテンツを含む

{   "event_type": "action.completed",   "id": "noteXYZ123",   "state": "ACTION_DONE",   "timestamp": "2026-11-10T08:02:11.5Z",   "user": {     "id": "user123",     "email": "[email protected]",     "display_name": "山田 太郎"   },   "held_at": "2026-11-10T06:00:00Z",   "team_id": "team123",   "organization_id": "org123",   "action": {     "work_item_id": "wi789",     "title": "議事録をもとにフォローアップメールを作成",     "content": "…",     "purpose": "…",     "plan_status": "done",     "steps": [       { "title": "議事録の要点を整理", "state": "done", "order": 0 }     ],     "artifacts": []   } }

6. 受信側の要件と配信の仕組み

通知は 1 回だけ送り、失敗しても再送しません。受信側は次のように実装してください。

  • 2xx を返してください。 2xx 以外のステータスや接続エラーは配信失敗として扱います。

  • 30 秒以内に応答してください。 30 秒を超えると配信失敗になります。重い処理は受信後に非同期で行ってください。

  • 再送はしません(ベストエフォート配信)。 取りこぼしが許されない用途では、Rimo の画面での確認などと組み合わせてください。

  • 到着順は保証しません。 必要な場合は timestamp を参照してください。

  • 未知の項目は無視してください。 項目は予告なく追加することがあります(9 章)。

  • 送信できない URL: localhost、プライベート IP アドレスに解決されるホスト、.local / .internal などの内部向けドメインには送信しません。

  • リダイレクト: 3 回まで追いますが、リダイレクトの種類によっては POST の本文が引き継がれません。最終的な URL を登録してください。

7. 署名の検証

各通知には、Rimo から送られたことと内容が改ざんされていないことを確かめるための署名が付きます。

  • X-Rimo-Timestamp: 署名を作った時刻(Unix 秒の 10 進数文字列)

  • X-Rimo-Signature: 次の値の 16 進数(小文字)表記

HMAC-SHA256(鍵 = Webhook ごとの署名鍵, メッセージ = リクエストボディの生のバイト列 + X-Rimo-Timestamp の文字列)

署名鍵は Webhook ごとに異なります。現在は画面に表示されないため、署名を検証する場合は Rimo の担当者からお伝えします。

検証の例(Python):

import hashlib, hmac, time  def verify(raw_body: bytes, timestamp: str, signature: str, secret: str) -> bool:     if abs(time.time() - int(timestamp)) > 300:  # 古いリクエストは拒否(再送攻撃対策)         return False     expected = hmac.new(secret.encode(), raw_body + timestamp.encode(), hashlib.sha256).hexdigest()     return hmac.compare_digest(expected, signature)
  • ボディは JSON として読み直さず、受信した生のバイト列のまま計算してください。

  • 画面の「テスト送信」には署名ヘッダーは付きません。

8. テスト送信

Webhook の作成・編集画面の「テスト送信」で、入力中の URL に本番と同じ形式のサンプル通知を 1 件送れます。

  • 選んだ「通知タイミング」「データフォーマット」に応じて、5 章の例と同じ形で届きます。

  • サンプルの ID は test_ で始まります(例: "id": "test_note_123")。

  • テスト送信には X-Rimo-Webhook-Test: true と User-Agent: RimoVoice-Webhook-Test が付きます。

  • 署名ヘッダーは付きません。

  • 応答の待ち時間は 10 秒です。

9. 互換性と変更のご連絡

受信側が壊れる変更は事前にご連絡し、壊れない変更は予告なく行います。

変更の種類

対応

項目の追加、通知の種類の追加

予告なく行うことがあります。受信側は未知の項目を無視する実装にしてください

項目の削除・名前の変更、型や意味の変更、event_type / state の値の変更

事前にご連絡します

ご連絡は、Rimoのリリースメールまたは担当営業からご連絡差し上げます。

10. トラブルシューティング

通知が届かない場合は、上から順に確認してください。

  1. Webhook の設定(設定 > Webhook): 有効になっているか、URL が正しいか、通知タイミングが受け取りたい種類になっているか

  2. チームフォルダへの紐付け: 対象ノートが入っているチームフォルダの「Webhook通知」タブで、その Webhook にチェックが入っているか。ノートがそのチームフォルダに入っているか

  3. 受信側サーバー: リクエストが届いているか(ファイアウォール等で遮断されていないか)、30 秒以内に 2xx を返しているか

  4. 送信先 URL: localhost、プライベート IP、社内向けドメインを指定していないか

11. FAQ

Q: 通知はいつ届きますか? A: 文字起こし・要約・アクションの完了直後に送信します。通常は会議終了から数分以内です(会議の長さや処理状況によって前後します)。

Q: 同じノートについて複数回届きますか? A: はい。種類ごとの条件は 3 章をご覧ください。

Q: 配信は保証されますか? A: いいえ。ベストエフォート配信で、失敗しても再送しません。

Q: 話者名は届きますか? A: いいえ。発言ごとの speaker_uuid(話者の識別子)のみです(4-6)。

Q: 1 つのチームフォルダに複数の Webhook を紐付けられますか? A: はい。

Q: Webhook の URL は変更できますか? A: はい。設定 > Webhook の「…」メニューから編集できます。

Q: Webhook を削除するとどうなりますか? A: 以降は送信されません。チームフォルダ側の紐付けを外す操作は不要です。

こちらの回答で解決しましたか?