|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
/* * ************************************************************************************
|
|
|
|
|
*
|
|
|
|
|
* TRANSBORDO AUTOMATICO
|
|
|
|
|
* Autores
|
|
|
|
|
* Amarildo Pereira/Alan Pablo
|
|
|
|
|
*
|
|
|
|
|
* *************************************************************************************
|
|
|
|
|
* Definicoes do Projeto
|
|
|
|
|
* Nome: Transbordo Automatico
|
|
|
|
|
* Data Incio: 23/02/2012
|
|
|
|
|
* Equipe: Amarildo Pereira, Alan Pablo
|
|
|
|
|
* Descri<EFBFBD><EFBFBD>o:
|
|
|
|
|
* O objetivo do sistema <EFBFBD> monitorar "Dacs" que possuam filas de atendimento
|
|
|
|
|
* realizando a transferencia(transbordo) dessas chamadas para outro Dac pre-
|
|
|
|
|
* viamente cadastrado.
|
|
|
|
|
* Regras:
|
|
|
|
|
* O transbordo sera realizado mediante a observacao das seguintes regras:
|
|
|
|
|
* 1 -> Dever existir chamadas em fila no Dac monitorado. Chamadas em Fila > 0.
|
|
|
|
|
* 2 -> Chamadas em espera for maior que o numero de agentes livres no dac monitorado.
|
|
|
|
|
* 3 -> Nao pode exitir fila no Dac de transbordo. Chamadas em Fila no Transbordo = 0.
|
|
|
|
|
* 4 -> Pelo menos um agente disponivel no dac de transbordo. Agentes transbordo > 0.
|
|
|
|
|
* *************************************************************************************
|
|
|
|
|
* Copyright (c) 2012, Simples IP
|
|
|
|
|
* ************************************************************************************ */
|
|
|
|
|
$versao = '1.0.0';
|
|
|
|
|
/*
|
|
|
|
|
* Estabelece conexao com os servidores de socket e dados
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
require "util/util.php";
|
|
|
|
|
//trim($dados['nome']), $dados['numero'], $dados['opcao'], $dados['acao'], '${UNIQUEID}')
|
|
|
|
|
$fila = isset($argv[1]) ? trim($argv[1]) : null;
|
|
|
|
|
$filaNumero = isset($argv[2]) ? trim($argv[2]) : null;
|
|
|
|
|
$opcTransbordo = isset($argv[3]) ? trim($argv[3]) : null;
|
|
|
|
|
$acaTransbordo = isset($argv[4]) ? trim($argv[4]) : null;
|
|
|
|
|
$uidTransbordo = isset($argv[5]) ? trim($argv[5]) : null;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Arquivo de log
|
|
|
|
|
*/
|
|
|
|
|
$pathLog = "/var/log/asterisk/ast_transbordo.log";
|
|
|
|
|
//
|
|
|
|
|
//$constr = "host='192.168.115.2' port='5432' dbname='pbx' user='contacte' password='ctepgSQL'";
|
|
|
|
|
//$conn = GetConnection($constr);
|
|
|
|
|
$conn = GetConnection(GetDefStrDb());
|
|
|
|
|
|
|
|
|
|
//$conn = GetConnection($constr);
|
|
|
|
|
|
|
|
|
|
if ($fila && $uidTransbordo) {
|
|
|
|
|
$filaTransbordo = ($opcTransbordo == 'filas') ? GetFilaFromNumero($conn, $acaTransbordo) : "$acaTransbordo";
|
|
|
|
|
$dataTransbordo = date('Y-m-d H:i:s');
|
|
|
|
|
WriteLog("Transbordo Asterisk Data:{$dataTransbordo} Fila: {$fila}-{$filaNumero} Opcao: {$opcTransbordo} Acao: {$filaTransbordo}-{$acaTransbordo} Uid: {$uidTransbordo}\n", $pathLog);
|
|
|
|
|
|
|
|
|
|
InfoTransbordoReg($conn, $fila, $opcTransbordo, $filaTransbordo, $uidTransbordo, 'S', 'EXITWITHTIMEOUT');
|
|
|
|
|
if ($opcTransbordo == 'filas') {
|
|
|
|
|
InfoTransbordoReg($conn, $filaTransbordo, $opcTransbordo, $fila, $uidTransbordo, 'E', 'EXITWITHTIMEOUT');
|
|
|
|
|
}
|
|
|
|
|
pg_close($conn);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Armazena dados das filas retornados pelo socket
|
|
|
|
|
*/
|
|
|
|
|
$dadosFilas = array();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Filas a monitorar originadas do banco de dados
|
|
|
|
|
*/
|
|
|
|
|
$monitorFila = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Arquivo de log
|
|
|
|
|
*/
|
|
|
|
|
$pathLog = "/var/log/asterisk/transbordo.log";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$socket = ConectaManager(GetSckConnect());
|
|
|
|
|
//$socket = ConectaManager(array('192.168.115.2', '5038', 'manager', 'manager007'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Valor:
|
|
|
|
|
* 0 - grava apenas mensagens de erro
|
|
|
|
|
* 1 - grava todas as mensagens
|
|
|
|
|
* 2 - grava todas as mensagens e imprime para saida padrao
|
|
|
|
|
*/
|
|
|
|
|
$gravaLog = 2;
|
|
|
|
|
|
|
|
|
|
define("MAX_TENTATIVA_RETORNO", 50);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
if (!($socket && $conn)) {
|
|
|
|
|
GeraExcept('Teste de conexao com os servidores', "Conexao aos servidores realizada com sucesso!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Lista as filas com transbordo configurado.
|
|
|
|
|
*/
|
|
|
|
|
if ($monitorFila = GetFilasMonitorar($conn)) {
|
|
|
|
|
foreach ($monitorFila as $fila => $infoFila) {
|
|
|
|
|
if (GetChamadasEspera($conn, $fila) && RecebeTransbordo($conn, $infoFila['fila_transbordo'])) {
|
|
|
|
|
if (!empty($infoEsperas = GetInfoEspera($socket, $fila))) {
|
|
|
|
|
foreach ($infoEsperas as $infoEspera) {
|
|
|
|
|
try {
|
|
|
|
|
if (!Transbordo($socket, $fila, $infoFila['fila_transbordo'], $infoEspera['channel'], $infoFila['numero_transbordo'])) {
|
|
|
|
|
GeraExcept(sprintf("N<EFBFBD>o foi possivel transbordar a chamada Fila: %s Fila Transbordo: %s Channel: %s Numero: %s\n", $fila, $infoFila['fila_transbordo'], $infoEspera['channel'], $infoFila['numero_transbordo']));
|
|
|
|
|
}
|
|
|
|
|
$dataTransbordo = date('Y-m-d H:i:s');
|
|
|
|
|
WriteLog("Transbordo Assitido Data:{$dataTransbordo} Fila: {$fila} Destino: {$infoFila['fila_transbordo']} Numero: {$infoFila['calleridnum']} Uid: {$infoEspera['uniqueid']}\n", $pathLog);
|
|
|
|
|
InfoTransbordoReg($conn, $fila, 'filas', $infoFila['fila_transbordo'], $infoEspera['uniqueid'], 'S');
|
|
|
|
|
InfoTransbordoReg($conn, $infoFila['fila_transbordo'], 'filas', $fila, $infoEspera['uniqueid'], 'E');
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
WriteLog($ex->getMessage(), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
pg_close($conn);
|
|
|
|
|
fclose($socket);
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
|
|
|
|
|
WriteLog($ex->getMessage(), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function InfoTransbordoReg($conn, $fila, $tipoDestino, $destino, $uniqueid, $tipo, $apl = 'ASSISTIDO') {
|
|
|
|
|
|
|
|
|
|
$query = sprintf("insert into pbx_eventos_transbordo(fila, trbd_origem_destino_tipo, trbd_origem_destino, uniqueid, trbd_tipo, trbd_aplicacao) values(%s, %s, %s, %s, %s, %s);", QuotedStr($fila), QuotedStr($tipoDestino), QuotedStr($destino), QuotedStr($uniqueid), QuotedStr($tipo), QuotedStr($apl));
|
|
|
|
|
if (!pg_query($conn, $query)) {
|
|
|
|
|
$erro = GetLasterror();
|
|
|
|
|
WriteLog("{$fila};{$tipoDestino};{$destino};{$uniqueid};{$tipo};{$apl},[{$erro}]\n", "/var/log/asterisk/transbordo.csv");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* insert into pbx_eventos_transbordo(fila, trbd_destino_tipo, trbd_destino, uniqueid, trbd_tipo) values(%s, %s, %s, %s, %s);
|
|
|
|
|
Event: QueueEntry
|
|
|
|
|
Queue: DEVEL
|
|
|
|
|
Position: 1
|
|
|
|
|
Channel: SIP/4016-00000032
|
|
|
|
|
Uniqueid: 1569662762.461
|
|
|
|
|
CallerIDNum: 4016
|
|
|
|
|
CallerIDName: 4016
|
|
|
|
|
ConnectedLineNum: unknown
|
|
|
|
|
ConnectedLineName: unknown
|
|
|
|
|
Wait: 41
|
|
|
|
|
Priority: 0
|
|
|
|
|
ActionID: 56dd6666374747
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetChamadasEspera($conn, $fila) {
|
|
|
|
|
$query = "select (strtoint(a.espera) - ( select count(*) from pbx_supervisor_agentes b where b.dac = a.dac and b.status = 'LIVRE' and b.disponivel_atendimento = 1 )) as espera
|
|
|
|
|
from pbx_supervisor_dacs a
|
|
|
|
|
where a.dac = '{$fila}'; ";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Recupera as filas a monitoras
|
|
|
|
|
*/
|
|
|
|
|
if (!$result = pg_query($conn, $query)) {
|
|
|
|
|
RaiseExcept("N<EFBFBD>o foi possivel consultar as chamadas em espera para a fila: {$fila}!", true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return pg_fetch_row($result)[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RecebeTransbordo($conn, $fila) {
|
|
|
|
|
|
|
|
|
|
$query = "select count(*) as livre
|
|
|
|
|
from pbx_supervisor_dacs a, pbx_supervisor_agentes b
|
|
|
|
|
where b.dac = a.dac
|
|
|
|
|
and a.dac = '{$fila}'
|
|
|
|
|
and b.status = 'LIVRE'
|
|
|
|
|
and strtoint(a.espera) = 0 ";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Recupera as filas a monitoras
|
|
|
|
|
*/
|
|
|
|
|
if (!$result = pg_query($conn, $query)) {
|
|
|
|
|
RaiseExcept("N<EFBFBD>o foi possivel consultar as chamadas em espera para a fila: {$fila}!", true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return pg_fetch_row($result)[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetInfoEspera($socket, $fila) {
|
|
|
|
|
$actionid = rand(000000000, 9999999999);
|
|
|
|
|
fwrite($socket, "action: queuestatus\r\n");
|
|
|
|
|
fwrite($socket, "ActionID: " . $actionid . "\r\n\r\n");
|
|
|
|
|
$start = 0;
|
|
|
|
|
$filas = array();
|
|
|
|
|
$params = array();
|
|
|
|
|
$dadosFila = array();
|
|
|
|
|
$filaMonitorada = '';
|
|
|
|
|
while (!feof($socket)) {
|
|
|
|
|
$buffer = trim(fgets($socket));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($start && !$buffer) {
|
|
|
|
|
$start = 0;
|
|
|
|
|
$dadosFila[] = $params;
|
|
|
|
|
$params = array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Obtem os valores retornados
|
|
|
|
|
*/
|
|
|
|
|
if ($start && $buffer) {
|
|
|
|
|
list($param, $value) = explode(":", $buffer);
|
|
|
|
|
$params[strtolower(trim($param))] = trim($value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Inicio da leitura dos dados
|
|
|
|
|
*/
|
|
|
|
|
if (stripos($buffer, "QueueEntry") !== false) {
|
|
|
|
|
$start++;
|
|
|
|
|
$params = array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se a requisi<EFBFBD><EFBFBD>o chegou ao final
|
|
|
|
|
*/
|
|
|
|
|
if (stripos($buffer, "QueueStatusComplete") !== false) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Garante que o socket n<EFBFBD>o vai procurar para sempre
|
|
|
|
|
*/
|
|
|
|
|
if ($buffer === false) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (empty($dadosFila)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ($dadosFila as $infoFila) {
|
|
|
|
|
if (array_search($fila, $infoFila) !== false) {
|
|
|
|
|
$infoFilas[] = $infoFila;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return !empty($infoFilas) ? $infoFilas : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DadosFila($socket) {
|
|
|
|
|
$actionid = rand(000000000, 9999999999);
|
|
|
|
|
fwrite($socket, "action: queuestatus\r\n");
|
|
|
|
|
fwrite($socket, "ActionID: " . $actionid . "\r\n\r\n");
|
|
|
|
|
$start = false;
|
|
|
|
|
$filas = array();
|
|
|
|
|
$params = array();
|
|
|
|
|
$dados = array();
|
|
|
|
|
|
|
|
|
|
while (!feof($socket)) {
|
|
|
|
|
$buffer = fgets($socket);
|
|
|
|
|
/*
|
|
|
|
|
* Obtem os valores retornados
|
|
|
|
|
*/
|
|
|
|
|
if ($start && (trim($buffer) != '')) {
|
|
|
|
|
list($param, $value) = explode(":", $buffer);
|
|
|
|
|
$params[trim($param)] = trim($value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($start && (trim($buffer) == '') && count($params)) {
|
|
|
|
|
$dados[] = $params;
|
|
|
|
|
$params = array();
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* Inicio da leitura dos dados
|
|
|
|
|
*/
|
|
|
|
|
if (stristr($buffer, "Queue status will follow")) {
|
|
|
|
|
$start = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se a requisi<EFBFBD><EFBFBD>o chegou ao final
|
|
|
|
|
*/
|
|
|
|
|
if (stristr($buffer, "QueueStatusComplete")) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Garante que o socket n<EFBFBD>o vai procurar para sempre
|
|
|
|
|
*/
|
|
|
|
|
if ($buffer === false) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return count($dados) ? $dados : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetConnection($conStr) {
|
|
|
|
|
if (!$ret = pg_connect($conStr)) {
|
|
|
|
|
RaiseExcept("Func.: GetConnection, Erro ao executar conexao no banco", true);
|
|
|
|
|
}
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetFilasMonitorar($conn) {
|
|
|
|
|
$dadosFila = array();
|
|
|
|
|
/*
|
|
|
|
|
* Query para recuperar as filas para transbordo, cadastradas no db
|
|
|
|
|
*/
|
|
|
|
|
$query = "select a.id, a.nome as nome_fila, a.id_transbordo, b.nome as fila_transbordo, b.numero as numero_transbordo
|
|
|
|
|
from pbx_queues_grupos a, pbx_queues_grupos b
|
|
|
|
|
where b.id = a.id_transbordo
|
|
|
|
|
and a.id_transbordo > 0 and a.status = 'A' and b.status = 'A'";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Recupera as filas a monitoras
|
|
|
|
|
*/
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
RaiseExcept("Func.: GetFilasMonitorar , Recupera as filas que tem transbordo cofigurado", true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$dadosFila[$row["nome_fila"]] = $row;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $dadosFila;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetChamadasFila($arFilas, $fila) {
|
|
|
|
|
foreach ($arFilas as $infoFila) {
|
|
|
|
|
if (($infoFila["Queue"] == $fila) && ($infoFila["Event"] == 'QueueParams')) {
|
|
|
|
|
return trim($infoFila['Calls']);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAgentesLivre($arFilas, $fila) {
|
|
|
|
|
$arAgt = array();
|
|
|
|
|
|
|
|
|
|
foreach ($arFilas as $infoFila) {
|
|
|
|
|
if (($infoFila["Queue"] == $fila) && ($infoFila["Event"] == 'QueueMember') && ($infoFila["Status"] == '1') && ($infoFila["Paused"] == '0')) {
|
|
|
|
|
$arAgt[$infoFila["Name"]] = $infoFila["Location"];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $arAgt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Transbordo($socket, $filaMonitorada, $filaTransbordo, $channelTransf, $numeroFila) {
|
|
|
|
|
if (!$ret = SetFila($socket, $filaMonitorada, $filaTransbordo, $channelTransf)) {
|
|
|
|
|
GeraExcept('Transbordo', "Func.: Transbordo Falha na chamada a funcao SetFila Fila Monitorada: $filaMonitorada FilaTransbordo: $filaTransbordo Canal: $channelTransf Dac: $numeroFila");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$actionid = rand(000000000, 9999999999);
|
|
|
|
|
fwrite($socket, "action: redirect\r\n");
|
|
|
|
|
fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
fwrite($socket, "Context: ext-transbordo\r\n");
|
|
|
|
|
fwrite($socket, "Exten: $numeroFila\r\n");
|
|
|
|
|
fwrite($socket, "Priority: 1\r\n");
|
|
|
|
|
fwrite($socket, "ActionID: " . $actionid . "\r\n\r\n");
|
|
|
|
|
return VerificaRetornoSocket($socket, "Success", "Error");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function VerificaRetornoSocket($socket, $sucess, $erro) {
|
|
|
|
|
$i = 0;
|
|
|
|
|
while (!feof($socket)) {
|
|
|
|
|
$bufer = fgets($socket);
|
|
|
|
|
|
|
|
|
|
if (stristr($bufer, $sucess)) {
|
|
|
|
|
return true;
|
|
|
|
|
} else if (stristr($bufer, $erro)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($bufer === false)
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
if ($i++ > MAX_TENTATIVA_RETORNO)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetFila($socket, $fila, $filaTransbordo, $channelTransf) {
|
|
|
|
|
$actionid = rand(000000000, 9999999999);
|
|
|
|
|
fwrite($socket, "action: SetVar\r\n");
|
|
|
|
|
fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
fwrite($socket, "variable: FILA1\r\n");
|
|
|
|
|
fwrite($socket, "value: $fila\r\n");
|
|
|
|
|
fwrite($socket, "ActionID: " . $actionid . "\r\n\r\n");
|
|
|
|
|
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error");
|
|
|
|
|
if (!$ret)
|
|
|
|
|
return $ret;
|
|
|
|
|
|
|
|
|
|
$actionid = rand(000000000, 9999999999);
|
|
|
|
|
fwrite($socket, "action: SetVar\r\n");
|
|
|
|
|
fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
fwrite($socket, "variable: FILA2\r\n");
|
|
|
|
|
fwrite($socket, "value: $filaTransbordo\r\n");
|
|
|
|
|
fwrite($socket, "ActionID: " . $actionid . "\r\n\r\n");
|
|
|
|
|
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error");
|
|
|
|
|
if (!$ret)
|
|
|
|
|
return $ret;
|
|
|
|
|
|
|
|
|
|
$actionid = rand(000000000, 9999999999);
|
|
|
|
|
fwrite($socket, "action: SetVar\r\n");
|
|
|
|
|
fwrite($socket, "Channel: $channelTransf\r\n");
|
|
|
|
|
fwrite($socket, "variable: ANUNCIO\r\n");
|
|
|
|
|
fwrite($socket, "value: customizados/transbordo\r\n");
|
|
|
|
|
fwrite($socket, "ActionID: " . $actionid . "\r\n\r\n");
|
|
|
|
|
|
|
|
|
|
$ret = VerificaRetornoSocket($socket, "Success", "Error");
|
|
|
|
|
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
?>
|