You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
5.2 KiB

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.