目次
会社の電話システムを購入すると数十万~数百万円かかりますが、オープンソースソフトウェア(OSS)であるAsterisk、FreePBXなどを利用すると格安でシステムを構築することができます。
ただし、NTTなどの事業者の回線である「ひかり電話」等には接続できません。(技術的には可能なのですが、NTT等による機材の検査が必要になります。)
よって、IP電話(050から始まる電話番号)に接続することが前提となります。
弊社では、Raspberry Pi用にカスタマイズされたFreePBXのRasPBXを運用しています。やや不安定なときもありますが、概ね順調に稼働しています。
不安定動作の原因
動作がやや不安定だった原因は、RasPBXの各種ログが肥大化しSDを圧迫していたためでした、ログ取得は必要最低限にして定期的に削除する、あるいはログは取得しなければ、安定して動作します。
最近、自動音声ガイダンス(IVR)を導入しました。着信してからお客様に該当する番号を選んでいただくものです。以前までは、着信するとすべての電話が一斉に鳴動していたのですが、IVRの導入により担当者の電話のみが鳴動することになりました。
よって、着信履歴はそれぞれの電話に残ることになり、すべての着信履歴を簡単に確認する方法がありませんでした。
(営業電話は基本的に留守番電話につながる設定ですので、現状では着信履歴も残りません)
そこで、着信した全ての電話番号をSlackに通知する仕組みを導入しました。これも無料で構築できます。
導入の際に迷ったことがあったのでメモとして記録しておきます。
Slackへのアプリ追加
Slackのチャンネル上で右クリックし「チャンネル詳細を開く」を選択します。
「インテグレーション」タブを選択し、「アプリを追加する」を選択します。
ここで「Incoming Webhook」というアプリを選択し、追加します。
これにより、RasPBXからSlackに着信番号を通知することが可能になります。
Incoming Webhookの設定は説明を見ながら希望の内容に設定してください。
FreePBX(RasPBX)の設定
着信した際には次の動作になります。
着信 → カスタム宛先(Slackに番号通知) → IVR(自動音声ガイダンス)
以前は、着信するとIVRに繋がっていたのですが、その前にカスタム宛先の処理を割り込ませます。
カスタム宛先追加
カスタム宛先は、[アドミン] – [カスタム宛先]を選びます。
[Add Destination]ボタンをクリックし、Targetに「slack,s,1」と入力し、説明などは適宜わかりやすいものを入力します。
Returnは[Yes]、Destinationは今回は[IVR]にしますが、着信グループなども動作すると思います。
呼び出しスクリプトの追記
カスタム宛先に追加するとextensions_custom.conf内の処理が実行されます。
スクリプトのパスの部分にSlackのIncoming Webhookを呼び出す処理を書いたスクリプトのパスを記述します。
このとき、着信番号をコマンドパラメータとして渡しています。
[slack]
exten => s,1,System("スクリプトのパス" ${CALLERID(num)})
exten => s,n,Return()
うまく動けば、着信と同時にSlackに通知が届きます。お客様は音声ガイダンスに番号を入力いただきますので、Slackの着信通知から電話の鳴動までに数秒間、余裕ができBGMを消すとかの操作もできます。