iPhoneからAsteriskで発信するAsteriskC2D

AppStoreにAsteriskC2D[iTunesで開く]というアプリがあります。説明によるとiPhoneからAsteriskでダイヤルできるようなことが書いてあります。まさかSIPクライアント!と期待するワケですが、残念ながらダイヤルしてくれるだけ。実際の通話は別のSIP端末でする必要があります。

なにが便利かというと、iPhoneの電話帳に登録済みの番号へ固定電話(Asterisk)からかけたい、なんて時にiPhone上の番号を見ながら電話機のテンキーを叩かなくていい、って位ですね。\115とは言え、有料アプリ買ってまでしたいことかどうかは微妙です。

でも物好きなので試してみましたw。AppStoreの説明読んでも具体的にどう機能するのかさっぱりだし、探しても日本語の情報(どころか英語も)が見つからなかったので書いておきます。

■動作の仕組み

Asterisk(とWebサーバー)が動いているマシンに、専用のPerlスクリプトをインストールし、iPhoneからはhttpでそれを叩いているようです。Perlスクリプトは(必要ライブラリからして)Asteriskにtelnetして操作をしているようです。公式サイトによれば、元々はMac用のクライアントが主みたいですね。ブラウザ上で表示している番号などに簡単に発信するためのソフトのようです。ただし、iPhoneの場合は連絡先に登録した番号を呼び出せるだけ。まぁ、OSとしてコピペがない以上、どうしようもないんでしょうね。

■実際の操作手順

iPhoneにAsteriskC2Dアプリをインストールすると、設定画面にAsteriskC2Dという項目が追加されるので、そこから設定を済ませておきます。Extension欄に通話に使いたい電話機のSIP番号を指定します。UsernameとPasswordはLDAPを使う場合のもので、使わないのであれば、後述の設定をしておけば設定しなくて良いのかも知れません。

次にAsteriskC2Dアプリを立ち上げます。押せるのはContactsボタンのみ。押すと文字通り連絡先画面が開き、番号を選ぶと最初の画面に戻ってきます。

この状態で既に発信作業は行われており、間髪をおかずしてExtensionで指定した電話機が鳴ります。芸が細かいことに、発信者番号は発信先のものが表示されます。つまり、Aさんに発信した場合、あたかもAさんからかかってきたように見えるわけです。

電話を取ります。するとその時点で発呼がかかるようで、受話器からは呼び出し音が聞こえ、相手が出ると通話が開始できる、という流れです。

■サーバースクリプト導入のTips

サーバー側の設定は公式サイトに解説ページがあります。ただ少しいじる必要がありました。まずウチはLDAPを使っておらず、またCPANのライブラリもサクっとインストールできなかったので、LDAP関連の部分を無効化しました。

#use Net::LDAP;

設定部分直後の下記3行もコメントアウト 。

#my $ldap = Net::LDAP->new($LDAPServer, debug=>0) ||die "$@\n";
#my $ldapbind = $ldap->bind("uid=$in{‘username’},$LDAPSearch", password => $in{\’password’});
#if ($ldapbind->is_error()) {print "NO! username/password incorrect\n"; die "username/password incorrect: $in{‘username’} -> $in{‘password’}";}

また、番号の先頭に無駄に9を追加するので、 下記の行もコメントアウト。

#if ((substr($exten,0,1) ne ‘9’) && (length($exten) > 4) ) { $exten = ‘9’.$exten; }

あと、このスクリプト自体が勝手に呼ばれないよう、Apacheのアクセス制限で、LAN以外からはdenyするようにしておきます。同時にディレクトリ名やファイル名も適当に変えておくといいでしょう。

このスクリプトは以下のようなURIで簡単に電話がかけられるので、他にも応用が利くかも知れません。

AsteriskC2D.pl?deskphone=[使いたい電話機のSIP番号]&toCall=[発信したい電話番号]

標準の天気アプリをリプレイス

あてにならないと言われているiPhone標準の天気アプリを置き換えます。

写真左が標準アプリ、右はその右下をタップして飛んだ先のYahoo!天気情報です。当たる外れる以前に、Yahoo!の方が、

  • 郵便番号指定のピンポイント
  • 週間ではなく3時間毎の予報(モバイルとしてはこっちの方が便利かと)

と便利です。複数の郵便番号を登録しておけば、複数地点も縦スクロールで閲覧できます。

 

IMG_0005 IMG_0003 

この状態でホーム画面にショートカットを置いておけば、使い勝手は天気アプリをなんらかわりません(開いた時点でネットアクセスするのはアプリも同じ)。少し前まではホーム画面用のアイコンが用意されておらず、ページのサムネイルになって見栄えがしませんでしたが、今日アイコンを作り直してみたところ、ちゃんと対応していました。これで見た目もアプリにひけをとりません。

IMG_0002

残念ながら不要になった標準天気アプリのアイコンをホーム画面で非表示にはできませんが…

iPhoneに入れてみたアプリ

すでにどこかで書いたものと重複しますが、とりあえずまとめレビュー。

■ウィズダム英和和英辞典

touch時代はJBして英辞郎を使ってましたが、その代替品が欲しくて購入。

サイズが大きいせいで、iTunesからのインストールに失敗するという現象が出て一時公開中止になったみたいですね。σ(^^)はその現象を知りつつも特攻して無事導入できてます。

インクリメンタルサーチのレスポンスが良く満足しています。

■OmniFocus

多機能ToDo。緯度経度をContextというラベルに紐づけておき、各ToDoをそのContextに紐付けると、今いる場所の近くでするべきToDoが表示される、という某P.O.R.的なことができるのが良いです。.MacやWebDAVサーバーにバックアップできる点もポイント。

ただ多機能故に起動時間も含めやや動作が重たいのが玉に瑕。

また、P.O.R.的機能にしても、緯度経度<->ContextもContext<->ToDoも1対1でしか紐づけることができる、例えば「○○の新刊を買う」というToDoを、抽象的に「本屋」という位置コンテクストでポップアップすることはできないので、本来σ(^^)がずっとやりたいと思っているP.O.R.には足りません。一応開発元にリクエストしてみたんですが、Contextに対して緯度経度じゃなく、「本屋」というGoogle Localタグを紐づけておけば、近場の本屋がピックアップできるから、おまえの言うMultiple Contextは実現済みだよ、というとんちんかんな答えが返ってきた。ので、やっぱ自分で作るしかねぇな、と思い立つ今日この頃。

■Palringo

おそらくサーバー経由型のMessenger互換ソフト。iPhone OS自体がサードパーティアプリの常駐を許していないので、起動中にしか待ち受けられないという制限があるものの、無料でありながらWindows Live Messengerが使えるのは有り難いです。

ただ、文字入力中に受信したメッセージがなぜか別タブに表示されるなど不具合っぽい挙動も残る。また、写真送信も同社サーバーに置かれて、URLが先方にテキストで送られるとう半端な仕様。その圧縮率が高く汚い状態でしか遅れないのも厳しい。

外出中にどうしてもメンバーがオンラインかどうか知りたいといった緊急用ですね。

■SplashID

パスワード管理ソフト。PC用の同期アプリがあるのでチョイス。まだ試用版ですが、たぶん買うことになると思います。

こちらも起動にやや時間がかかるのと、日本語が化けるのが難点。PC版ではちゃんと出るし、多分フォントの問題だけじゃないかと改善を期待。

分類が2項目(項目分類とテンプレート分類)あって、絞り込みがやや面倒です。PC同期のいらない人は他に選択肢がある気がします。

■G-Park/G-Spot

同じ会社がリリースする位置情報系アプリ。G-Parkは買い物前に駐車場の位置を記憶して、帰りにそこまでナビゲートするソフト。ただ案内部分はマップアプリに投げてるだけなので、経路データがない日本エリアでは現時点では役立たず。単純に地図表示もできないので、全く使えません。日本の方は買わない様にご注意を。

G-Spot(スゲー名前…)は位置情報関係の総合アプリ。ただコンパスはぶれがひどくて実用にならない。これはOS2.1で移動方向や速度が取得できるようになれば改善するでしょう。一番の期待は現在位置をGoogle Maps用のURIにしてメール送信する機能だったんですが、URIの文法がおかしいらしく、docomo、auともに正しく表示されませんでした。こういうのは自分でエディットできるようにしといて欲しいですね。これも是非欲しい機能なので、自作アプリの修行用テーマとしたいところ。

■iNetwork Test

通信速度測定アプリ。緯度経度とともに集計サーバーに投げることで、マップ上に統計情報が出るのが面白くて参加してみようと。でも日本のデータはまだあんまりないですね。というかウチからの送信が登録されない…

■Sudoku Classic

ある意味、一番利用頻度が高いかもw。DSやケータイアプリの数独ソフトに比べて、

  • 数字の仮置きが4候補ではなく9候補フルでできる
  • 仮置きを全自動でやってくれる

という違いがあります。2つ目はゲームとしてどうよ、とも思いましたが、使ってみると、単純に機械的な作業を肩代わりしてるだけで面白さは損なわれず、むしろより高等な思考に集中できて良いなと感じました。

 

Sudoku以外、どれも何かしら問題を抱えてますが、Appleの審査期間が長く思うようにアップデートもできないという状況のようですね。ユーザからしても体験利用もできずいちかばちかで買うしかない博打状態。セキュリティ面も軽視はできないんですが、今のところあまり健全な運用形態ではない気がします。JB2.0が登場したが、開発者はみんな公式AppStoreに流れてしまうのかどうか、見物ですね。

rep2をiPhoneに最適化しよう

ASP型2chリーダーのrep2は、PCとケータイで2chの未読やお気に入り管理を共通管理できて重宝しています。そのrep2のケータイ用UIをiPhoneに最適化しようってスレ「p2をiPhoneに対応させようぜ」が当の2chのiPhone板に立っていて、非常に活発に改良が進んでいます。

現状の画面はこんな感じ。

IMG_0010 IMG_0009
お気に入りスレ一覧 レス表示

 

■試験導入

今のところ、ケータイ用ビュー(&b=k)を上書きする形でパッチが配布されているのと、まだ開発途上ということなので、ウチでは本環境をいじらずに済ませるべく、以下の手順で導入してみました。

  1. 既存インストールフォルダ(例. rep2)を、丸ごとコピーする(例. rep2i)
  2. rep2i/data/フォルダを削除し、rep2/dataからシンボリックリンクを張る(例. ln -s rep2/data rep2i/data)
  3. 最新パッチをrep2i側に上書きコピーする

これで一応、動いています。まぁ、iPhoneがあれば、わざわざ通常のケータイからアクセスすることはないとは思いますが。

■お気に入りスレ一覧へ簡単に戻れるようにする

σ(^^)は基本的にPCでお気に入りスレ一覧を管理してあり、ケータイからはそこの最新レスを読むだけなので、スレ一覧画面が基本画面となります。しかし、現状ではレス表示画面からはトップ画面にしか遷移できません。ブラウザの「戻る」だと、レスが何ページにも及んだ時に手間になります。トップ画面へはお気に入りスレ一覧から戻れるので、とりあえず、レス表示画面下のTOPボタンのリンク先をお気に入り一覧に書き換えてみました。

補足:以下、2008年9月末時点のバージョンに即して修正しました。

iphone/read_footer_k.inc.phpの75行目付近

書き換え前:

<li class=”home”><a href=”index.php?&b=k”>TOP</a></li>

書き換え後:

<li class=”home”><a href=”subject_i.php?spmode=fav&sb_view=shinchaku“>お気に入り一覧</a></li>

これで移動中の2ch閲覧がかなり快適になりました。電車の暇潰しに最高です(^^)v。

iPhoneとPCでメモを共有できるWebアプリ作成

iPhoneとPCのデータ同期を手軽に行えるMobileMeですが、残念ながらメモに対応していません。AppStoreも毎日眺めてますが、なかなか満足のいく同期機能付きメモソフトが出てきません。

そこで、当座しのぎとして簡単なASP型メモシステムを作ってみました。単なるPHP + RDBMSを使ったテキスト保存ページなので、iPhoneが圏外の時はアクセスできませんが…

iPhone専用っぽいUI部品やCSSを使って、外観をネイティブアプリっぽく仕上げたのがポイントです。

 

トップページ

トップページ。リストで見えてるのはカテゴリ一覧です。

右上が新規作成ボタン、左上が検索ボタンです。


メモ一覧 

カテゴリを選んで、メモ一覧に遷移したところ。

この画面から新規作成を押した場合、デフォルトで当該カテゴリが選ばれてる、とかいう細かいとこまで作り込みました(^^;)。


閲覧画面

閲覧画面。

PalmやiPhoneの内蔵メモなんかだと、いきなり編集状態になるのが普通なんですが、textareaに入れてしまうとスクロールが大変、というiPhone特有の問題を考慮して、とりあえずフォームにせず全文を表示する閲覧モードを設けることにしました。

写真には映ってないですが、下の方に編集と削除ボタンがあります。実は編集ボタンを押さずとも、textarea自体を触っても編集モードに移行できます。

電話番号、URLは自動的にリンクになります。


編集画面

編集画面。

こっちがtexeareaを使ったフォームです。

閲覧画面と間違えにくいよう、背景色を微妙に変えています。

widthを微妙に調整して、閲覧画面と折り返し位置が同じになるようしてみましたが、完璧にはなりませんでした(画面だと、一番下の行は折り返し位置がズレてます)。

下の方にカテゴリ選択メニューと保存、取り消し(保存しないで戻る)ボタンがあります。

編集中にページを閉じたりSafariを終了しようとした場合にも保存を促すようにしたいなと思っています。

検索画面

検索ページ。

全文検索ができます。


PCで見たところ

PC用のページをOpera9.5で表示させたところ。