Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アナログ電話のナンバーディスプレイを安価にIT化する話

D6b07f6f473104e07b07c1079f02de3d?s=47 moyashi
January 15, 2022

 アナログ電話のナンバーディスプレイを安価にIT化する話

アナログ電話の電話番号通知(ナンバーディスプレイ)を安価にシステム化し、Slack通知する話。結論から言うとちょっと古いYAMAHAルータ(中古)を使用します。

D6b07f6f473104e07b07c1079f02de3d?s=128

moyashi

January 15, 2022
Tweet

Transcript

  1. 2022/01/15 伊勢IT交流会 電話のナンバーディスプレイを いい感じにする話

  2. もやし工房 石黒 光茂 @koike_moyashi mitsushige.ishiguro もやし工房

  3. 固定電話 事業用の電話がある 基本電話は嫌いなので携帯に転送にはしていない 留守電「メールフォームから問い合わせてね♪」

  4. 今まで→KDDI電話 auで着信確認

  5. 今まで→重要そうな人のみ折り返し

  6. KDDI電話 auで着信確認→2021/11 サービス終了

  7. 困った

  8. やりたいこと 1. 外に居ても誰から着信があったかを知りたい 2. 着信があった顧客をいい感じに管理したい 折り返すかどうかは自分で決める

  9. 固定電話で電話番号を知る→有料→仕方なく契約 https://web116.jp/shop/benri/number/num_00.html

  10. この番号を何とかシステム化したい ☎ 着信 ・◦◦さん ・前回 20XX/0X/01 ・メモ こんな問い合わせだったので、こんな風に対応 した。

  11. NTTひかり電話だとルーターに入れて色々できる

  12. ユーザ名とパスワードがわからない このポートが怪しいが...

  13. 電話番号を いい感じにシステム化する方法

  14. その1→専用の機械を接続

  15. その1→専用の機械を接続(仕様も公開されてた) モジュラージャック ↓ 専用の機械(アロハ)→電話 ↓ RS-232C ↓ Arduino(ESP32/Wifi) ↓ サーバ

  16. その1→専用の機械→新古品で買った

  17. 電話機側で番号でない(電話機の機能使えず)→説明書見たら非対応

  18. その2→電話機に出てる番号をWebカメラで画像認識→数値化 https://child-programmer.com/seven-segment-digits-ocr-beginner/

  19. その2→面白そうだけど時間かかりそう→保留

  20. その3→IP電話をアナログ電話機で受ける機械(海外製)

  21. その3→IP電話をアナログ電話機で受ける機械→駄目っぽい

  22. その4→YAMAHAのアナログ回線を収容できるルーター

  23. YAMAHAルーター

  24. アナログINがある(最新のルータにはついてない) 今回の設定ができる機種: RT57i、RT58i、NVR500

  25. 定価は高いが中古 送料込み2,000円~

  26. こんな感じで接続

  27. こんな感じで設定

  28. 着信→SYSLOG→ちゃんと電話番号出てる&電話機も番号あり着信 > show log 2022/01/07 18:48:53: TEL[**/*] InComing Call from

    090XXXXXXXX
  29. どうやってシステム化するか その1:syslogを転送 syslogサーバ(syslogd) syslog これを監視するプログラムを書く

  30. どうやってシステム化するか その2:ルータ内のLua言語を使う

  31. いろんな事ができる • config のプログラム設定 • 特定のアドレスへ通信できなくなったときに管理者へメールを送信する • トンネルがダウンしたときに経路を変更する • syslogを監視

    • http POST などなど
  32. syslog監視→電話の行が来たら→HTTP POST -- Setting url = "http://example.com/post/" ptn = string.regexp("TEL.*

    InComing Call from .*") -- POST function post_tel(url, postdata) local req_t = { url = url, method = "POST", content_type = "application/x-www-form-urlencoded", post_text = string.format("tel= %s¥n", postdata) } local rsp_t = rt.httprequest(req_t) -- error if (rsp_t.code ~= 200) then rt.syslog("info", "[Lua] failed to send TEL data.") end end -- MAIN local rtn, str while (true) do rtn, str = rt.syslogwatch(ptn, 1) if (rtn > 0) then post_tel(url, str[1]) end end ※ ループでエラーになると復帰が面倒なので 複雑なことはさせない方が良さげだった
  33. 外に居ても誰から着信があったかを知りたい→できた http post slack incoming webhook

  34. 着信があった顧客をいい感じに管理したい→どうするか?

  35. 顧客管理→CRM

  36. Zoho CRM API (無料プランでも使える)

  37. Zoho CRM API→ちょっとしたことが複雑

  38. 結局自分で作った→便利

  39. 暇になったらやってみたい • このルーターはIP電話を収容できる • SIPサーバ(FreePBX,Asterisk)とまぜて色々やると、楽しいらしい • 電話番号検索サービスにつなげる(0120, 050)

  40. まとめ 電話系は知らない言葉だらけ 電話番号のICT化は専用システムも沢山あるが、結構高め 小規模で安価にやるなら悪くない(ような気がする)