我想监视电话系统以进行记录"/>

关于C#:与* nix的电话系统接口

关于C#:与* nix的电话系统接口

Interfacing with telephony systems from *nix

有人知道通过* nix中的C / C应用程序以任何"标准"方式与电话系统(例如Cisco CCM)交互吗?我过去曾经使用过MS TAPI,但这只是Windows,并且不想走jTAPI(Java)路线,这似乎是它的唯一选择。

我想监视电话系统以进行记录(因此我知道用户何时拨打电话,接听电话等)。 TAPI在这种事情上很擅长,但是我不能成为第一个想要在没有Windows服务器的情况下执行类似操作的人。

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


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

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

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

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


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

我创建了一个小的bash脚本,该脚本通过telnet连接到Panasonic KX PBX,计划将其与crontab一起运行,并编写了我的应用程序代码以获取日志文件并进行解析。

这是我的bash脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/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

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

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


推荐阅读