C++ 与*nix的电话系统接口

C++ 与*nix的电话系统接口,c++,unix,cisco,tapi,C++,Unix,Cisco,Tapi,是否有人知道通过*nix中的C/C++应用程序与电话系统(比如Cisco CCM)接口的任何“标准”方式?我过去使用过MS TAPI,但这只是Windows操作系统,不想走jTAPI(Java)路线,这似乎是唯一的选择 我想监控电话系统以记录日志(这样我就知道用户何时拨打电话、接听电话等)。TAPI在这方面很在行,但我不能成为第一个不使用Windows服务器就想做类似事情的人 请注意,我需要与现有的PABX系统集成,尤其是Cisco CCM和Nortel BCM。我有两种电话标准TAPI和CST

是否有人知道通过*nix中的C/C++应用程序与电话系统(比如Cisco CCM)接口的任何“标准”方式?我过去使用过MS TAPI,但这只是Windows操作系统,不想走jTAPI(Java)路线,这似乎是唯一的选择

我想监控电话系统以记录日志(这样我就知道用户何时拨打电话、接听电话等)。TAPI在这方面很在行,但我不能成为第一个不使用Windows服务器就想做类似事情的人


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

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

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

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


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

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

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

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


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

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


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

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


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

这是一个老问题,但仍然显示在搜索结果中,因此我想我应该在这里发布我的解决方案:

我创建了一个小型bash脚本,通过telnet连接到松下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

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

我创建了一个小型bash脚本,通过telnet连接到松下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
退房,退房。