与* nix的电话系统连接

时间:2008-09-17 18:37:23

标签: c++ unix cisco tapi

有没有人知道在* nix中使用C / C ++应用程序与电话系统(想想Cisco CCM)连接的任何“标准”方式?我以前使用过MS TAPI,但这只是Windows而且不想使用jTAPI(Java)路由,这似乎是面对它的唯一选择。

我想监控电话系统以便记录(所以我知道用户何时拨打电话,接听电话等)。 TAPI擅长这种事情,但我不能成为第一个想要在没有Windows服务器的情况下做类似事情的人。

请注意,我需要与现有的PABX系统集成 - 特别是Cisco CCM和Nortel BCM。

3 个答案:

答案 0 :(得分:1)

我有两个电话标准TAPI和CSTA的经验,据我所知,供应商(例如Cisco,Nortel,NEC)之间没有关于标准API的协议。

我建议在您定位的PBX平台上查看SMDR(电台信息详细记录)的可用性,假设不需要呼叫/设备控制。这将允许您以文本流的形式访问PBX活动,并且您可以解析数据以进行进一步的操作以适合您的目的。

PBX供应商之间的格式很可能会有所不同,但希望可以将其抽象出来,以便核心应用程序功能可以重复使用。

这可能是一个更便携的选项,同样假设不需要呼叫/设备控制,因为您不依赖于在您选择的平台上提供CTI连接的供应商。

答案 1 :(得分:0)

这是对SMDR的另一次投票。我见过的电话系统都提供了通过电话盒上的串口进行SMDR记录的选项。只需从串口捕获文本并根据需要进行解析。

我写了一个服务器进程,它捕获SMDR输出,解析它并将结果保存在我们其他应用程序可以用来查看每个电话的分机号码,电话号码,时间和长度的数据库中。

答案 2 :(得分:0)

这是一个老问题,但仍显示在搜索结果中,所以我想我会在这里发布我的解决方案:

我创建了一个小的bash脚本,它通过telnet连接到Panasonic KX PBX,安排它与crontab一起运行,并编写我的应用程序代码来获取日志文件并解析它们。

这是我的bash脚本:

#!/bin/sh

HOST="192.168.0.200"
PORT="2300"
USER="SMDR"
PASS="PCCSMDR"

FILE=/var/smdr/smdr-`date +%F`.log
TS=`date +"%F %T"`

echo "### ${TS}" >> $FILE

(
  echo open $HOST $PORT
  sleep 2
  echo $USER
  sleep 2
  echo $PASS
  sleep 150
  echo "quit"
) | telnet | tee -a $FILE