Certa Soluções Postado Maio 28, 2012 Denunciar Share Postado Maio 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Maio 28, 2012 Denunciar Share Postado Maio 28, 2012 (editado) 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 ) Editado Maio 28, 2012 por MLeandroJr! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MTavares Postado Maio 28, 2012 Denunciar Share Postado Maio 28, 2012 (editado) Veja se é isso que você quer:str_replace($_REQUEST["BuscarPalavras"],"<span style='color:#00F'>".$_REQUEST["BuscarPalavras"]."</span>",$listar->PalavrasBanco);Abs. Editado Maio 28, 2012 por MTavares Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Certa Soluções Postado Maio 28, 2012 Autor Denunciar Share Postado Maio 28, 2012 beleza, vou testar aqui e retorno sobre os resultados. Obrigado por enquanto.Valeu mesmo pela força! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Certa Soluções Postado Maio 28, 2012 Autor Denunciar Share Postado Maio 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Maio 28, 2012 Denunciar Share Postado Maio 28, 2012 (editado) 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. Editado Maio 28, 2012 por MLeandroJr! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Certa Soluções Postado Maio 28, 2012 Autor Denunciar Share Postado Maio 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Maio 28, 2012 Denunciar Share Postado Maio 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 é: mleandrojr@yggdrasill.com.br Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Certa Soluções Postado Maio 29, 2012 Autor Denunciar Share Postado Maio 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 é: mleandrojr@yggdrasill.com.brPerfeito, 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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 para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.