|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
function ConectaAmi($host = '', $porta = '', $usuario = '', $senha = '', $events = 0) {
|
|
|
|
|
$host = $host ? trim($host) : '127.0.0.1';
|
|
|
|
|
$porta = $porta ? trim($porta) : '5038';
|
|
|
|
|
$usuario = $usuario ? trim($usuario) : 'manager';
|
|
|
|
|
$senha = $senha ? trim($senha) : 'manager007';
|
|
|
|
|
$errno = '';
|
|
|
|
|
$errstr = '';
|
|
|
|
|
$timeout = 10;
|
|
|
|
|
$socket = fsockopen($host, $porta, $errno, $errstr, $timeout);
|
|
|
|
|
|
|
|
|
|
if ($socket) {
|
|
|
|
|
$actionid = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "action: login\r\n", "ConectaAmi");
|
|
|
|
|
__fwrite($socket, "username: $usuario\r\n");
|
|
|
|
|
__fwrite($socket, "secret: $senha\r\n");
|
|
|
|
|
__fwrite($socket, sprintf("events: %s\r\n", $events ? "on" : "off"));
|
|
|
|
|
__fwrite($socket, "ActionID: " . $actionid . "\r\n\r\n");
|
|
|
|
|
|
|
|
|
|
$i = 0;
|
|
|
|
|
while (!feof($socket)) {
|
|
|
|
|
$bufer = fgets($socket);
|
|
|
|
|
|
|
|
|
|
if (stristr($bufer, "Authentication accepted")) {
|
|
|
|
|
return $socket;
|
|
|
|
|
} else if (stristr($bufer, "Authentication failed")) {
|
|
|
|
|
fclose($socket);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if ($i++ > MAX_TENTATIVA_RETORNO) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ExecutaAmi($socket, $params) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
$start = 0;
|
|
|
|
|
foreach ($params as $key => $value) {
|
|
|
|
|
__fwrite($socket, "$key: $value\r\n", ($start++ ? '' : 'ExecutaAmi'));
|
|
|
|
|
}
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'ExecutaAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function LoginAgenteAmi($socket, $channel, $modoAtende, $ramal, $dac, $matricula, $penalidade) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: originate\r\n", 'LoginAgenteAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channel\r\n");
|
|
|
|
|
__fwrite($socket, "context: app-login\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $modoAtende\r\n");
|
|
|
|
|
__fwrite($socket, "priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "callerid: $ramal\r\n");
|
|
|
|
|
__fwrite($socket, "variable: DAC=$dac,AGENT=$matricula,RAMAL=$ramal,PENALIDADE=$penalidade\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'LoginAgenteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ASTERISK 1.4
|
|
|
|
|
function LogoffAgenteAmi($socket, $matricula)
|
|
|
|
|
{
|
|
|
|
|
$rand = rand(000000000,9999999999);
|
|
|
|
|
__fwrite($socket, "Action: agentlogoff\r\n", 'LogoffAgenteAmi');
|
|
|
|
|
__fwrite($socket, "agent: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "soft: false\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'LogoffAgenteAmi');
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function LogoffAgenteAmi($socket, $matricula, $ramal, $dac) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: agentlogoff\r\n", 'LogoffAgenteAmi');
|
|
|
|
|
__fwrite($socket, "agent: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "soft: false\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'LogoffAgenteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AddFilaAmi($socket, $dac, $matricula) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: queueadd\r\n", 'AddFilaAmi');
|
|
|
|
|
__fwrite($socket, "queue: $dac\r\n");
|
|
|
|
|
__fwrite($socket, "interface: Agent/$matricula\r\n");
|
|
|
|
|
__fwrite($socket, "penaly: 1\r\n");
|
|
|
|
|
__fwrite($socket, "paused: true\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'AddFilaAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RemFilaAmi($socket, $dac, $matricula, $ramal) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: queueremove\r\n", 'LogoffAgenteAmi');
|
|
|
|
|
__fwrite($socket, "queue: $dac\r\n");
|
|
|
|
|
__fwrite($socket, "interface: Local/$ramal@app-callcenter/n\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'RemFilaAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AddPausaAmi($socket, $matricula, $ramal) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: queuepause\r\n", 'AddPausaAmi');
|
|
|
|
|
// __fwrite($socket, "interface: Agent/$matricula\r\n");
|
|
|
|
|
__fwrite($socket, "interface: Local/$ramal@app-callcenter/n\r\n");
|
|
|
|
|
__fwrite($socket, "paused: true\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'AddPausaAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RemPausaAmi($socket, $matricula, $ramal) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: queuepause\r\n", 'RemPausaAmi');
|
|
|
|
|
// __fwrite($socket, "interface: Agent/$matricula\r\n");
|
|
|
|
|
__fwrite($socket, "interface: Local/$ramal@app-callcenter/n\r\n");
|
|
|
|
|
__fwrite($socket, "paused: false\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'RemPausaAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DesligarAmi($socket, $channelAgente) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: hangup\r\n", 'DesligarAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channelAgente\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'DesligarAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DiscarCallAmi($socket, $channelAgente, $matricula, $numDisc, $ramal, $contextoRamal = "padrao", $codigo = null) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Originate\r\n", 'DiscarCallAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channelAgente\r\n");
|
|
|
|
|
__fwrite($socket, "Context: $contextoRamal\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: $numDisc\r\n");
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "Callerid: $ramal\r\n");
|
|
|
|
|
//__fwrite($socket, "variable: MATRICULA=$matricula,TIPO-DISCAGEM=APLICACAO,CONTEXTORAMAL=$contextoRamal,PERMISSAO=OK\r\n");
|
|
|
|
|
if ($codigo) {
|
|
|
|
|
__fwrite($socket, "variable: RAMAL=$ramal,CONTEXTORAMAL=$contextoRamal,TIPODISCAGEM=AGENTE,CODIGOPARAM=$codigo\r\n");
|
|
|
|
|
} else {
|
|
|
|
|
__fwrite($socket, "variable: RAMAL=$ramal,CONTEXTORAMAL=$contextoRamal,TIPODISCAGEM=AGENTE\r\n");
|
|
|
|
|
}
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'DiscarCallAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DiscarDiretoAmi($socket, $channel, $numDisc, $ramal) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Originate\r\n", 'DiscarDiretoAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channel\r\n"); //Ramal local sip/1001
|
|
|
|
|
__fwrite($socket, "Context: padrao\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: $numDisc\r\n"); //numero a discar
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "Callerid: $ramal\r\n"); //Ramal local 1001
|
|
|
|
|
__fwrite($socket, "Timeout: 30000\r\n");
|
|
|
|
|
__fwrite($socket, "Variable: TIPO-DISCAGEM=APLICACAO,PERMISSAO=OK\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'DiscarDiretoAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AlarmeAmi($socket, $channel, $numDisc, $ramal, $audio = 'appsounds/alarmeapi') {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Originate\r\n", 'AlarmeAmi');
|
|
|
|
|
__fwrite($socket, "Channel: Local/$numDisc@padrao\r\n"); //Ramal local sip/1001
|
|
|
|
|
__fwrite($socket, "Application: Playback\r\n");
|
|
|
|
|
__fwrite($socket, "Data: $audio\r\n");
|
|
|
|
|
__fwrite($socket, "Context: default\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: s\r\n"); //numero a discar
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "Callerid: $ramal\r\n"); //Ramal local 1001
|
|
|
|
|
__fwrite($socket, "Timeout: 30000\r\n");
|
|
|
|
|
__fwrite($socket, "Variable: TIPO-DISCAGEM=APLICACAO,PERMISSAO=OK\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'AlarmeAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function CallbackAmi($socket, $destino, $numDisc, $ramal) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Originate\r\n", 'CallbackAmi');
|
|
|
|
|
__fwrite($socket, "Channel: Local/$numDisc@padrao\r\n"); //Nro a discar
|
|
|
|
|
__fwrite($socket, "Context: padrao\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: $destino\r\n"); // ( fila )
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "Callerid: $numDisc\r\n"); //Ramal local 1001
|
|
|
|
|
__fwrite($socket, "Timeout: 30000\r\n");
|
|
|
|
|
__fwrite($socket, "Variable: RAMAL=$ramal\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'CallbackAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function LigueGratisAmi($socket) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Originate\r\n", 'CallbackAmi');
|
|
|
|
|
__fwrite($socket, sprintf("Channel: Local/%s@padrao\r\n", GetNumeroLigueGratis())); //Nro a discar
|
|
|
|
|
__fwrite($socket, "Context: ext-anuncios\r\n");
|
|
|
|
|
__fwrite($socket, sprintf("Exten: %s\r\n", GetAnuncioLigueGratis())); // ( fila )
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, sprintf("Callerid: %s\r\n", GetNumeroLigueGratis())); //Ramal local 1001
|
|
|
|
|
__fwrite($socket, "Timeout: 30000\r\n");
|
|
|
|
|
__fwrite($socket, sprintf("Variable: RAMAL=%s,LIGUE-ME=%s\r\n", GetRamalLigueGratis(), GetNumeroLigueGratis()));
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'CallbackAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TransferirAmi($socket, $channelTransf, $numDisc) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: redirect\r\n", 'TransferirAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "Context: ext-transferencia\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: $numDisc\r\n");
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'TransferirAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TransferirPesquisaAmi($socket, $channelTransf, $idPesqisa, $matricula = '') {
|
|
|
|
|
if ($matricula) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Setvar\r\n", 'SetVarPesquisa');
|
|
|
|
|
__fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "variable: PESQUISA_MATRICULA\r\n");
|
|
|
|
|
__fwrite($socket, "value: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
VerificaRetornoSocket($socket, "Success", "Error", 'SetVarPesquisa');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: redirect\r\n", 'TransferirPesquisaAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "Context: $idPesqisa\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: s\r\n");
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'TransferirPesquisaAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IncluiAgenteAmi($socket) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: command\r\n", 'IncluiAgenteAmi');
|
|
|
|
|
__fwrite($socket, "command: module reload app_agent_pool.so\r\n");
|
|
|
|
|
__fwrite($socket, "Context: ext-transferencia\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'IncluiAgenteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TesteUrlAmi($socket) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: ping\r\n", 'TesteUrlAmi');
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "pong", "Error", 'TesteUrlAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MonitorAgentsAmi() {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action:agents\r\n", 'MonitorAgentsAmi');
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'MonitorAgentsAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IntercalarAmi($socket, $canalIntercalar, $ramalIntercalar, $rmalDestinoIntercalar) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: originate\r\n", 'IntercalarAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $canalIntercalar\r\n");
|
|
|
|
|
__fwrite($socket, "Context: call-intercala\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: s\r\n");
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "CallerID: $ramalIntercalar\r\n");
|
|
|
|
|
__fwrite($socket, "variable: RAMAL=$ramalIntercalar,DESTINO=$rmalDestinoIntercalar\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'IntercalarAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//function MonitorarAmi($socket, $canalIntercalar, $ramalIntercalar, $rmalDestinoIntercalar)
|
|
|
|
|
function MonitorarAmi($socket, $params) {
|
|
|
|
|
//
|
|
|
|
|
// Chaves array params:
|
|
|
|
|
// "matricula_supervisor", "matricula_monitorado", "dac_monitorado", "setido_chamada", "nivel_lgpd_supevisor", "nivel_lgpd_monitorado", "uniqueid_monitorado",
|
|
|
|
|
// "ramal_supervisor", "ramal_monitorado", "canal_monitorado", "canal_agente", "canal_supervisor" , "ramal_supervisor"
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
$varLgpd = $params["var_lgpd"];
|
|
|
|
|
if ((int)$varLgpd === 0) {
|
|
|
|
|
|
|
|
|
|
$canalIntercalar = $params['canal_supervisor'];
|
|
|
|
|
$ramalIntercalar = $params['ramal_supervisor'];
|
|
|
|
|
$rmalDestinoIntercalar = $params['ramal_monitorado'];
|
|
|
|
|
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: originate\r\n", 'MonitorarAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $canalIntercalar\r\n");
|
|
|
|
|
__fwrite($socket, "Context: call-monitora\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: s\r\n");
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "CallerID: $ramalIntercalar\r\n");
|
|
|
|
|
__fwrite($socket, "variable: RAMAL=$ramalIntercalar,DESTINO=$rmalDestinoIntercalar,LGPD_VAR=0\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'MonitorarAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sentidoChamada = (strtoupper($params['setido_chamada']) == 'E' ? 'recebida' : 'originada' );
|
|
|
|
|
$canalAgente = ($params['setido_chamada'] == 'E') ? $params['canal_monitorado'] : $params['canal_agente'];
|
|
|
|
|
$paramLgpd = GetParamLgpd($varLgpd);
|
|
|
|
|
|
|
|
|
|
$paramLgpdContent = $paramLgpd['lgpdm_content'];
|
|
|
|
|
$nvSuper = isset($paramLgpdContent['nivel_lgpd_supevisor']) ? $paramLgpdContent['nivel_lgpd_supevisor'] : 0;
|
|
|
|
|
$nvMonitorado = isset($paramLgpdContent['nivel_lgpd_monitorado']) ? $paramLgpdContent['nivel_lgpd_monitorado'] : 0;
|
|
|
|
|
$permiteSupervisao = $nvSuper > 0 ? 'SIM' : 'NAO';
|
|
|
|
|
$enviaAviso = ($nvSuper >= $nvMonitorado) ? 'SIM' : 'NAO';
|
|
|
|
|
|
|
|
|
|
__fwrite($socket, "Action: originate\r\n", 'MonitorarAmi');
|
|
|
|
|
__fwrite($socket, sprintf("Channel: %s\r\n", $params['canal_supervisor']));
|
|
|
|
|
__fwrite($socket, "Exten: s\r\n");
|
|
|
|
|
__fwrite($socket, "Context: call-intercala-lgpd-verifica\r\n");
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, sprintf("CallerID: %s\r\n", $params['ramal_supervisor']));
|
|
|
|
|
//__fwrite($socket, sprintf("variable: RAMAL=%s|DESTINO=%s|LGPD_VAR=%s\r\n", $params['ramal_supervisor'], $params['ramal_monitorado'], $varLgpd));
|
|
|
|
|
__fwrite($socket, sprintf("Variable: RAMAL_AGENTE=%s,CANAL_AGENTE=%s,LGPD=%s,FEATURES=%s,ENVIA_AVISO_MONITORADO=%s,LGPD_VAR=%s\r\n", $params['ramal_monitorado'], $canalAgente, $permiteSupervisao, $sentidoChamada, $enviaAviso, $varLgpd));
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'MonitorarAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
;CHAMADA ORIGINADA - UTILIZAR O CANAL DO AGENTE (campo: canal_agente da pbx_supervisor_agentes)
|
|
|
|
|
Action: Originate
|
|
|
|
|
Channel: SIP/8517
|
|
|
|
|
Exten: s
|
|
|
|
|
Context: call-intercala-lgpd-verifica
|
|
|
|
|
Priority: 1
|
|
|
|
|
Callerid: 8517
|
|
|
|
|
Variable: RAMAL_AGENTE=8511|CANAL_AGENTE=SIP/8511-000000a3|LGPD=SIM|FEATURES=originada
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;CHAMADA RECEBIDA - UTILIZAR O CANAL DO CLIENTE (campo: canal da pbx_supervisor_agentes)
|
|
|
|
|
Action: Originate
|
|
|
|
|
Channel: SIP/8517 ;ramal intercala - supervisor
|
|
|
|
|
Exten: s
|
|
|
|
|
Context: call-intercala-lgpd-verifica
|
|
|
|
|
Priority: 1
|
|
|
|
|
Callerid: 8517 ; ramal intercala - supervisor
|
|
|
|
|
Variable: RAMAL_AGENTE=8515|CANAL_AGENTE=SIP/LINHA_E1-00000098|LGPD=SIM|FEATURES=recebida
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __MonitorarAmi($socket, $canalIntercalar, $ramalIntercalar, $rmalDestinoIntercalar) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: originate\r\n", 'MonitorarAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $canalIntercalar\r\n");
|
|
|
|
|
__fwrite($socket, "Context: call-monitora\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: s\r\n");
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "CallerID: $ramalIntercalar\r\n");
|
|
|
|
|
__fwrite($socket, "variable: RAMAL=$ramalIntercalar|DESTINO=$rmalDestinoIntercalar\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'MonitorarAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ReloadUraAmi($socket) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: command\r\n", 'ReloadUraAmi');
|
|
|
|
|
__fwrite($socket, "command: dialplan reload\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'ReloadUraAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ReloadFilaAmi($socket) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: command\r\n", 'ReloadFilaAmi');
|
|
|
|
|
__fwrite($socket, "command: module reload app_queue.so\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'ReloadFilaAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IniciaGravacaoAmi($socket, $channelTransf, $fileAudio, $fileAudioTipo) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: monitor\r\n", 'IniciaGravacaoAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "file: $fileAudio\r\n");
|
|
|
|
|
__fwrite($socket, "format: $fileAudioTipo\r\n");
|
|
|
|
|
__fwrite($socket, "mix: 1\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'IniciaGravacaoAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function FinalizaGravacaoAmi($socket, $channelTransf) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: stopmonitor\r\n", 'FinalizaGravacaoAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'FinalizaGravacaoAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IniciaPausaGravacaoAmi($socket, $channelTransf) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: pausemonitor\r\n", 'IniciaPausaGravacaoAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'IniciaPausaGravacaoAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function FinalizaPausaGravacaoAmi($socket, $channelTransf) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: unpausemonitor\r\n", 'FinalizaPausaGravacaoAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'FinalizaPausaGravacaoAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MuteSetVarAmi($socket, $channelAgente) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Setvar\r\n", 'MuteSetVarAmi');
|
|
|
|
|
__fwrite($socket, "Channel: $channelAgente\r\n");
|
|
|
|
|
__fwrite($socket, "variable: MUTE\r\n");
|
|
|
|
|
__fwrite($socket, "value: V\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'MuteSetVarAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MuteAddCanaisAmi($socket, $ramal, $matricula) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: originate\r\n", 'MuteAddCanaisAmi');
|
|
|
|
|
__fwrite($socket, "Channel: Local/s@app-atende\r\n");
|
|
|
|
|
__fwrite($socket, "context: app-mute\r\n");
|
|
|
|
|
__fwrite($socket, "exten: s\r\n");
|
|
|
|
|
__fwrite($socket, "priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "variable: RAMAL=$ramal,AGENTE=$matricula\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'MuteAddCanaisAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MuteAddAgenteAmi($socket, $salaConferencia) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: meetmemute\r\n", 'MuteAddAgenteAmi');
|
|
|
|
|
__fwrite($socket, "meetme: $salaConferencia\r\n");
|
|
|
|
|
__fwrite($socket, "usernum: 2\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'MuteAddAgenteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MuteRemAgenteAmi($socket, $salaConferencia) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: meetmeunmute\r\n", 'MuteRemAgenteAmi');
|
|
|
|
|
__fwrite($socket, "meetme: $salaConferencia\r\n");
|
|
|
|
|
__fwrite($socket, "usernum: 2\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'MuteRemAgenteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PenduloSetVarAmi($socket, $channelAgente) {
|
|
|
|
|
return true;
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Setvar\r\n", 'PenduloSetVarAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelAgente\r\n");
|
|
|
|
|
__fwrite($socket, "variable: ESPERA\r\n");
|
|
|
|
|
__fwrite($socket, "value: V\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'PenduloSetVarAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//function PenduloAddCanaisAmi($socket, $ramal, $matricula, $channelTransf, $numDisc, $channelAgente, $automatico = false) {
|
|
|
|
|
// $rand = rand(000000000, 9999999999);
|
|
|
|
|
// __fwrite($socket, "Action: redirect\r\n", 'PenduloAddCanaisAmi');
|
|
|
|
|
// __fwrite($socket, "channel: $channelTransf\r\n");
|
|
|
|
|
// if (!$automatico) {
|
|
|
|
|
// __fwrite($socket, "extrachannel: $channelAgente\r\n");
|
|
|
|
|
// }
|
|
|
|
|
// __fwrite($socket, "context: app-espera\r\n");
|
|
|
|
|
// __fwrite($socket, "exten: $matricula$numDisc\r\n");
|
|
|
|
|
// __fwrite($socket, "priority: 1\r\n");
|
|
|
|
|
// __fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
// $ret = VerificaRetornoSocket($socket, "Success", "Error", 'PenduloAddCanaisAmi');
|
|
|
|
|
// return $ret;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
function PenduloAddCanaisAmi($socket, $ramal, $matricula, $channelTransf, $numDisc, $channelAgente, $automatico = false) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Atxfer\r\n", 'PenduloAddCanaisAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelAgente\r\n");
|
|
|
|
|
__fwrite($socket, "context: app-consulta\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $numDisc\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'PenduloAddCanaisAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PenduloRemCanaisAmi($socket, $ramal, $matricula, $channelTransf) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: redirect\r\n", 'PenduloRemCanaisAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "context: app-atendentes\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'PenduloRemCanaisAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PenduloAddMuteAmi($socket, $channelMute, $matricula) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Redirect\r\n", 'PenduloAddMuteAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelMute\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "context: ext-app-espera\r\n");
|
|
|
|
|
__fwrite($socket, "priority: agente\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'PenduloAddMuteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PenduloRemMuteAmi($socket, $channelMute, $matricula) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Redirect\r\n", 'PenduloRemMuteAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelMute\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "context: ext-app-espera\r\n");
|
|
|
|
|
__fwrite($socket, "priority: cliente\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'PenduloRemMuteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TrConsultaSetVarAmi($socket, $channelAgente) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Setvar\r\n", 'TrConsultaSetVarAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelAgente\r\n");
|
|
|
|
|
__fwrite($socket, "variable: TRANSFER\r\n");
|
|
|
|
|
__fwrite($socket, "value: V\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'TrConsultaSetVarAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TrConsultaEsperaAmi($socket, $ramal, $matricula, $numDisc, $contextoRamal) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: originate\r\n", 'TrConsultaEsperaAmi');
|
|
|
|
|
__fwrite($socket, "channel: Local/$ramal@app-callcenter/n\r\n");
|
|
|
|
|
__fwrite($socket, "context: app-transfere\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $matricula$numDisc\r\n");
|
|
|
|
|
__fwrite($socket, "priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "callerid: $ramal\r\n");
|
|
|
|
|
__fwrite($socket, "variable: CONSULTA=OK\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'TrConsultaEsperaAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TrConsultaTransfereAmi($socket, $channelTransfConsulta, $matricula, $channelAgente) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Redirect\r\n", 'TrConsultaTransfereAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelTransfConsulta\r\n");
|
|
|
|
|
__fwrite($socket, "context: app-transfere\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "priority: transfere\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'TrConsultaTransfereAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//function TrConsultaTransfereAbortaAmi($socket, $channelAgente, $matricula) {
|
|
|
|
|
// $rand = rand(000000000, 9999999999);
|
|
|
|
|
// __fwrite($socket, "Action: Redirect\r\n", 'TrConsultaTransfereAbortaAmi');
|
|
|
|
|
// __fwrite($socket, "channel: $channelAgente\r\n");
|
|
|
|
|
// __fwrite($socket, "context: app-transfere\r\n");
|
|
|
|
|
// __fwrite($socket, "exten: $matricula\r\n");
|
|
|
|
|
// __fwrite($socket, "priority: transfere\r\n");
|
|
|
|
|
// __fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
// $ret = VerificaRetornoSocket($socket, "Success", "Error", 'TrConsultaTransfereAbortaAmi');
|
|
|
|
|
// return $ret;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
function TrConsultaTransfereAbortaAmi($socket, $channelAgente, $matricula) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: CancelAtxfer\r\n", 'TrConsultaTransfereAbortaAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelAgente\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'TrConsultaTransfereAbortaAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TrConsultaLiberaAgenteAmi($socket, $channelTransf) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Redirect\r\n", 'TrConsultaLiberaAgenteAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "exten: transfer\r\n");
|
|
|
|
|
__fwrite($socket, "context: ext-app-transfer\r\n");
|
|
|
|
|
__fwrite($socket, "priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'TrConsultaLiberaAgenteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TrConsultaConferenciaAmi($socket, $channelTransfConsulta, $matricula) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Redirect\r\n", 'TrConsultaConferenciaAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelTransfConsulta\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "context: ext-app-transfer\r\n");
|
|
|
|
|
__fwrite($socket, "priority: conferencia\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'TrConsultaConferenciaAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetVarAmi($socket, $channelTransf, $ramal, $channelAgente, $matricula) {
|
|
|
|
|
// $rand = rand(000000000, 9999999999);
|
|
|
|
|
// __fwrite($socket, "Action: Setvar\r\n", 'SetVarAmi');
|
|
|
|
|
// __fwrite($socket, "channel: $channelTransf\r\n");
|
|
|
|
|
// __fwrite($socket, "variable: CONSULTANDO\r\n");
|
|
|
|
|
// __fwrite($socket, "value: SIM\r\n");
|
|
|
|
|
// __fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
// $ret = VerificaRetornoSocket($socket, "Success", "Error", 'SetVarAmi-1');
|
|
|
|
|
// $ret = ($ret == "ok");
|
|
|
|
|
// if ($ret) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Setvar\r\n");
|
|
|
|
|
__fwrite($socket, "channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "variable: CALLERID(NUM)\r\n");
|
|
|
|
|
__fwrite($socket, "value: $ramal\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
// $ret = VerificaRetornoSocket($socket, "Success", "Error", 'SetVarAmi-2');
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// if ($ret) {
|
|
|
|
|
// $rand = rand(000000000, 9999999999);
|
|
|
|
|
// __fwrite($socket, "Action: Setvar\r\n", 'SetVarAmi');
|
|
|
|
|
// __fwrite($socket, "channel: $channelAgente\r\n");
|
|
|
|
|
// __fwrite($socket, "variable: MATRICULA-DESTINO\r\n");
|
|
|
|
|
// __fwrite($socket, "value: $matricula\r\n");
|
|
|
|
|
// __fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
// $ret = VerificaRetornoSocket($socket, "Success", "Error", 'SetVarAmi-2');
|
|
|
|
|
// }
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ExecutaAgtAmi($socket, $cmdAmi) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
$var = '';
|
|
|
|
|
$start = 0;
|
|
|
|
|
foreach ($cmdAmi as $value) {
|
|
|
|
|
$var = trim($value);
|
|
|
|
|
$var = "$var\r\n";
|
|
|
|
|
__fwrite($socket, $var, ($start++ ? '' : 'ExecutaAgtAmi'));
|
|
|
|
|
}
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error", 'ExecutaAgtAmi');
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TrMuteClienteAmi($socket, $channelTransf, $matricula) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Redirect\r\n", 'TrMuteClienteAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "context: app-mute\r\n");
|
|
|
|
|
__fwrite($socket, "priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'TrMuteClienteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AlertaAgtAmi($socket, $channel, $ramalLogado, $audio = 'appsounds/chamada_nao_classificada') {
|
|
|
|
|
/*
|
|
|
|
|
* Se atendimento manual use channel do ramal do agente(SIP/8285), atumatico
|
|
|
|
|
* use o canal do agente(Agent/1000).
|
|
|
|
|
*/
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Originate\r\n", 'AlertaAgtAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channel\r\n");
|
|
|
|
|
__fwrite($socket, "Application: Playback\r\n");
|
|
|
|
|
__fwrite($socket, "Data: $audio\r\n");
|
|
|
|
|
__fwrite($socket, "Callerid: $ramalLogado\r\n");
|
|
|
|
|
__fwrite($socket, "Variable: AVISO=OK\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'AlertaAgtAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TrMuteAtendenteAmi($socket, $ramal, $matricula) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: originate\r\n", 'TrMuteAtendenteAmi');
|
|
|
|
|
__fwrite($socket, "channel: Agent/$matricula\r\n");
|
|
|
|
|
__fwrite($socket, "context: app-mute\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "priority: sala\r\n");
|
|
|
|
|
__fwrite($socket, "callerid: $ramal\r\n");
|
|
|
|
|
__fwrite($socket, "variable: MATRICULA=$matricula,OPTS=m\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'TrMuteAtendenteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function TrRemMuteAmi($socket, $channelTransf, $matricula) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "Action: Redirect\r\n", 'TrRemMuteAmi');
|
|
|
|
|
__fwrite($socket, "channel: $channelTransf\r\n");
|
|
|
|
|
__fwrite($socket, "exten: $matricula\r\n");
|
|
|
|
|
__fwrite($socket, "context: app-atendentes\r\n");
|
|
|
|
|
__fwrite($socket, "priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'TrRemMuteAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function VerificaRetornoSocket($socket, $sucess, $erro, $function = '') {
|
|
|
|
|
__fwrite(null, '', "VerificaRetornoSocket: $function", true);
|
|
|
|
|
$i = 0;
|
|
|
|
|
while (!feof($socket)) {
|
|
|
|
|
$bufer = trim(@fgets($socket));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Envia para o log.
|
|
|
|
|
*/
|
|
|
|
|
if ($bufer) {
|
|
|
|
|
__fwrite(null, $bufer . "\n", '', true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (stristr($bufer, $sucess)) {
|
|
|
|
|
return "ok";
|
|
|
|
|
} else if (stristr($bufer, $erro)) {
|
|
|
|
|
return 'Error';
|
|
|
|
|
} else if (stristr($bufer, "--END COMMAND--")) {
|
|
|
|
|
return "ok";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($i++ > MAX_TENTATIVA_RETORNO)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 'Error';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AnalisaRetornoSocket($socket) {
|
|
|
|
|
$i = 0;
|
|
|
|
|
while (!feof($socket)) {
|
|
|
|
|
$bufer = @fgets($socket);
|
|
|
|
|
echo $bufer;
|
|
|
|
|
flush();
|
|
|
|
|
$i++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DesconectaAmi($socket) {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
__fwrite($socket, "action: logoff\r\n", 'DesconectaAmi');
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
fclose($socket);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function InfoRamalAmi($socket, $ramal) {
|
|
|
|
|
$infoRamal = array('direcao' => '', 'status' => 'LIVRE', 'duracao' => '00:00:00', 'numero' => '');
|
|
|
|
|
$params = array('action' => 'command', 'command' => 'core show channels verbose');
|
|
|
|
|
$result = GetAmi($socket, $params);
|
|
|
|
|
$map = array('channel' => array(0, 21), 'context' => array(21, 21), 'extension' => array(42, 17), 'prio' => array(59, 5), 'state' => array(64, 8), 'application' => array(72, 13), 'data' => array(85, 26), 'callerid' => array(111, 16), 'duration' => array(127, 9), 'accountcode' => array(136, 12), 'bridgedto' => array(148, 16));
|
|
|
|
|
$linhas = array();
|
|
|
|
|
$start = 0;
|
|
|
|
|
foreach ($result as $line) {
|
|
|
|
|
if ($start) {
|
|
|
|
|
if (stripos($line, "active channels") !== false) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
$linha = array();
|
|
|
|
|
foreach ($map as $key => $pos) {
|
|
|
|
|
$linha[$key] = trim(substr($line, $pos[0], $pos[1]));
|
|
|
|
|
}
|
|
|
|
|
$linhas[] = $linha;
|
|
|
|
|
}
|
|
|
|
|
$start = $start || ((stripos($line, "Channel") !== false) && (stripos($line, "Extension") !== false));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!count($linhas)) {
|
|
|
|
|
return $infoRamal;
|
|
|
|
|
}
|
|
|
|
|
$info = false;
|
|
|
|
|
$ocupado = false;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Identificando o ramal;
|
|
|
|
|
*/
|
|
|
|
|
foreach ($linhas as $linha) {
|
|
|
|
|
if ($ramal == $linha['callerid']) {
|
|
|
|
|
$status = strtoupper(trim($linha['state']));
|
|
|
|
|
$infoRamal['direcao'] = $linha['application'] == 'Dial' ? 'S' : 'E';
|
|
|
|
|
$infoRamal['status'] = $status == 'UP' ? 'OCUPADO' : 'CHAMANDO';
|
|
|
|
|
$infoRamal['duracao'] = $linha['duration'];
|
|
|
|
|
$infoRamal['ponte'] = $linha['bridgedto'];
|
|
|
|
|
$infoRamal['dados'] = $linha['data'];
|
|
|
|
|
$ocupado = $status == 'UP';
|
|
|
|
|
$info = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Ramal n<EFBFBD>o esta setado retorna default;
|
|
|
|
|
*/
|
|
|
|
|
if ($info === false) {
|
|
|
|
|
return $infoRamal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Identificando o ramal;
|
|
|
|
|
*/
|
|
|
|
|
foreach ($linhas as $linha) {
|
|
|
|
|
/*
|
|
|
|
|
* Informacoes do ramal
|
|
|
|
|
*/
|
|
|
|
|
$entrada = $infoRamal['direcao'] == 'E';
|
|
|
|
|
$ponte = trim($infoRamal['ponte']);
|
|
|
|
|
$dataRamal = trim($infoRamal['dados']);
|
|
|
|
|
/*
|
|
|
|
|
* Informa<EFBFBD><EFBFBD>es do canal corrente;
|
|
|
|
|
*/
|
|
|
|
|
$canal = trim($linha['channel']);
|
|
|
|
|
$data = trim($linha['data']);
|
|
|
|
|
$numero = trim($linha['callerid']);
|
|
|
|
|
|
|
|
|
|
if ($ocupado && ($ponte == $canal)) {
|
|
|
|
|
$infoRamal['numero'] = $numero;
|
|
|
|
|
break;
|
|
|
|
|
} else if (!$entrada && (strpos($dataRamal, $numero) !== false)) {
|
|
|
|
|
$infoRamal['numero'] = $numero;
|
|
|
|
|
} else if ($entrada && (strpos($data, $ramal) !== false)) {
|
|
|
|
|
$infoRamal['numero'] = $numero;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return array_slice($infoRamal, 0, 4, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function EnviaSmsAmi($socket, $channel, $destino, $texto) {
|
|
|
|
|
/*
|
|
|
|
|
Action: Originate
|
|
|
|
|
Channel: Local/100@app-envia-sms
|
|
|
|
|
Async: true
|
|
|
|
|
Variable: SMS_TRONCO_ENVIO=b1c0|SMS_DESTINO=6599893984|SMS_MENSAGEM=TESTE API SIMPLES IP SMS|SMS_SIP_ID=09876
|
|
|
|
|
ActionID:09876
|
|
|
|
|
*/
|
|
|
|
|
//$rand = rand(000000000,9999999999);
|
|
|
|
|
$rand = time();
|
|
|
|
|
$GLOBALS["SSrand"] = $rand;
|
|
|
|
|
__fwrite($socket, "Action: Originate\r\n", 'EnviaSmsAmi');
|
|
|
|
|
__fwrite($socket, "Channel: Local/100@app-envia-sms\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: s\r\n");
|
|
|
|
|
__fwrite($socket, "Context: app-atende-sms\r\n");
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
__fwrite($socket, "Timeout: 60000\r\n");
|
|
|
|
|
__fwrite($socket, "Variable: SMS_TRONCO_ENVIO=$channel,SMS_DESTINO=$destino,SMS_MENSAGEM=$texto,SMS_SIP_ID=$rand\r\n");
|
|
|
|
|
__fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error", 'EnviaSmsAmi');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAmi($socket, $params, $end = '--END COMMAND--') {
|
|
|
|
|
$rand = rand(000000000, 9999999999);
|
|
|
|
|
$start = 0;
|
|
|
|
|
$write = 0;
|
|
|
|
|
|
|
|
|
|
foreach ($params as $key => $value) {
|
|
|
|
|
$write = fwrite($socket, "$key: $value\r\n");
|
|
|
|
|
if (!$write)
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fwrite($socket, "ActionID: $rand\r\n\r\n");
|
|
|
|
|
if (!$write)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
$result = array();
|
|
|
|
|
while (!feof($socket)) {
|
|
|
|
|
$line = trim(fgets($socket));
|
|
|
|
|
if ($line)
|
|
|
|
|
$result[] = $line;
|
|
|
|
|
if (stripos($line, $end) !== false)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __fwrite($socket, $value, $function = '', $logOnly = false) {
|
|
|
|
|
global $debugAmi, $errorMode;
|
|
|
|
|
|
|
|
|
|
if (!$logOnly) {
|
|
|
|
|
$wSck = fwrite($socket, $value);
|
|
|
|
|
if ($errorMode && !$wSck) {
|
|
|
|
|
GeraExcept("N<EFBFBD>o foi poss<EFBFBD>vel gravar no socket!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($debugAmi) {
|
|
|
|
|
$login = "anonimo";
|
|
|
|
|
if (function_exists('IsUserConnect')) {
|
|
|
|
|
$login = IsUserConnect() ? $_SESSION["SSlogin"] : "anonimo";
|
|
|
|
|
}
|
|
|
|
|
$path = "/var/log/asterisk/log_ami_$login.log";
|
|
|
|
|
if ($function) {
|
|
|
|
|
GravaLog(sprintf("\n[%s-%s]\n", $function, date('Y-m-d H:i:s')), $path);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($value) {
|
|
|
|
|
GravaLog($value, $path);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DesligaTodasAmi($socket, $ramal) {
|
|
|
|
|
$params = array('action' => 'command', 'command' => 'core show channels verbose');
|
|
|
|
|
$result = GetAmi($socket, $params);
|
|
|
|
|
// $map = array('channel' => array(0,21),'context' => array(21,21),'extension' => array(42,17),'prio' => array(59,5),'state' => array(64,8),'application' => array(72,13),'data' => array(85,26),'callerid' => array(111,16),'duration' => array(127,9),'accountcode' => array(136,12),'bridgedto' => array(148,16));
|
|
|
|
|
$map = array('channel' => array(0, 21), 'context' => array(21, 21));
|
|
|
|
|
$linhas = array();
|
|
|
|
|
$start = 0;
|
|
|
|
|
foreach ($result as $line) {
|
|
|
|
|
if ($start) {
|
|
|
|
|
/*
|
|
|
|
|
* Active channels indica o final do arquivo.
|
|
|
|
|
*/
|
|
|
|
|
if (stripos($line, "active channels") !== false) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
$linha = array();
|
|
|
|
|
foreach ($map as $key => $pos) {
|
|
|
|
|
$linha[$key] = trim(substr($line, $pos[0], $pos[1]));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se o contexto é de monitoria ou itercalação.
|
|
|
|
|
*/
|
|
|
|
|
$context = trim($linha['context']);
|
|
|
|
|
if ((stripos($context, 'call-monitora') !== false) || (stripos($context, 'call-intercala') !== false)) {
|
|
|
|
|
/*
|
|
|
|
|
* Se o channel corresponder ao ramal
|
|
|
|
|
*/
|
|
|
|
|
$channel = trim($linha['channel']);
|
|
|
|
|
if (stripos($channel, $ramal) !== false) {
|
|
|
|
|
DesligarAmi($socket, $channel);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* Identifica a linha de cabeçalio, após esta linha deve començar a ler os dados,
|
|
|
|
|
* start é modificado para true.
|
|
|
|
|
*/
|
|
|
|
|
$start = $start || ((stripos($line, "Channel") !== false) && (stripos($line, "Extension") !== false));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|