PABX da Simples IP
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.

77 lines
5.2 KiB

Discador Semiautom<EFBFBD>tico.
Objetivo:
Melhorar o processo de discagem ativa para pequenas opera<EFBFBD><EFBFBD>es de callcenter, o discador suporta "n" Campanhas com listas de at<EFBFBD> 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<EFBFBD><EFBFBD>o da campanha adicionar os agentes que poder<EFBFBD>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<EFBFBD><EFBFBD>o discador no m<EFBFBD>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<EFBFBD>meros e inicia a discagem selecionando o primeiro da lista.
3 - O agente deve indicar uma classifica<EFBFBD><EFBFBD>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 <EFBFBD>ltimo n<EFBFBD>mero discado e discar o proximo n<EFBFBD>mero da lista.
4 - A lista para ser encerrada deve ter todos os registros classificados, contatos que por problemas eventualmente n<EFBFBD>o tenham sido classifi-
cados poder<EFBFBD>o ser por meio da interface dipon<EFBFBD>vel para o supervisor da fila.
Tabelas e fluxo no sistema.
Tabelas usadas para controle de discagem.
select * from pbx_campanha; -- Informa<EFBFBD><EFBFBD>es da Campanha.
select * from pbx_campanha_lista; -- Informa<EFBFBD><EFBFBD>es da Lista.
select * from pbx_campanha_contato; -- Informa<EFBFBD><EFBFBD>es dos contatos que comp<EFBFBD>em uma lista.
select * from pbx_campanha_contato_display; -- Label para identificar informa<EFBFBD><EFBFBD>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<EFBFBD>o utilizada no momento.
select * from pbx_campanha_canais_discando; -- N<EFBFBD>o utilizada no momento.
select * from pbx_campanha_complemento; -- N<EFBFBD>o utilizada no momento.
select * from pbx_campanha_contato_status; -- Lista de status(classifica<EFBFBD><EFBFBD>es) padr<EFBFBD>o, podem ser adicionados outros.
select * from pbx_campanha_grupos; -- N<EFBFBD>o utilizada no momento.
select * from pbx_campanha_modelos; -- N<EFBFBD>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<EFBFBD>o utilizada.
select * from pbx_campanha_usuarios; -- Usuarios habilitados a receber registros da campanha.
1 -> Verifica se j<EFBFBD> existe um registro para o agente na tabela "pbx_campanha_operacao", como a atualiza<EFBFBD><EFBFBD>o da tela do agente <EFBFBD> feita por "periodic refresh"
as informa<EFBFBD><EFBFBD>es s<EFBFBD>o constantemente verificadas, quando o campo "cmpo_status" da "pbx_campanha_operacao" tem valor 0 indica que o agente ainda n<EFBFBD>o concluiu a
opera<EFBFBD><EFBFBD>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<EFBFBD>o existe um registro n<EFBFBD>o esta dispon<EFBFBD>vel em "pbx_campanha_operacao" <EFBFBD> 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<EFBFBD> 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<EFBFBD><EFBFBD>o "GetDadosDiscador($dac, $idCampanha = 0)" <EFBFBD> respons<EFBFBD>vel por prover os dados do contato para os agentes logados em uma fila e registrados em uma campanha ativa.