Discador Semiautomático. Objetivo: Melhorar o processo de discagem ativa para pequenas operações de callcenter, o discador suporta "n" Campanhas com listas de até 10.000 contatos. Regras para ativar o discador: 1 - Cadastrar uma campaha ou carregar uma nova lista de contatos para uma campanha. 2 - Na configuração da campanha adicionar os agentes que poderão receber contatos da lista ativa. 3 - Ativar uma campanha observando que podemos ter apenas uma campanha ativa para cada fila. 4 - O agente deve ativar a opção discador no módulo de atendimento para esta apto a receber contatos. Fluxo discador no agente. 1 - Se o agente estiver habilitado para receber contatos o sistema seleciona um registro da campanha e o marca como utilizado para o mesmo. 2 - Importa este contato e seus números e inicia a discagem selecionando o primeiro da lista. 3 - O agente deve indicar uma classificação para o registro discado, podendo se a discagem doi bem sucedida gravar o status e uma mensagem para o contato e liberar o registro recebendo um novo, ou classificar o último número discado e discar o proximo número da lista. 4 - A lista para ser encerrada deve ter todos os registros classificados, contatos que por problemas eventualmente não tenham sido classifi- cados poderão ser por meio da interface diponível para o supervisor da fila. Tabelas e fluxo no sistema. Tabelas usadas para controle de discagem. select * from pbx_campanha; -- Informações da Campanha. select * from pbx_campanha_lista; -- Informações da Lista. select * from pbx_campanha_contato; -- Informações dos contatos que compõem uma lista. select * from pbx_campanha_contato_display; -- Label para identificar informações do contatos. select * from pbx_campanha_contato_fone; -- Lista de telefones de um contato. select * from pbx_campanha_agendamento; -- Gravar agendamentos futuros. select * from pbx_campanha_audio; -- Não utilizada no momento. select * from pbx_campanha_canais_discando; -- Não utilizada no momento. select * from pbx_campanha_complemento; -- Não utilizada no momento. select * from pbx_campanha_contato_status; -- Lista de status(classificações) padrão, podem ser adicionados outros. select * from pbx_campanha_grupos; -- Não utilizada no momento. select * from pbx_campanha_modelos; -- Não utilizada no momento. select * from pbx_campanha_operacao; -- Contatos procesados quando atribuidos a um agente. select * from pbx_campanha_status; -- Status permitidos para uma campanha. select * from pbx_campanha_troncos; -- Não utilizada. select * from pbx_campanha_usuarios; -- Usuarios habilitados a receber registros da campanha. 1 -> Verifica se já existe um registro para o agente na tabela "pbx_campanha_operacao", como a atualização da tela do agente é feita por "periodic refresh" as informações são constantemente verificadas, quando o campo "cmpo_status" da "pbx_campanha_operacao" tem valor 0 indica que o agente ainda não concluiu a operação para este contato. select cmpo_id, cmp_id, list_id, cont_id, conf_id, cmp_descricao, list_nome, cont_identificador, cont_param1, cont_param2, cont_param3, cont_param4, cont_param5, disp_param1, disp_param2, disp_param3, disp_param4, disp_param5, conf_fone, lista_fones_discador, matricula, cmpo_status, carrega_fone, discagem_inicial from pbx_campanha_operacao where matricula = '$matricula' and cmpo_status = 0 2 -> Quando não existe um registro não esta disponível em "pbx_campanha_operacao" é verificado se existe uma campanha ativa para o dac e uma fila ativa, se o agente estiver registrado na campanha podera requisitar um contato, que será entao importado para a tabela "pbx_campanha_operacao". select a.cmp_id, b.list_id,d.cont_id, d.conf_id, a.cmp_descricao, b.list_nome, c.cont_identificador, c.cont_param1, c.cont_param2, c.cont_param3, c.cont_param4, c.cont_param5, coalesce(e.disp_param1, 'Param1') as disp_param1, coalesce(e.disp_param2, '-') as disp_param2, coalesce(e.disp_param3, '-') as disp_param3, coalesce(e.disp_param4, '-') as disp_param4, coalesce(e.disp_param5, '-') as disp_param5, d.conf_fone, '' as lista_fones_discador, '$matricula' as matricula, 0 as cmpo_status, 0 as carrega_fone, 0 as discagem_inicial from pbx_campanha a inner join pbx_campanha_usuarios u on u.cmp_id = a.cmp_id and u.matricula = '$matricula' inner join pbx_campanha_lista b on b.cmp_id = a.cmp_id and b.list_status = 1 inner join pbx_campanha_contato c on c.list_id = b.list_id and c.cont_id = (select min(cont_id) from pbx_campanha_contato where list_id = b.list_id and cont_discado = 0 and matricula is null and cont_status = 0) inner join pbx_campanha_contato_fone d on d.cont_id = c.cont_id and d.conf_id = (select min(conf_id) from pbx_campanha_contato_fone where cont_id = c.cont_id and conf_discado = 0 and matricula is null) inner join pbx_campanha_contato_display e on e.list_id = b.list_id where a.cmp_status = 1 and a.id_dac = '$dac'"; A função "GetDadosDiscador($dac, $idCampanha = 0)" é responsável por prover os dados do contato para os agentes logados em uma fila e registrados em uma campanha ativa.