💨
アレクソン製ターミナルアダプタにUSB接続してCTIを構築する手順
はじめに
この記事はQiitaの記事をリライトしたものです。少しだけ新しい知見が追加されています。
CTIとはComputer Telephony Integrationの略で、コンピューターと電話を統合した技術のことです。電話がかかってきたら、相手の電話番号をコンピューターで取得し、関連する顧客情報を表示したりします。ここではPythonを使ってアレクソン製ターミナルアダプタから着信電話番号を取得し、FileMakerにわたす手順を説明します。弊社ではDBにFileMakerを使用しているというだけなので、この記事の内容は汎用的に使えます。
動作環境
以下の環境で動かしています。
Windows 10 pro
Python 3.6
プログラム自体は他のOSでも動きますが、TA用のドライバーがないと辛いです。
CTIプログラム
import datetime
import webbrowser
import serial
# ターミナルアダプタ(ALEXONシリーズ)のシリアルポートを開く
with serial.Serial('COM3', 9600) as ser:
# 初回だけ電話番号を取得できるようになるおまじないをする(謎のATコマンド)
ser.write(b'ATG55=3ATG56=0\r')
# 実行結果を取得(2回)
result = ser.readline()
print(result.decode())
result = ser.readline()
print(result.decode())
while True:
# 改行まで読み込み
l_bin = ser.readline()
line = l_bin.decode()
# 電話番号は4カラム目
number = line.split()[3]
# FMPプロトコルでFileMakerを呼び出す
url = 'fmp://{ユーザーID}:{パスワード}@{FMSのホスト名orIPアドレス}/{ファイル名}?script={スクリプト名}¶m=' + number
webbrowser.open(url)
# ログ出力
dt = datetime.datetime.today()
log = dt.strftime("%Y-%m-%d %H:%M:%S") + ' ' + line.rstrip()
print(log)
モジュールのインストール
pip install pyserial
プログラムの説明
最初に下記のような謎のATコマンドを送信しています。
AT G55=3
AT G56=0
アレクソンのTAは、デフォルトでは着信電話番号を出力してくれませんが、このATコマンドを実行すると出力するようになります。マニュアルを熟読しましたが、どこにも載っていませんでした。
後はシリアル通信で取得した内容を解析して、電話番号部分を取り出し、FileMakerに送っているだけです。モデムやTA相手なら、こんな短いコードでCTIが実現できてしまいます。
実行しても動かなかったらデバイスマネージャーでTAのポートがCOM3
かどうか確認しましょう。
Discussion