☎️

Asterisk18 × RaspberryPi 4B × Electron × Sip.js

2021/10/24に公開

自己紹介

みなさん、はじめまして。
普段は、ド田舎中小企業の社畜で休日は個人開発を行っている 宮川ゆう と申します。
普段の開発環境は、 Node.js Electron Cordova RaspberryPi 等々...
ビジネスフォンやネットワーク機器の施工会社に勤めているため、普段から様々なお客様の電話設備やネットワーク設備の相談をいただくことがございます。

今回の内容

今回、記事にさせていただく内容は Asterisk × Electron で内線電話をしてみた話です。
Asterisk とは、IP-PBXを構築することができるオープンソースソフトウェアです。
電話回線で発着信を行ったり、IVRを行ったり、留守番電話を動作させたりと、様々な機能を構築できちゃいます!
今回、自分がやりたかったのは Electron で電話ソフトウェアの構築ができるかの検証です。

今回使用したモノ

  • Asterisk18
  • RaspberryPi4B
  • Electron
  • Sip.js
  • 折れない心 (※めちゃ重要!!)

RaspberryPi 4BにAsterisk18をインストール!!

今回は、Asterisk18を採用しRaspberryPi 4Bにインストールしました。
インストール時に気を付けておきたいことは PJSIP環境 を導入するというポイントです。
今回の開発の途中で chan_sip による動作不安定事案が発生し、PJSIP に変更したところ動作不安定事案が発生しなくなり、安定したためです。
詳しいインストール方法については、ここでは載せません。

アカウントの設定は、PJSIP!!

先ほども書きましたが、AsteriskとSip.jsでやり取りをする場合は PJSIPアカウントが適しています。
PJSIPにしないと、自分の環境では着信があったときにうまくイベントが働いてくれませんでした。
着信をさせないのであれば問題ありませんが、発信はできて着信はできないっていうのもアレなのでPJSIPをお勧めします。

実験結果

Sip.js+Electronでの発着信・通話試験を何度も行いましたがしっかりと動作してくれました。
この実験をした後にタブレット端末からIP多機能電話機への発着信やIVRへの発信なども試してみましたがしっかりと動いてくれました。
CordovaでもSip.jsを活用すればソフトフォンとして動作します。
皆さんも一度、試してみてください。

Discussion