pbxAsterisk自作もの通販Asteriskで電話が切れた後に処理をしたい(その1)Asteriskで電話が切れた後に処理をしたい携帯電話機の切るボタンを自動的に押したいAsteriskを使っていて、電話が切れた後に処理をしたいと常々思っていた。具体的にはAsterisk経由での通話が完了した後、あるいは電話呼び出しが切れた後にリレーをONにして、リレーに接続したプッシュ型ソレノイドで携帯電話の切るボタンを押したいと言うことです。B)とbluetoothゲートウエイを使って携帯電話にアクセスしているのだが、この携帯電話機に大きな罠が隠されていました。それはbluetooth経由だと通話(着信だけで通話が成り立たなくても)が終了しても、携帯電話機の切るボタンを押したのと同じ処理にならないため(具体的には切れたあと通話終了の画面が表示され約30秒待たないと何も操作ができなくなる、特にbluetoothからの操作だけでは発着信は絶対できない状態となってしまう)、例えば、相手からの通話が何かの原因で切れた場合に相手がいくらリダイヤルで電話をかけ直しても相手側からは約30秒間は話中のままとなってしまい、さらにこちらからの発信も不可能という状態となります。携帯電話の近くに居るときには、切るボタンを押せば即座に電話のかけなおしに対応できるので、携帯電話の近くにいない場合でも、なんとかして通話(着信だけでも)が終了したら切るボタンを押したいと考えていました。当初は携帯電話会社に何か変なのではないか?と、法人窓口に質問してみたところ以下の回答を得ることができました。いう仕様です窓口の方では、「仕様」という説明をしてくれましたが、それと同時に携帯電話製造メーカーの窓口の電話番号を教えてくれました。教えてもらった携帯電話の製造メーカーに問い合わせたところ、「ここの製品、ここではbluetoothの仕様というのは携帯電話のキャリアーが独自の仕様書を作成し、その仕様書に基づいて携帯電話機を作るから製造メーカーではどうしてそういう仕様になっているのかは判らないが、他社はそういう仕様にはなっていないからどうしてそういう仕様になったのかは判らないな~」と言う回答でした。いう仕様ではいたか仕方ないので仕様を回避する方法を考えたわけです。すれば仕様を回避できるのだろう?どうにも切るボタンを押すのが面倒なのと、Asteriskに収容していても切るボタンを押さないと、かけ直しに対応できないことから苦情もあったので収容から外しての利用となりました。海外に2週間程遊(学)していた時には、この携帯電話機をAsteriskに収容して、一方的にボイスメールで受けてしまい、後から電話をかけ直すという方法で対応していました(もちろん海外からはAsterisk経由の日本の固定電話を使って発信するという方法になりました:しかし固定電話からの発信だと携帯電話宛の通話料気が高いということに気が付かなかった...)。どんな場合でもbluetooth経由だと切るボタンを押さないとダメなのだろうか何か抜け道は無いだろうか?と携帯電話機2台、bluetoothヘッドセット、bluetoothゲートウエイ、bluetooth対応カーナビを使って色々と実験をかさねましたが、結局のところ「携帯電話の切るボタン」を押さない限り連続受発信の通話はできないのだという結論となりました。「切るボタンを押す」ことでこの仕様を回避できるという結論に達しました。piで何かのプログラムを使えば切るボタンを押す方法は見つかるであろうということはすぐに思いつきました。具体的にどうすればよいかは思いつきませんでした。Piにカメラをつけて携帯電話の液晶画面を撮影しておき、「通話終了」の画面になった場合にはリレーをONにしてプッシュ型ソレノイドで切るボタンを押すという方法が一番最初に思いつきました。piで処理をすれば汎用的(bluetooth経由以外にも例えば通話時間が9分55秒などの無料通話サービスの限界時間を設定しておきその時間が近くなったら自動的に切るボタンを押するなど)考えていました。プログラム的に、画面が切り替わったタイミングをどうやって取り込めば良いかとか「通話終了」という画像の比較をどうすれば良いか(虚ろながらOpenCVを使えば良さそうだ程度)など、よく判っている人には簡単ですが、私にはよく判らなかった。そんなことを考えながら紀伊国屋書店で次の本を立ち読みしました。オレ流LINEづくり」という記事がでていました。2016年3月号を購入(後日Interface2015年10月号も購入)して帰ってきました。Interface)という処理があり、Asteriakの機能を拡張することができるということ。J_Talkを使った音声メッセージ再生の方法が書かれていました。長くなったので、いったんここで次の投稿にします。