この記事は、 OIT Advent Calendar 2019の7日目の記事です。

今年もAdvent Calendarの季節がやってきました。 今回は 2019年9月30日 にお亡くなりになった、ポケベルの追悼の意を込めて作成にあたりました。

ポケベルとは

ポケットベルの略です。 ポケベルにはそれぞれ電話番号が割り当ている。
ポケベルにメッセージを送るには、送信者は以下の操作が必要になります。

  1. メッセージを届けたいポケベルの電話番号に掛ける
  2. *2*2(コメに−コメに−)を入力 <ーメッセージを開始時
  3. メッセージの入力
  4. ##を入力 <ーメッセージを終了時

3の「メッセージの入力」ではポケベルの文字コード表というものを見ながらダイヤル入力します。

ポケットベルは受信しかできない通信機器ということもあり、一方通行でのやり取りになっています。

文字コード表について

この文字コード表がドコモ派とテレメ派の2種類あり、契約しているポケベルのキャリアによって 違う文字コードを打つ必要があるという互換性に優れていない状況になっていたらしいです。

作成経緯や使い方動画

ニコニコ動画版はこちらから Twitter DMの送り方は↓

成果物

電話を掛けてダイヤルキーからTwitterに投稿できる

今回の電話番号は 050-5373-8900 です。

ポケベルの文字コード表はこちらから
投稿されるTwitterはこちらから
ソースコードはこちらから
! 今回作成した文字コード表はテレメをベースにしています。

投稿のされ方

使い方

ポケベルの操作をなるべく再現されるように試みたが、機能的に削っているものも多いですがその点はご了承ください。

  1. *2*2(コメに−コメに−)を入力 <ーメッセージを開始時
  2. メッセージの入力
  3. ##を入力 <ーメッセージを終了時

これでツイートされます。

メッセージは成果物のセクションに乗せていますが、載せておきます。文字コード表

文字コード表で@マークが使えるので、

付加機能として、文字の全削除機能 を追加しました。
打ち間違えが多くなることを予想したので**(米印2回)で今まで打った内容をすべて消すことが可能です。
文字数がわからなくなった時のために、[1*]や[4*]などの数字のあとに米印と打った場合でも文字の全削除ができるようにしました。

どの時点で削除されているのかをユーザ側が判断できていなかったので、全削除時には 「ゼロ」 という発音の良い英語ガイダンスが流れるようになっています。

注意点

Twitter APIを使用しているので 3時間あたりの回数による制限同じ文字列を連続で投稿できない などという制限があります。
「同じ文字列を連続で投稿」は発信者のセンスに関わってくるので頑張ってください!
しかし、3時間あたりの制限は一時的に投稿できない場合がありますがその場合は ごめんなさい。 時間が経ってからかけ直していただくと大体は投稿できるようになっているはずです。

「てすと」という文字を投稿したい場合は、*2*2 を入力してから 443345 メッセージ部分に入力します。 ## と入力すると投稿されます。

仕組み

ソースコードはhttps://github.com/yoneyan/pocketbell-asteriskから

フロントエンドに 電話 、バックエンドに python を使っています。
AsteriskにはAGI(Asterisk Gateway Interface)というものがあり、 pythonやC++などので作成されたスクリプトを動かすことができます。 この機能を使って、打たれたダイヤルを認識させて文字と番号に合う文字列を組み合わせることで文章が出来上がります。

以下のような手順で動作しています。

  1. 電話をかける
  2. Asteriskに繋がる
  3. *2*2が打たれたことを確認する
  4. 打たれたダイヤルキーを配列に入れ、2文字おきに解析する
  5. 2文字を文字コードから生成しsend用配列に入れる(この動作を繰り返す)
  6. ##が押されたことを確認すると、Twitter APIを用いて投稿する
  7. 投稿が完了すれば電話を自動切断する。