発信者不明の着信番号を生成AIを使って自動調査しSlackで通知してみる

,


はじめに

どちらの事業者様もそうでしょうが、弊社にも毎日のように営業電話が掛かってきます。電話を掛けている方もお仕事ですから仕方ないですが、回数が多いと作業が中断するためなるべくなら控えていただきたいのが本心です。

そこで、弊社では自社で開発したシステムを使って着信時に音声ガイダンスを流し、一般のお客様からの電話と営業電話との着信を振り分けています。その内容については下記記事をご覧ください。

今回は更に処理を追加し、着信番号が不明な場合(電話帳に登録していない番号の場合)に、その番号の発信者を生成AIを使って調査し、その結果をSlackに通知する処理を追加してみました。

システム概要

システム構成

  • Raspberry Pi (FreePBX)
  • Slack監視サーバー (Ubuntu)
  • AIサービス (Perplexity API sonar-reasoning)

処理フロー

処理結果

リンクをクリックすると、着信電話番号でGoogle検索をすることができます。以前は、ここまででしたが、今回はさらにAIサービスを使い発信者特定まで自動的に行い、次のようなメッセージが返却されます。

利用するPerplexity API sonar-reasoningは内部でDeepSeekが利用されているため<think>のような過程も返却されます。<think>の内容が不要であれば、Slack通知から削除することも簡単に対応できます。

Raspberry Pi (FreePBX)の処理

弊社の電話はまずFreePBXに着信します。

  1. FreePBXに着信した電話の着信番号をSlackに通知します。
    →Slack通知用のPythonスクリプトをFreePBXから起動します。
  2. 音声ガイダンスを流し弊社お客様からの電話と営業電話を振り分けます。
    →今回の処理には直接関係ありません。

Slack監視サーバー (Ubuntu)の処理

  1. サーバーは常時起動しておりSlackの特定のチャンネルのメッセージを監視する。
  2. メッセージ中に電話番号が含まれていた場合、Pythonスクリプトを起動しAIサービスに指示を送信する。
    『電話番号 {phone_number} の会社名を教えてください。明確ではない場合には、相手不明と簡潔に回答してください。番号の属性・特徴などの解説は不要です。』
  3. AIサービスから返却された回答をSlackに送信する。

AIサービス (Perplexity API sonar-reasoning)の処理

  1. Slack監視サーバーからの指示に従い、電話番号をもとに発信者を特定し回答する。

まとめ

着信時点で電話帳に登録されていない番号からの発信でもある程度特定できるため便利になりました。今回はSlack監視サーバーを別サーバーとして構成しましたが、FreePBXを搭載しているRasbperry Piに統合することもできます。(電話のシステムが落ちるといろいろと復旧が面倒なので、別サーバーとしました)