Script para geração de chamadas no Asterisk

Sem muitas delongas, compartilho aqui um script em PHP para geração de chamadas simultâneas, também conhecido como CPS (calls per second) para o asterisk.

O objetivo deste script é realizar teste de stress no Asterisk, podendo ser definido quantas chamadas simultâneas e quantas chamadas no total você deseja gerar.

O script gerará chamadas para uma outra central, como por exemplo, 2 asterisk. Conecte ambos via SIP e crie um contexto para recebimento de chamadas.

Basicamente, no código, altere as variáveis no início do arquivo. Destaco duas delas:
$CPS = Quantidade de chamadas geradas por SEGUNDO
$QTD = Quantidade de segundos deverá rodar

Total de chamadas geradas = $CPS * $QTD

<?php

//Diretorio onde serao salvos os arquivos temporariamente
$FILE_PWD = "/tmp/";

//Configuracoes do arquivo .call
$CHANNEL = "SIP/tronco-sip/21210000";
$CONTEXT = "discador";
$EXTENSION = "s";
$CALLERID = "CENTRAL-A";
$MAXRETRIES = 1;
$RETRYTIME = 1;

//CPS = Calls per second
$CPS = 20;

//Quantas rodadas de criacao devera ter
$QTD = 100;

for($i=0;$i<$QTD;$i++){
	echo "RODADA ".($i+1)."\n";

	//Deleta arquivos .call desta pasta
	exec("rm $FILE_PWD*.call 2> /dev/null");

	for($j=0;$j<$CPS;$j++){
		//gera um arquivo aleatorio
		$FILE_NAME=$FILE_PWD.rand(0,10000000000).rand(0,10000).".call";

		//Montagem do arquivo
		file_put_contents($FILE_NAME,"Channel: $CHANNEL\n"); 
	        file_put_contents($FILE_NAME,"Context: $CONTEXT\n",FILE_APPEND);
	        file_put_contents($FILE_NAME,"Extension: $EXTENSION\n",FILE_APPEND);
	        file_put_contents($FILE_NAME,"CallerID: $CALLERID\n",FILE_APPEND);
	        file_put_contents($FILE_NAME,"MaxRetries: $MAXRETRIES\n",FILE_APPEND);
	        file_put_contents($FILE_NAME,"RetryTime: $RETRYTIME\n",FILE_APPEND);
	
		echo "Arquivo gerado: $FILE_NAME\n";
	}

	//Realizando as ligacoes
	exec("mv $FILE_PWD*.call /var/spool/asterisk/outgoing");

	//calls PER SECOND.. sleep 1s antes da proxima rodada
	if($i+1!=$QTD)
		sleep(1);
}

?>

Para executá-lo, basta salvar o código em um arquivo e executar com o comando:
php nome_arquivo.php

Ronaldo Sacco
Sócio Co-Fundador da SaperX. Diretor Técnico. Especialista em SIP, Asterisk e programação de alto desempenho. O cara que faz a vaca voar.
Post criado 23

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados

Comece a digitar sua pesquisa acima e pressione Enter para pesquisar. Pressione ESC para cancelar.

De volta ao topo