こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

社内の内線に電話をかけその結果を取得するには・・・

現在C#にて社内の内線電話に電話をかけるプログラムを作成しています。

■現在は以下
ポート開ける

発信する(ATDT####)

相手に電話がかかる

BUSYが帰ってくる

ポート閉じる

ここで問題がありまして、テストをしていると
どうやら相手が電話を取って切ってもBUSYが帰ってくるし
相手の電話の電源が切れていてもBUSYが帰ってくる事がわかりました。

調べてみるとATXnコマンドにてリザルトコードが取れると分かったのですが
どのように使用していいものか分からず。。

とりあえずTeraTarmにてATX3DT####とは送ってはみたもののダメでした。

理想とする処理は
ポート開ける

発信する(ATDT####)

相手に電話がかかる(相手の呼び出し音を検出)
↓30秒以内に出なかった場合or電話がかからない時はポートクローズで終了

相手が電話に出る(検出できますか?)

相手が電話を切った事を検出

ポート閉じる

どうかお知恵をお貸しくださいます様よろしくお願いいたします。

投稿日時 - 2015-04-17 13:46:10

QNo.8957378

すぐに回答ほしいです

質問者が選んだベストアンサー

>相手が電話に出る(検出できますか?)

「相手」って、モデムではなく人間ということですね?
それだと、通常のモデムでは無理だと思います。

相手がモデムであれば、キャリアー音を発信してくるので、そこでモデム同士がネゴシエーションをはじめ、確立できる最大速度で接続したのち、「CONNECT XXXXX」のリザルトコードが出ます。
データ通信ができるように接続できて初めて「CONNECT」が出るので、「相手が受話器を上げた」時点では何のリザルトコードも出ません。
本当に話し中でビジートーンを検出したり、回線が切れてしまったら、リザルトコード「BUSY」が出て、ダイヤルコマンドは終了します。

相手がモデムで、「CONNECT」ののち、回線が切れたならば、データ通信のためのキャリアー音が聞こえなくなった、ということで「NO CARRIER」リザルトコードが出ます。
でも相手が人間で、無言電話を不思議に思い、切ったら、接続失敗という意味で「BUSY」が出るでしょう。
したがって、リザルトコードで、相手のオフフック・オンフック検出はできないと思います。

----

ちなみに、モデムからかけられた電話を取って、口笛でそれっぽい音を聞かせると、ネゴシエーションのためのキャリアー音が流れてくることがあります。
その後のネゴシエーションは口笛じゃ無理ですから、すぐ切れてしまいますけど。

投稿日時 - 2015-04-17 21:01:37

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>ここで問題がありまして、テストをしていると
>どうやら相手が電話を取って切ってもBUSYが帰ってくるし
>相手の電話の電源が切れていてもBUSYが帰ってくる事がわかりました。

まともに接続していない可能性が大です。

> 調べてみるとATXnコマンドにてリザルトコードが取れると分かったのですが

すこし違います。

>相手が電話に出る(検出できますか?)

普通は、モデムが極性反転を検出して
connectが帰ってきます。

https://www.omron.co.jp/ese/ups/discontinued/me5614u2/me5614u2.pdf

投稿日時 - 2015-04-17 17:04:35