水道局が住民からの漏水・濁り水の通報を n8n で受け、場所・症状・緊急度の材料を整理して、症状の区分ごとに当番へ振り分ける
住民からの漏水・濁り水の通報を n8n で受け、症状の区分に分けて、場所の手がかりと緊急度の材料を取り出します。決めた条件で緊急度を付け、当番表に沿って担当の当番へ Teams で知らせます。
- 生成AI
- Azure OpenAI Service/ChatGPT/Claude
- 連携・自動化
- Make/n8n/Power Automate
- 対象業界
- その他/自治体
- 対象部門
- カスタマーサポート/総務
- 対象業務
- 分類・仕分け/問い合わせ対応
- 主な課題
- 判断に時間がかかる/問い合わせが多い/期限・対応漏れが起きる
- AIで行う処理
- 分類
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- Web のフォームの回答のメールを開く。電話の通報は受付票に書き取る
- 住所や目印から場所を確かめ、地図で給水の区域と配水管の位置を見る
- 症状から、道路の漏水か、敷地内か、濁り水か、断水かを決める
- 同じ場所の通報がすでに来ていないかを、受付の一覧で探す
- 当番表を見て、その日の担当の係の当番に電話か Teams で伝える
- 受付の一覧に転記する
- 当番が現地を確かめ、対応の結果を受付に返す
- 自動住民の Web フォームの送信、または受付の職員の入力フォームの送信で、n8n のワークフローが動く
- 自動AI が通報から、場所の手がかり・水の出方・濁りの色・同じ症状の範囲・発生の時刻を取り出す
- 自動AI が通報を、道路の漏水・敷地内の漏水・濁り水と異臭・断水と出の悪さ・その他の区分に分ける
- 自動取り出した材料から、決めた条件で緊急度を付ける
- 自動直近の通報の台帳から、同じ町名・同じ区分の通報を引き、重なりの候補に印を付ける
- 自動当番表から、区分に合う係のその時刻の当番を引き、Teams で知らせる。緊急のものは応答を待つ
- 自動通報の台帳に1行足す
- 人当番が知らせを読み、出動するか、受付から住民に聞き返すかを決める
- 人受付の職員が「その他」の区分と重なりの候補を見て、振り分けを直す
各工程の詳しい説明を読む
- Web のフォームの回答のメールを開く。電話の通報は受付票に書き取る
- 住所や目印から場所を確かめ、地図で給水の区域と配水管の位置を見る
- 症状から、道路の漏水か、敷地内か、濁り水か、断水かを決める
- 同じ場所の通報がすでに来ていないかを、受付の一覧で探す
- 当番表を見て、その日の担当の係の当番に電話か Teams で伝える
- 受付の一覧に転記する
- 当番が現地を確かめ、対応の結果を受付に返す
(a)文面から場所と症状を読み解くのに時間がかかる。 「〇〇公園の向かいの角」「バス停の少し先」。住所が書かれない通報が多く、どの道路のどちら側かを、地図を見ながら探します。
(b)区分の決め方が職員によって違う。 「メーターのあたりから水が出ている」は、メーターより道路の側なら水道局の管理、家の側なら住民の側の修理になることが多い場所です。同じ文面でも、職員によって工務課に回したり、修理業者の案内にしたりします。
(c)濁り水の通報が漏水の通報に埋もれる。 雨の日や工事の多い時期には漏水の通報が続き、濁り水の1件が受付の一覧の下のほうに入ったまま、浄水課への連絡が遅れることがあります。
(d)重なった通報で当番が何度も呼ばれる。 同じ漏水の2件目、3件目を別の通報として伝えると、当番は同じ現場へ向かう準備を何度もします。
- 【自動】 住民の Web フォームの送信、または受付の職員の入力フォームの送信で、n8n のワークフローが動く
- 【自動】 AI が通報から、場所の手がかり・水の出方・濁りの色・同じ症状の範囲・発生の時刻を取り出す
- 【自動】 AI が通報を、道路の漏水・敷地内の漏水・濁り水と異臭・断水と出の悪さ・その他の区分に分ける
- 【自動】 取り出した材料から、決めた条件で緊急度を付ける
- 【自動】 直近の通報の台帳から、同じ町名・同じ区分の通報を引き、重なりの候補に印を付ける
- 【自動】 当番表から、区分に合う係のその時刻の当番を引き、Teams で知らせる。緊急のものは応答を待つ
- 【自動】 通報の台帳に1行足す
- 【人】 当番が知らせを読み、出動するか、受付から住民に聞き返すかを決める
- 【人】 受付の職員が「その他」の区分と重なりの候補を見て、振り分けを直す
8番目と9番目が、この設計の分かれ目です。 AI の区分は、住民の言葉から出した見立てにすぎません。出動するかどうか、給水を止めるかどうかは、当番が現地の情報と合わせて決めます。
4番目の緊急度を、AI ではなくワークフローの条件で付けるのも意図してのことです。 緊急度を AI に付けさせると、同じ文面でも日によって「高」と「中」が入れ替わることがあります。条件にしておけば、どの通報がなぜ緊急になったかを後から説明できます。
02今回想定するシステム構成
住民の Web フォーム(n8n Form Trigger) 受付の職員の入力フォーム(n8n Form Trigger、n8n User Auth) ▼【トリガー】フォームの送信 n8n(自前のサーバーで動かす) ▼ Information Extractor + Azure OpenAI Chat Model │ 場所の手がかり・水の出方・濁りの色・範囲・発生の時刻 ▼ Text Classifier + Azure OpenAI Chat Model │ 道路の漏水/敷地内の漏水/濁り水と異臭/断水と出の悪さ/Other ▼ 緊急度の条件(Switch) ▼ Data table:直近の通報(同じ町名・同じ区分)/当番表 ▼ Microsoft Teams ├── 緊急 ──▶ Send and Wait for Response(応答がなければ係長へ) └── 通常 ──▶ チャットのメッセージ ▼ Data table:通報の台帳に1行 ▼ 【当番が出動を判断/受付が Other と重なりを確かめる】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n(セルフホスト) | Power Automate、Make |
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude、ChatGPT(OpenAI) |
| 台帳 | n8n の Data tables(通報の台帳・当番表) | 自前のデータベース |
| 通知 | Microsoft Teams | メール |
新しく足すのは、n8n のワークフローと、Data tables の2つの表です。 当番表は、表計算のファイルから CSV で取り込み、係・日付・時間帯・当番の職員・Teams のチャットの宛先の列を持たせます。
入口は n8n の Form Trigger です。 n8n の説明では、テキスト・テキストエリア・ドロップダウン・日付・ファイル・隠し項目などの欄を置けます。認証は、なし・Basic 認証・n8n User Auth(この n8n にログインしている人だけが見て送れる)から選べます。住民のフォームは認証なし、受付の職員のフォームは n8n User Auth にし、職員の入力にはログインした人の情報が付きます。
AI の処理には、Information Extractor と Text Classifier の2つのノードを使います。 どちらも、チャットのモデルとして Azure OpenAI Chat Model をつなぎます。n8n の説明では、このノードは Azure のデプロイを選び、応答の形をテキストか JSON にでき、認証は API キーか Azure Entra ID です。住民の通報を扱うので、利用するリージョンとデータの扱いを、自治体の情報セキュリティの担当と決めてから設定します。
台帳と当番表は n8n の Data tables に置きます。 n8n の説明では、ワークフローの中で Data Table のノードから読み書きでき、インスタンス全体で既定200MiBまでで、セルフホストでは環境変数で変えられます。
03どうやって実装するのか
処理の起点を決める
2つのフォームの送信を起点にします。 住民が使う Web のフォームと、受付の職員が電話や窓口の通報を入れるフォームです。どちらも n8n の Form Trigger で作り、同じ後段につなぎます。 経路を分けると、片方だけ区分の付け方が違う期間ができます。
住民のフォームは、送信してすぐに受付の完了を返します。 Form Trigger の応答のタイミングは「フォームが送信されたとき」と「ワークフローが終わったとき」から選べます。後者を選ぶと、AI の処理の間、住民は画面の前で待つことになり、途中で失敗すると住民に送信の失敗が表示されます。 完了の画面には、「水が噴き出している、道路が陥没しているなど急ぎの場合は、お電話ください」と決まった文を出します。
本番は Production URL で受けます。 n8n の説明では、作っている間の Test URL と、保存して公開した後の Production URL は別で、本番の送信の内容はエディターではなく実行の履歴で見ます。ホームページに貼る URL を Test URL のまま公開しないことを、公開の手順に入れます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 住民の通報 | 症状の選択(漏水/濁り水/出が悪い/その他)・場所(住所・目印)・様子の自由記述・写真・連絡先 | 住民のフォーム |
| 職員の書き取り | 上と同じ項目と、電話の受付の時刻・通報者の様子 | 受付の職員のフォーム |
| 直近の通報 | 過去24時間の通報の町名・区分・受付の番号 | Data tables の通報の台帳 |
| 当番表 | 係・日付・時間帯・当番の職員・Teams の宛先 | Data tables |
| 区分と緊急度の条件 | 区分の名前と説明、緊急とする条件 | ワークフローの設定 |
住民のフォームの「症状の選択」は、AI の区分と別に残します。 住民が「漏水」を選んでいても、自由記述に「水が白く濁っている」とあれば、区分は濁り水です。選択と区分が食い違った通報は、受付の確認に回します。
写真は AI に渡しません。 写真は当番の知らせに付け、当番が見ます。写真に写った家や人を AI に読ませる理由がありません。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| フォームの全項目 | Form Trigger の出力 | AI への入力と台帳 |
| 直近の通報 | Data Table ノード(町名と区分、過去24時間) | 重なりの候補 |
| 当番 | Data Table ノード(係・日付・時間帯) | 知らせの宛先 |
| 知らせの応答 | Teams の Send and Wait for Response | 出動の受け取りの記録 |
重なりの候補は、町名と区分で引きます。 AI に取り出させた町名と、同じ区分、過去24時間で台帳を引き、当たった通報の受付の番号を並べます。同じ漏水かどうかは決めません。 当番が知らせの中で「〇〇町で同じ区分の通報が他に2件」と読めれば足ります。
町名の一覧も Data tables に置きます。 住民は「〇〇二丁目」「〇〇町2丁目」「〇〇2」と書くため、一覧には町名ごとに書き方の揺れを列で持たせ、AI にはその一覧を渡して当たるものだけを選ばせます。一覧に無い書き方が出たら、受付が列に足していきます。
当番は、区分から係を決め、日付と時間帯で引きます。 道路の漏水と断水は工務課、濁り水と異臭は浄水課、敷地内の漏水はお客さまセンターです。当番が引けなかったときは、係長の宛先に送ります。
AIへ渡す前に整形する
- 自由記述の長さを確かめる … 空のときは、症状の選択だけで区分を決め、印を付けます
- 連絡先を AI に渡さない … 氏名と電話番号は台帳にだけ入れ、AI のノードには場所と様子だけを渡します
- 住所の表記をそろえる … 全角と半角、丁目の書き方を、町名の一覧で引けるようにそろえます
- 受付の時刻を付ける … 職員のフォームでは、電話を受けた時刻を入力させ、送信の時刻と分けて持ちます
- 同じ人の続けての送信を見る … 同じ連絡先から10分以内の送信は、2件目に印を付けます
2番目は、この構成で外せない手順です。 区分と材料を出すのに、氏名も電話番号も要りません。AI に渡す範囲を、判断に要るものだけに絞ります。
AIに処理させる
Information Extractor には材料を取り出させ、Text Classifier には区分を付けさせます。
| 取り出す材料 | 取り出し方 | 書かれていないときの扱い |
|---|---|---|
| 町名・番地・目印 | 書かれたまま。町名は町名の一覧に当たるものだけ | null |
| 道路か敷地内か | 「道路」「歩道」「家の前」「庭」「メーターの箱」など、書かれた言葉 | null |
| 水の出方 | 噴き出している・流れている・にじんでいる・音がする | null |
| 濁りの色・臭い | 茶色・白・黒・異臭など、書かれた言葉 | null |
| 範囲 | 自宅だけ・近所も・町内全体など、書かれた言葉 | null |
| 発生の時刻 | 書かれたまま | null |
| 道路の陥没・冠水 | 書かれたときだけ true | false |
| 区分 | 説明(Text Classifier に渡す) |
|---|---|
| 道路の漏水 | 道路・歩道・公園など、敷地の外で水が出ている |
| 敷地内の漏水 | 家の敷地の中、メーターより家の側、宅内の配管で水が出ている |
| 濁り水と異臭 | 蛇口から出る水の色・臭い・異物がおかしい |
| 断水と出の悪さ | 水が出ない、勢いが弱い |
| Other | 上のどれにも当たらない、または判断できない |
いちばん大事なのは、Text Classifier の「当てはまらないとき」の設定です。 n8n の説明では、どの区分にも当てはまらないときの扱いの既定は「その項目を捨てる(Discard Item)」です。既定のままだと、判断のつかない通報が誰にも届かずに消えます。 必ず「Other の出口に出す」に変えます。
敷地内と道路の境目は、AI に決めさせません。 水道法は、配水管から分岐して設けられた給水管とこれに直結する給水用具を「給水装置」と定めていますが、どこまでを水道局が直し、どこからを住民の側で直すかは、それぞれの水道事業の取り決めによります。 AI には「家の前」「メーターの箱」と書かれた言葉を取り出させ、区分に迷えば Other に回します。
区分は1つだけにします。 複数の区分を許す設定もありますが、1件が2人の当番に届くと、どちらも相手が出ると思って動かないことがあります。漏水と濁り水が両方書かれた通報は、濁り水の区分に入れる説明にしておきます。
| させないこと | 理由 |
|---|---|
| 緊急度を付けること | ワークフローの条件で付け、理由を説明できるようにする |
| 水が安全かどうかの判断 | 水質の判断は浄水課の当番が行う |
| 水道局の管理か住民の管理かの断定 | 境目は現地で確かめる |
| 同じ漏水かどうかの断定 | 候補を並べ、当番が判断する |
| 住民への返事の文 | 受付の完了は決まった文で返す |
| 町名を近い町名に寄せる | 別の町へ当番が向かう |
2行目がいちばん起きやすい失敗です。 「少し茶色いが、しばらく流せば大丈夫と思われます」のような一文を、AI は丁寧さとして足します。その一文が当番への知らせに入ると、濁り水の通報が軽く読まれます。
指示内容を固定する
(Information Extractor の System Prompt Template)
あなたは市の水道局の受付で、住民からの通報を整理する立場です。
通報の文面だけを見て、決めた材料を取り出してください。推測で埋めないでください。
【厳守事項】
- 書かれた言葉をそのまま入れてください。言い換えたり、程度を強めたり
弱めたりしないでください。書かれていなければ null です。
- 町名は、渡した町名の一覧に同じものがあるときだけ入れてください。
似た町名に寄せないでください。
- 水が安全か、飲んでよいか、修理の費用を誰が負担するかについて、
何も書かないでください。
- 「道路が陥没している」「道路が水につかっている」と書かれているときだけ
road_damage を true にしてください。
(Text Classifier の System Prompt Template)
住民からの水道の通報を、次の区分のどれか1つに分けてください。
{categories}
- 蛇口から出る水の色・臭い・異物について書かれていれば、漏水が一緒に
書かれていても「濁り水と異臭」にしてください。
- 道路か敷地内か書かれていない漏水は、どちらかに決めず Other にしてください。
- 迷ったときは Other にしてください。
「程度を強めたり弱めたりしない」を明記するのは、緊急度の条件がその言葉で決まるからです。 「にじんでいる」を「流れている」に書き換えると、ワークフローの条件で緊急度が上がります。逆に弱めると、噴き出している漏水が通常の知らせになります。
「道路か敷地内か書かれていない漏水は Other」にするのも同じ理由です。 どちらかに寄せると、工務課とお客さまセンターのどちらかが、自分の係でない通報を受け取ります。 Other は受付の職員が住民に聞き返して決めます。
出力形式を固定する
Information Extractor は「JSON Schema で定める」を選び、次の形を決めます。
{
"town": "〇〇町二丁目",
"address_text": "〇〇公園の向かいの角",
"place_type_text": "歩道",
"flow_text": "噴き出している",
"color_odor_text": null,
"extent_text": null,
"occurred_text": "朝7時ごろから",
"road_damage": false
}
JSON の例から作る方式を使わないのは、全部の項目が必須になるからです。 n8n の説明では、JSON の例から形を作ると、すべての項目を必須として扱います。必須にすると、書かれていない項目を AI が埋めにいきます。 JSON Schema で書き、null を許します。
Text Classifier の出口は区分ごとに分かれ、そこに上の材料が付いて次へ流れます。緊急度は Switch のノードで、次の条件から付けます。
| 緊急度 | 条件 |
|---|---|
| 緊急 | 区分が「濁り水と異臭」で、extent_text に「近所」「町内」などがある/color_odor_text に異臭がある/road_damage が true/区分が「道路の漏水」で、flow_text に「噴き出し」がある |
| 通常 | 区分が決まり、上に当たらない |
| 受付の確認 | 区分が Other/住民の選択と区分が食い違う/町名が null |
1つ目の理由は、緊急の条件が書かれた言葉だけで決まることです。 どの言葉で緊急になったかが、知らせの中で読めます。
2つ目は、町名の null を受付の確認に回せることです。 場所の分からない通報を当番に送っても、当番は動けません。受付が住民に聞き返してから送ります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 住民・職員のフォーム | Form Trigger | 通報の受け取り |
| Azure OpenAI | Azure OpenAI Chat Model のノード | 材料の取り出しと区分 |
| 通報の台帳・当番表 | Data Table のノード | 直近の通報と当番を引く、1行足す |
| Microsoft Teams | Chat Message の Create/Send and Wait for Response | 当番への知らせ |
緊急の知らせは、Teams の Send and Wait for Response で送ります。 n8n の説明では、チャットのメッセージで承認のボタンを出し、応答があるまでワークフローを止められ、待つ時間に上限を付けられます。 ボタンは「出動する」「係長に回す」とし、15分応答がなければ係長の宛先へ同じ知らせを送ります。
通常の知らせは、チャットのメッセージで送ります。 区分・町名・場所の原文・水の出方・重なりの候補・写真の有無を並べ、台帳の受付の番号を先頭に置きます。
住民への連絡は、この構成からは送りません。 受付の完了はフォームの画面の決まった文で、その後の連絡は当番か受付の職員が電話で行います。
人が確認する
当番と受付の職員が、それぞれ次を見ます。
- 当番:緊急の知らせに応答する … 出動するか、係長に回すかを選びます。給水を止めるかどうかは、現地を確かめて当番と係長が決めます
- 当番:通常の知らせを読む … 重なりの候補を見て、同じ現場ならまとめて対応します
- 受付:「受付の確認」を見る … Other、選択と区分の食い違い、町名の無い通報です。住民に電話で聞き返し、区分を決めて当番へ送り直します
- 受付:区分を直したら台帳に残す … どの区分からどの区分へ直したかを書きます
- 当番:対応の結果を台帳に返す … 修理した、敷地内で住民の側の修理を案内した、濁りは解消した、などです
3番目を当番に任せないのは、当番が現場に出ているからです。 聞き返しは受付の仕事にします。夜間は、当番の受付の担当が同じ一覧を見ます。
災害で通報が急に増えたときも、確認の順は変えません。 緊急の知らせに応答し、受付の確認を片づけ、通常の知らせは町名でまとめて読む。件数が多いときほど、濁り水の区分を最初に見ることを、当番の手順書に書いておきます。
目標は、360件をならして1件4分です。 区分の決まった通常の通報は、受付が台帳を流し見て1〜2分、受付の確認に回ったものは聞き返しで10分前後かかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| どの区分にも当てはまらない | Other の出口に出す設定にする(既定は捨てる) |
| AI のノードが失敗する・時間切れ | 区分を「受付の確認」にして台帳に入れ、受付に知らせる |
| 当番表に当番が無い | 係長の宛先に送る |
| 緊急の知らせに15分応答が無い | 係長の宛先へ同じ知らせを送る |
| Data tables の容量が上限に近い | n8n は8割で警告し、上限で書き込みが失敗する。古い台帳を CSV で書き出して消す |
| Test URL のまま公開してしまう | 本番は Production URL。公開の手順で確かめる |
| 同じ人の続けての送信 | 2件目に印を付け、知らせを送らない |
| 写真が大きすぎる | 写真の欄だけを外して受け付け、受付が電話で写真を頼む |
| Teams への接続の認証が切れる | 知らせの送信の失敗を受付に知らせる経路をメールで別に持つ |
| 大雨・地震で通報が急に増える | 区分と知らせはそのまま動かし、係長が当番を増やす判断をする。重なりの候補が増えるので、受付は町名ごとにまとめて当番に伝える |
1行目と5行目は、どちらも「黙って消える」型です。 捨てられた通報も、書き込めなかった通報も、エラーとして目に見えないまま、住民からの2度目の電話で初めて分かります。 毎朝、前日のフォームの送信の数と台帳の行数を比べます。
記録を残す
- フォームの全項目(写真を含む)と受付の時刻
- AI が取り出した材料と区分、使ったモデルのデプロイの名前
- 緊急度と、その緊急度になった条件
- 知らせた当番、知らせの時刻、応答の時刻と内容
- 受付が区分を直した記録
- 当番の対応の結果
3つ目で「その緊急度になった条件」を残すのは、後から説明できるようにするためです。 住民から「なぜ対応が遅れたのか」と問われたとき、どの言葉でどの区分と緊急度になったかを示せます。
5つ目は、区分の説明を直す材料です。 受付が同じ型の通報を何度も直しているなら、Text Classifier の区分の説明に一文足します。説明を直したら日付を残し、直す前と後で受付の直しの件数がどう変わったかを月ごとに比べます。 台帳の保存の期間は、自治体の文書の保存の決まりに合わせます。
04実装レベルの3段階
本記事の想定は半自動化です。 1件10分が4分になる見込みは、この段階の数字です。 本格構成で足すのは、区域でのまとめです。 同じ配水の区域で濁り水の通報が1時間に3件続いたら、1件ずつではなく区域としてまとめて知らせます。給水を止めるかどうかの判断は、この段階でも人です。 段階を飛ばさないでください。 半自動化の台帳を1か月見ると、どの区分の説明で受付が直しているかが分かります。
05工数削減シミュレーション
導入後 360件 × 4分 ÷ 60 = 24 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 給水人口が数万から数十万人の市町村の水道局・水道事業者で、漏水・濁り水・水の出が悪いといった通報を、Web のフォームと電話で月に数百件受けている場合。受付の職員が通報を読んで場所を確かめ、症状から担当の係を決め、当番に電話やチャットで伝えるまでを手で行い、夜間や休日は当番の職員か委託先がその役を担っている場合。n8n を自前のサーバーで動かせ、Microsoft Teams を職員が使っている場合。
- 通報が月に数件で、受付の職員が直接すべて対応できる場合。通報の受付から出動の指令までを、地図と連動した専用の通報受付のシステムで行えている場合。住民の通報を外部のクラウドの生成AIに送ることが、自治体の情報セキュリティの方針で認められていない場合。なお、出動するかどうか、給水を止めるかどうか、水質の安全の判断、宅内の修理の費用の負担の判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の通報から40件を選ぶ(濁り水・敷地内と道路の境目の漏水・場所のあいまいな通報を必ず入れる)
- その40件について、当時どの係に回したか、出動したかを受付の一覧から書き出す
- 通報の文面から氏名と電話番号を消し、手元のAIサービスの画面に1件ずつ貼る
- 区分の一覧と説明を添え、「区分を1つだけ選んでください。迷ったら Other にしてください。水の安全や修理の費用について書かないでください」と指示する
- 出てきた区分と、当時回した係を突き合わせる
40件は必ずやってください。 ワークフローを組む前に、「住民の言葉から区分が付くのか」と「迷ったときに Other を選ぶのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時回した係とほぼ合い、境目の通報が Other になった | ワークフローの組み立てに進む |
| 境目の漏水をどちらかに寄せた | 区分の説明の書き方で直る。構成は有効 |
| 濁り水を漏水に入れた | 説明を直すまで先に進まない。この取り違えだけは許さない |
3行目が1件でも出たら、 濁り水の説明を足して同じ40件でやり直します。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 判断のつかない通報が消える | Text Classifier の既定は捨てる。Other の出口に変える |
| 書かれていない項目が埋まる | JSON の例ではなく JSON Schema で形を定め、null を許す |
| 濁り水が漏水に入る | 区分の説明に「濁り水を優先」を書き、40件で確かめる |
| 程度の言葉が言い換えられる | 書かれた言葉のまま入れさせる |
| 1件が2人の当番に届く | 区分は1つだけにする |
| Test URL を公開してしまう | 本番は Production URL |
| 住民のフォームで待たされる | 応答は「フォームが送信されたとき」にする |
| Data tables が上限で書けない | 8割の警告で古い台帳を書き出す |
| 当番表が古い | 当番表を直す人と時刻を決める |
| 緊急の知らせに誰も応答しない | 待つ時間に上限を付け、係長へ送る |
| 町名の書き方が一覧に無い | 受付が揺れの列に足す。最初の1か月は毎日見る |
| 区分の境目で係どうしが押し付け合う | 境目は Other にして受付が聞き返すと、係長どうしで先に決めておく |
上の2行が、この構成の失敗のほとんどです。 どちらも、既定の設定のままで起きる失敗で、エラーにならずに通ります。設定の段階で一つずつ確かめてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 通報者の氏名・電話番号・住所、通報の内容、写真です。通報者には子どもや高齢の住民も含まれます。
- AI に渡すのは場所と様子だけにする … 氏名と電話番号は台帳に入れるだけで、AI のノードには渡しません
- 水の安全を AI に判断させない … 水道法第二十三条は、健康を害するおそれを知ったときに直ちに給水を停止し、周知する措置を水道事業者に求めています。この判断は浄水課の当番と責任者のものです。 AI の文面に安全かどうかを書かせません
- 住民への返事を AI に書かせない … 受付の完了は決まった文で返し、その後は職員が電話で伝えます
- 生成AIの利用のしかたを先に決める … Azure OpenAI のデプロイのリージョン、入力の保存の扱い、利用できる職員の範囲を、自治体の情報セキュリティの方針に沿って決めてから使います
- 台帳の閲覧を絞る … n8n の説明では、Data tables は既定で同じプロジェクトのメンバー全員から見えます。通報の台帳を置くプロジェクトのメンバーを、受付と当番に絞ります
- 写真を共有の場所に置かない … 写真は当番への知らせと台帳だけに付けます
誤りが起きた場合のリスクは、濁り水の通報を通常の扱いにすることと、判断のつかない通報が誰にも届かないことの2つです。 前者は区分の説明と緊急の条件で、後者は Other の出口と件数の突き合わせで止めます。どちらも、迷ったら人に回す側に倒しておくことで守ります。
10まず何から始めるか
1週目:区分と緊急の条件を決める
工務課・浄水課・お客さまセンターの係長と一緒に、区分の名前と説明、緊急とする言葉を決めます。濁り水と異臭を最優先にすることを、ここで合意します。
2週目:40件で試す
先月の通報から40件を選び、氏名と電話番号を消して手元のAIサービスで区分を付けさせます。濁り水を漏水に入れていないかを最優先で見ます。
3週目:生成AIの利用の取り決めと当番表の整備
情報セキュリティの担当と、Azure OpenAI の利用の範囲を決めます。当番表を Data tables に取り込み、更新する人と時刻を決めます。
4週目:職員のフォームからつなぐ
まず受付の職員のフォームだけで、材料・区分・緊急度・台帳までを作ります。この時点では当番へ知らせず、受付が台帳の区分を確かめます。
2か月目: Teams の知らせを足し、当番に使ってもらいます。3か月目以降: 住民のフォームを切り替え、受付が直した区分を数え、1件10分が何分になったかを実測します。濁り水の通報が当番に届くまでの時間を毎月見て、縮んだまま保てた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Text Classifier に区分の名前と説明を置けること。複数の区分を許す設定があること。当てはまらないときの扱いの既定が Discard Item で、Other の出口に出す設定があること。System Prompt Template と Enable Auto-Fixing があること | n8n Docs: Text Classifier node | 2026-10-28 |
| Information Extractor の形の決め方が3つあり、JSON の例から作るとすべての項目が必須になること | n8n Docs: Information Extractor node | 2026-10-28 |
| Form Trigger の欄の種類(ファイル・隠し項目など)、認証(Basic・n8n User Auth・なし)、応答のタイミング(送信時・終了時。終了時は失敗すると送信の問題が表示される)、Test URL と Production URL | n8n Docs: n8n Form Trigger node | 2026-10-28 |
| Azure OpenAI Chat Model でデプロイを選び、応答の形をテキストか JSON にでき、認証が API キーか Azure Entra ID であること | n8n Docs: Azure OpenAI Chat Model node | 2026-10-28 |
| Teams のチャットのメッセージの Create と Send and Wait for Response(承認のボタン・待つ時間の上限)があること | n8n Docs: Microsoft Teams node | 2026-10-28 |
| Data tables をワークフローから読み書きでき、インスタンス全体で既定200MiB(セルフホストは環境変数で変更可)、8割で警告し上限で書き込みが失敗すること。既定でプロジェクトのメンバー全員から見えること | n8n Docs: Data tables | 2026-10-28 |
| 第三条の給水装置の定義。第二十三条で、水道事業者が供給する水が人の健康を害するおそれがあることを知ったときは直ちに給水を停止し、周知させる措置を講じなければならないこと | e-Gov 法令API: 水道法(昭和三十二年法律第百七十七号) | 2026-10-28 |
出動、給水の停止、水質の安全、修理の費用の負担は、水道局の当番と責任者が判断してください。 本記事は n8n の公式ドキュメントと e-Gov の法令データで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2125)についてのご相談はこちらから。
