Certa Soluções Posted May 28, 2012 Report Share Posted May 28, 2012 Pessoal, estou tendo que comunicar PHP com asterisk, que é um sistema de central telefonica para linux.A comunicação eu já fiz, e tenho como retorno uma variavel que trato ele assim:nl2br($ast->getQueues())Uso o nl2br para dar as quebras de linhas.O conteudo é assim:Message: Queue summary will followEvent: QueueSummaryQueue: SuporteLoggedIn: 0Available: 0Callers: 0HoldTime: 3TalkTime: 45LongestHoldTime: 0Event: QueueSummaryCompleteEvent: NewchannelPrivilege: call,allChannel: SIP/559101001-00000134ChannelState: 0ChannelStateDesc: DownCallerIDNum: 559106182CallerIDName: AdemirAccountCode:Exten: sContext: defaultUniqueid: 1338221269.469O que preciso é identificar alguns desses resultados e trata-los para inserir no banco de dados ou simplesmente listar de forma individual na tela.Por exemplo: ChannelStateDesc: Identificar somente o valor dele, que seria Down.Assim quer fazer com outros dados como Uniqueid, Channel etc.É possivel? Quote Link to comment Share on other sites More sharing options...
0 MLeandroJr! Posted May 28, 2012 Report Share Posted May 28, 2012 (edited) O que você pode fazer é algo parecido com isso:// Separo a string pelas quebras de linha $strings = explode("\n",$ast->getQueues()); // Crio um array vazio que será usado pelo laço $valores = array(); // Faço o laço separando cada item do array pelo caractere : e salvando em um outro array foreach($strings as $string){ if(strlen($string) > 1){ $str = explode(':',$string); $valores[trim($str[0])] = trim($str[1]); } } Fiz esse código só pra ilustrar, está um pouco rudimentar e pode ser muito melhorado, é só pra você saber por onde seguir. Dessa forma você terá um array onde as chaves são as propriedades e os valores, os resultados. Array ( [Message] => Queue summary will follow [Event] => Newchannel [Queue] => Suporte [LoggedIn] => 0 [Available] => 0 [Callers] => 0 [HoldTime] => 3 [TalkTime] => 45 [LongestHoldTime] => 0 [Privilege] => call,all [Channel] => SIP/559101001-00000134 [ChannelState] => 0 [ChannelStateDesc] => Down [CallerIDNum] => 559106182 [CallerIDName] => Ademir [AccountCode] => [Exten] => s [Context] => default [Uniqueid] => 1338221269.469 ) Edited May 28, 2012 by MLeandroJr! Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted May 28, 2012 Report Share Posted May 28, 2012 (edited) Veja se é isso que você quer:str_replace($_REQUEST["BuscarPalavras"],"<span style='color:#00F'>".$_REQUEST["BuscarPalavras"]."</span>",$listar->PalavrasBanco);Abs. Edited May 28, 2012 by MTavares Quote Link to comment Share on other sites More sharing options...
0 Certa Soluções Posted May 28, 2012 Author Report Share Posted May 28, 2012 beleza, vou testar aqui e retorno sobre os resultados. Obrigado por enquanto.Valeu mesmo pela força! Quote Link to comment Share on other sites More sharing options...
0 Certa Soluções Posted May 28, 2012 Author Report Share Posted May 28, 2012 O que você pode fazer é algo parecido com isso:// Separo a string pelas quebras de linha $strings = explode("\n",$ast->getQueues()); // Crio um array vazio que será usado pelo laço $valores = array(); // Faço o laço separando cada item do array pelo caractere : e salvando em um outro array foreach($strings as $string){ if(strlen($string) > 1){ $str = explode(':',$string); $valores[trim($str[0])] = trim($str[1]); } } Fiz esse código só pra ilustrar, está um pouco rudimentar e pode ser muito melhorado, é só pra você saber por onde seguir. Dessa forma você terá um array onde as chaves são as propriedades e os valores, os resultados. Array ( [Message] => Queue summary will follow [Event] => Newchannel [Queue] => Suporte [LoggedIn] => 0 [Available] => 0 [Callers] => 0 [HoldTime] => 3 [TalkTime] => 45 [LongestHoldTime] => 0 [Privilege] => call,all [Channel] => SIP/559101001-00000134 [ChannelState] => 0 [ChannelStateDesc] => Down [CallerIDNum] => 559106182 [CallerIDName] => Ademir [AccountCode] => [Exten] => s [Context] => default [Uniqueid] => 1338221269.469 )Entendi, porém, "os valores, os resultados" serão dinamicos e irão mudar a cada 10 segundos ou a cada atualização de pagina. Por isso precisarei pegar eles como se fossem variaveisExemplo $Uniqueid e dar um echo $Uniqueid ou echo $ChannelState. Será que tem como? Quote Link to comment Share on other sites More sharing options...
0 MLeandroJr! Posted May 28, 2012 Report Share Posted May 28, 2012 (edited) Se você der um echo em $valores['Uniqueid'], ele sempre te retornará o valor que ele pegou do $ast->getQueues().Dessa forma, os valores são dinâmicos.Mas com um ajuste ou outro o código transforma tudo em variável. Edited May 28, 2012 by MLeandroJr! Quote Link to comment Share on other sites More sharing options...
0 Certa Soluções Posted May 28, 2012 Author Report Share Posted May 28, 2012 Se você der um echo em $valores['Uniqueid'], ele sempre te retornará o valor que ele pegou do $ast->getQueues().Dessa forma, os valores são dinâmicos.Mas com um ajuste ou outro o código transforma tudo em variável.CERTO!MATOU A CHARADA... era exatamente isso que precisava. Fico muito grato pela ajuda.Obrigado mesmo!Você não faz consultoria paga? Temos interesse.Veja se é isso que você quer:str_replace($_REQUEST["BuscarPalavras"],"<span style='color:#00F'>".$_REQUEST["BuscarPalavras"]."</span>",$listar->PalavrasBanco);Abs.O metodo do MLeandroJr deu certo. Mas mesmo assim agradeço o interesse em ajudar. Quote Link to comment Share on other sites More sharing options...
0 MLeandroJr! Posted May 28, 2012 Report Share Posted May 28, 2012 Modifiquei o código para retornar as propriedades como nomes de variáveis.Assim fica da forma que você havia dito.// Separo a string pelas quebras de linha $strings = explode("\n",$ast->getQueues()); // Crio um array vazio que será usado pelo laço $valores = array(); // Faço o laço separando cada item do array pelo caractere : e salvando em um outro array foreach($strings as $string){ if(strlen($string) > 1){ $str = explode(':',$string); $$str[0] = trim($str[1]); } }Com este código, se você der um echo em $ChannelState, por exemplo, ele retorna o valor capturado.A desvantagem deste método é não poder ter certeza das variáveis criadas, enquanto com a array, você pode saber facilmente dando um print_r() nela.Quanto à consultoria, podemos conversar.Meu email de contato é: [email protected] Quote Link to comment Share on other sites More sharing options...
0 Certa Soluções Posted May 29, 2012 Author Report Share Posted May 29, 2012 Modifiquei o código para retornar as propriedades como nomes de variáveis.Assim fica da forma que você havia dito.// Separo a string pelas quebras de linha $strings = explode("\n",$ast->getQueues()); // Crio um array vazio que será usado pelo laço $valores = array(); // Faço o laço separando cada item do array pelo caractere : e salvando em um outro array foreach($strings as $string){ if(strlen($string) > 1){ $str = explode(':',$string); $$str[0] = trim($str[1]); } }Com este código, se você der um echo em $ChannelState, por exemplo, ele retorna o valor capturado.A desvantagem deste método é não poder ter certeza das variáveis criadas, enquanto com a array, você pode saber facilmente dando um print_r() nela.Quanto à consultoria, podemos conversar.Meu email de contato é: [email protected]Perfeito, porém, estou com a seguinte dificuldade:preciso capturar um bloco de informações, onde as variaveis serão duplicadas... exemplo retornado do asterisk:Event: QueueMemberQueue: SuporteName: SIP/103Location: SIP/103Membership: staticPenalty: 0CallsTaken: 0LastCall: 0Status: 5Paused: 0Event: QueueMemberQueue: SuporteName: SIP/102Location: SIP/102Membership: staticPenalty: 0CallsTaken: 0LastCall: 0Status: 2Paused: 0aí no php, eu listo do mysql, os "Name" exemplo SIP/102 E SIP/103... poderão haver mais SIPs...MYSQL: SIP/102 - RESULTADO DO ARRAY = STATUS = 2MYSQL: SIP/103 - RESULTADO DO ARRAY = STATUS = 5Tem alguma forma de indentificar resultados especificos para agrupar dento da linha certo no php?Se quiser podemos falar via email ou MSN. Quote Link to comment Share on other sites More sharing options...
Question
Certa Soluções
Pessoal, estou tendo que comunicar PHP com asterisk, que é um sistema de central telefonica para linux.
A comunicação eu já fiz, e tenho como retorno uma variavel que trato ele assim:
nl2br($ast->getQueues())
Uso o nl2br para dar as quebras de linhas.
O conteudo é assim:
Message: Queue summary will follow
Event: QueueSummary
Queue: Suporte
LoggedIn: 0
Available: 0
Callers: 0
HoldTime: 3
TalkTime: 45
LongestHoldTime: 0
Event: QueueSummaryComplete
Event: Newchannel
Privilege: call,all
Channel: SIP/559101001-00000134
ChannelState: 0
ChannelStateDesc: Down
CallerIDNum: 559106182
CallerIDName: Ademir
AccountCode:
Exten: s
Context: default
Uniqueid: 1338221269.469
O que preciso é identificar alguns desses resultados e trata-los para inserir no banco de dados ou simplesmente listar de forma individual na tela.
Por exemplo: ChannelStateDesc: Identificar somente o valor dele, que seria Down.
Assim quer fazer com outros dados como Uniqueid, Channel etc.
É possivel?
Link to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.