get-voice-mailはn8n Webhookへの中継専用アプリ(SCP取得・プリザンター書込はn8n側で実施)。 app-portalはBootstrap 5導入で見た目を刷新(カード/モーダル/トースト化)。 dokploy-webapp SKILLはGitea統合(NodeSrv→ken_nogi)後の設定変更を反映。
60 lines
2.7 KiB
Markdown
60 lines
2.7 KiB
Markdown
# get-voice-mail
|
||
## 仕様
|
||
|
||
|
||
- n8nを利用
|
||
- SCPでサーバーから録音データ取得
|
||
- プリザンターに音声保存
|
||
|
||
## サーバー情報
|
||
pbx-server-secret.md 参照
|
||
|
||
## voiceメールのパス
|
||
/var/spool/asterisk/monitor
|
||
|
||
この下に、年フォルダ、月フォルダ、日フォルダが階層化されている
|
||
|
||
取得ファイルルール ※あとで変わるかもだがいまは固定ルール
|
||
- ファイル名の先頭がin-0420002706-で始まるもの
|
||
{方向}-{番号A}-{番号B}-{日付}-{時刻}-{uniqueid}.wav
|
||
|
||
- 方向: in=着信 / out=発信 / generic=内線間 or 方向判定不能時
|
||
- 番号A: 着信の場合は着信先(DID/内線番号)、発信の場合は発信元内線
|
||
- 番号B: 相手側番号(外部番号 or 内線)
|
||
- 日付: YYYYMMDD
|
||
- 時刻: HHMMSS
|
||
- uniqueid: Asteriskチャンネル固有ID (epoch秒.マイクロ秒)。通話開始時刻ベース、重複なし識別子
|
||
|
||
例:
|
||
- in-0420002706-05057998188-20260918-165846-1789718326.114385.wav
|
||
→ 着信、着信先0420002706、相手05057998188、2026-09-18 16:58:46
|
||
- generic-0425400505-05017446045-20260918-170343-1789718623.114390.wav
|
||
→ 内線間 or 方向不明、番号0425400505⇔05017446045
|
||
|
||
ファイル名からいつの音声データなのか日付情報も算出
|
||
ファイル名の日付はJST
|
||
|
||
|
||
## プリザンター
|
||
取得した音声ファイルと内容をプリザンターのテーブルへ書き出し
|
||
https://nextoffice.next-hd.co.jp/pleasanter/items/515888/index
|
||
|
||
- ClassA:番号A
|
||
- ClassB:番号B
|
||
- ClassC:WAVファイル名 ※すでに同じファイルが登録済みの場合はスキップ
|
||
- AttachmentA:WAV本体保存
|
||
|
||
|
||
## n8nワークフロー起動方式
|
||
入口=Webhookノード固定。cron等の自前スケジューラは使わない。
|
||
起動元=app-portal(`NodeSrv/apps/app-portal`)のキッカー(batch型トリガー)。
|
||
|
||
実装=`NodeSrv/apps/get-voice-mail`直下のNode.jsアプリ(他アプリと同じ1フォルダ1Dokploy Compose)。
|
||
役割=中継のみ。`/trigger`受信→n8n Webhook URLへPOST→202即返却。SCP取得・WAV判定・プリザンター書込は全部n8n側workflow内で実施。
|
||
|
||
- POST `/trigger`(ヘッダ`X-Portal-Secret`必須、`PORTAL_SECRET`と一致時のみ許可)
|
||
- 認証通過後、環境変数`N8N_WEBHOOK_URL`(n8n Webhookノードの入口URL)へPOST、結果を待たず202返却
|
||
- `.env.example`にPORTAL_APP_TYPE=batch等のポータル登録変数一式を用意済み。Dokploy Environment画面で`PORTAL_SECRET`・`N8N_WEBHOOK_URL`を設定してから使う
|
||
- ポータル管理・トリガー実装パターンの詳細は`NodeSrv/apps/_template/README.md`「アプリポータルへの登録」章、実装例は`NodeSrv/apps/portal-sample-batch`参照
|
||
|