Pergunta

Eu trabalho para uma loja de software, que tem um produto discador preditivo em casa, e precisamos implementar uma solução de obedecer às listas do-not-chamada.

Basicamente, eu tenho um banco de dados com os clientes / clientes potenciais que eu preciso chamada, e outro banco de dados com os números de telefone que não pode chamar. Como o sistema é um discador preditivo, baseado no desempenho da operação, as médias de tempo e outras coisas, ele vai marcar mais ou menos chamadas por usuário do sistema registrado. Normalmente este número 'mágico' é de cerca de 3 -. 4 chamadas por agente efetuou

O repositório número de telefone para o discador preditivo é um banco de dados PostgreSQL. O discador preditivo escolher um monte de números a partir do banco de dados e enviar um comando para o PBX para discar o grupo, e em seguida, a lógica de negócios passa a transferir as chamadas válidas para os funcionários de call center, e etc (isso é irrelevante como o meu problema é antes da chamada).

Eu preciso implementar a funcionalidade de lista do-not-call. Esta lista do-not-call será fornecido para a nossa empresa por uma agência governamental, em um arquivo CSV, em uma base diária. Toda vez que eu receber um novo arquivo CSV, eu tenho que limpar a do-not-call-list de idade, e colocar o novo no lugar.

Meu primeiro pensamento para implementá-lo era fazer um processamento em lote, cruzar a Do Not Call List com a minha atual base de clientes. Mas eu acho que, dependendo do tamanho dos dois bancos de dados, o cruzamento seria muito desempenho intensivo, e às vezes não poderia ser durante a noite acabado. Eu tive esse tipo de problemas com processamento em lote antes, e não é uma coisa agradável para ver.

A segunda idéia surgiu quando eu pensei sobre como grandes instituições lidar com sistemas de alto desempenho e de alto rendimento de autorização, tais como cartão de crédito ou autenticação de usuário / autorização. Eu pensei que a criação de um serviço de autenticação para os números de lista não chamar e alterar o algoritmo do meu discador preditivo para verificar cada número contra este serviço de autorização antes de marcar seria legal.

Como eu só estou confabulando aqui, eu não tenho nenhuma idéia que a ideia é a melhor, ou se eu entendi totalmente errado e deve olhar para outra direção. Então, minha pergunta é: qual seria sua recomendação? Armazenar o arquivo não chamar CSV na memória? usar LDAP? usar MySQL? PostgreSQL? Faça a coisa processamento em lote? Ou eu estou definitivamente parafusado?

Eu sei que não sou a primeira pessoa no mundo a ter este tipo de problema, então por favor me esclareça.

Foi útil?

Solução

Seu desafio, de encontrar um número de entradas a partir de um vasto espaço de entradas possíveis, me lembra preto DNS / listas de bloqueio .

rbldnsd é um pequeno e rápido DNS daemon que é feito especialmente para servir zonas DNSBL. Este daemon foi inspirado por rbldns de Dan J. Bernstein programa encontrado no pacote djbdns. Mais rbldnsd, do Google

Tem suporte para zonas baseados em nome, para que você possa converter a lista de números para URIs ENUM de estilo - por exemplo + 1-555-4242 se torna 2.4.2.4.5.5.5.1.e164.arpa. Este é, então, entrou no arquivo de dados rbldnsd, compilado na memória e acessados ??como qualquer outro blocklist. Um meio de entrada padrão pode-chamada, ou se a entrada existir, seria dada uma entrada DoNotCall.

Você ainda tem o problema da conversão do grupo, porém, apesar de que seria um script um pouco mais simples, perfeitamente possível fazer com Perl ou AWK. Você também pode ser capaz de dividir os arquivos CSV de entrada para vários arquivos para processamento paralelo e uma fusão final.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top