Interface com sistemas de telefonia de * nix
Pergunta
Alguém sabe de qualquer maneira 'padrão' para a interface com um sistema de telefonia (acho Cisco CCM) a partir de um aplicativo C / C ++ em * nix? Eu tenho usado MS TAPI no passado, mas este é apenas o Windows e não querem ir a rota JTAPI (Java), que parece ser a única opção no rosto dela.
Eu quero monitorar o sistema de telefone para fins de registro (por isso sei quando os usuários fizeram chamadas, chamadas recebidas, etc.). TAPI é bom neste tipo de coisa, mas eu não posso ser a primeira pessoa que quer fazer algo semelhante sem ter um servidor Windows.
Note que eu preciso para se integrar com sistemas de PABX existentes -. Nomeadamente Cisco CCM e Nortel BCM
Solução
Eu tenho experiência com dois padrões de telefonia TAPI e CSTA, tanto quanto eu sei não existe tal acordo entre fornecedores (por exemplo, Cisco, Nortel, NEC) a respeito da API padrão.
Eu recomendo a olhar para a disponibilidade de SMDR (Estação Messaging Detail Recording) na plataformas de PABX lhe são dirigidas, assumindo que nenhum controle de chamada / dispositivo é necessário. Isso permitirá que você acessar a atividade PBX como um fluxo de texto e você pode analisar os dados para outras manipulações para atender sua finalidade.
O mais provável é o formato entre os fornecedores de PBX será diferente, mas espero que isso poderia ser abstraída para que a funcionalidade do aplicativo principal é re-utilizável.
Este é provável que seja uma opção mais portátil, novamente assumindo que não há controle de chamada / dispositivo é necessário, pois você não está contando com o fornecedor fornecendo conectividade CTI em sua plataforma de escolha.
Outras dicas
Aqui está um outro voto para SMDR. Os sistemas de telefonia que eu vi todos oferecem a opção de registro de bilhetagem através de uma porta serial na caixa de telefone. Apenas capturar o texto da porta serial e analisá-lo conforme necessário.
Eu escrevi um processo servidor que captura a saída SMDR, analisa-lo e salva o resultado em um banco de dados que os nossos outros aplicativos podem usar para ver a extensão, número de telefone, a hora ea duração de cada chamada telefônica.
Esta é uma questão de idade, mas ainda aparece nos resultados da pesquisa para que eu percebi que eu postar minha solução aqui:
Eu criei um script pequeno que se conecta à Panasonic KX PBX via telnet, programado para ser executado com crontab
, e escrevi meu código do aplicativo para pegar os arquivos de log e analisá-los.
Aqui está o meu script 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