アレクソン製ターミナルアダプタにUSB接続してCTIを構築する手順

1 min read読了の目安(約1500字

はじめに

この記事は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={スクリプト名}&param=' + 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かどうか確認しましょう。