山田健一のブログ

業務に強いフリーITエンジニア 山田健一のブログです

パソコンから電話をかける

私はフリーITエンジニアとして、業務分析、業務改善提案を含む設計、製造、受入検査を含む検査、システム運用開始後の運用改善提案など、様々な分野を担当しています。

今回、「電話をかける」というプロジェクトで電話についていろいろ調べましたので、まとめておきます。

「パソコンから電話をかける」といっても、ダイヤル後、
・自動音声でお知らせする
・オペレーターが会話する
・その他(会議通話など)
があると思います。

今回のプロジェクトは「オペレーターが会話する」でした。

まず、思いついたのが Skype Out (Skype から外部に電話をかける)でしたが、
お客様から却下されました。過去に不安定だったことがあるようです。
次に思いついたのが、twilioですが、クライアントを主役にするのは難しそうです。
・TwiMLを返すサーバーを用意する必要がある
・クライアントから発信したあと、パソコンのマイクやスピーカー
で会話する方法が不明

お客様はひかり電話を使用しているので、ひかり電話を使用したいようでした。

次に考えたのは昔なつかしいモデムによる解法です。
電話、モデム、パソコンの接続イメージは次のようになります。

f:id:yamadaken1:20160421090436j:plain


電話は便利な機器で配線を二股にすることができます。
この構成で、パソコンからモデムにATDTコマンドを送ると、電話をダイヤルすることができます。
ATDTコマンドを送るときに音などを鳴らしてオペレーターに知らせ、オペレーターが電話の受話器を取ると呼び出し音が聞こえてきて、相手が出ると会話ができるという手はずです。

モデムとの通信はRS232Cで行います。

ここで、1つの問題が発覚しました。
そもそも、なぜ、パソコンから電話をかけたい(ダイヤルしたい)と思ったかというと、「素早くダイヤルしたいから」という事情があったのですが、なぜか、ATDTコマンドを送ってから、ダイヤルするまでに2秒以上の時間がかかります。

最初は古いモデムを使ったからではないかと思い、新しいモデムを発注したのですが、発注したのが土曜日だったため、なかなか発送に至りません。

待つのが嫌いなので、いろいろ調べてみました。

結論:
オフフック後、ダイヤル発信するまでの時間はモデムのS6レジスタの内容に依存する
S6レジスタの単位は秒です。
そして、モデムにより「2‐255秒」「4‐255秒」という範囲が定められています。
つまり、モデムを選ばないとダイヤル発信するまで4秒待たされる可能性があるということです。

結局モデム利用は却下となりました。

現在、素早くダイヤルする手法を模索中です。
何かよい方法をご存じの方は連絡をお願いします。