1

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

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

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

4

3 回答 3

1

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

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

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

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

于 2008-09-17T20:16:55.343 回答
0

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

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

于 2008-09-18T20:01:34.407 回答
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
于 2016-10-31T18:39:59.663 回答