O RECORD é um comando enviado pela Aplicação CTI ao Servidor para escutar ou baixar uma gravação. Ao solicitar para reproduzir uma gravação, o Servidor gera uma chamada para o ramal do usuário e reproduz a gravação selecionada. Na reprodução de uma gravação, é possível passar parâmetros de STOP, PLAY, PAUSE, Mover a gravação para frente, para trás, para o inicio, e para o final. Também é possível alterar o volume do áudio.
Ao utilizar o comando RECORD para baixar o arquivo de gravação, o servidor CTI enviará o conteúdo do arquivo de gravação payload para a aplicação CTI em uma nova conexão TCP e porta definida pela aplicação.
Enquanto é feito um download de gravação ou uma reproduzução, o Servidor CTI envia eventos RECORD informando o status seu status.
NOTA: Quando a resposta do servidor for um OK, o servidor enviará o parâmetro RECORDS contendo uma lista de gravações entre aspas duplas.
|
Parâmetros de Reprodução
PLAY ‣
Parâmetros enviados para o Servidor
|
PLAY |
Inicia a reprodução no ramal do usuário.
|
RECORD PLAY:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav\r\n\r\n
|
>> RECORD PLAY:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav
<< RECORD RESP:OK
<< RECORD PLAY:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav DURATION:2
<< RECORD SEEK:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav POSITION:1
<< RECORD SEEK:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav POSITION:2
<< RECORD STOP:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav
BEGIN ⇤
Parâmetros enviados para o Servidor
|
BEGIN |
Move a reprodução para o inicio.
|
RECORD BEGIN:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav\r\n\r\n
|
END ⇥
Parâmetros enviados para o Servidor
|
END |
Move a reprodução para o final.
|
RECORD END:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav\r\n\r\n
|
UP →
Parâmetros enviados para o Servidor
|
UP |
Move a reprodução 5 segundos para frente.
|
RECORD UP:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav\r\n\r\n
|
DOWN ←
Parâmetros enviados para o Servidor
|
DOWN |
Move a reprodução 5 segundos para trás.
|
RECORD DOWN:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav\r\n\r\n
|
PAUSE
Parâmetros enviados para o Servidor
|
PAUSE |
Coloca a reprodução em pausa.
|
RECORD DOWN:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav\r\n\r\n
|
STOP
Parâmetros enviados para o Servidor
|
STOP |
Para a reprodução. A chamada é derrubada.
|
RECORD STOP:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav\r\n\r\n
|
VOLUME
Parâmetros enviados para o Servidor
|
VOLUME |
Aumenta ou diminui o volume da reprodução.
|
LEVEL |
Intensidade do volume. Valores de 0 a 10.
|
RECORD VOLUME:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav LEVEL:8\r\n\r\n
|
Fluxo
APP CTI > SERVIDOR CTI
|
RECORD PLAY:/PATH/audio.wav\r\n\r\n
|
SERVIDOR CTI > APP CTI
|
RECORD RESP:OK\r\n\r\n |
Comando aceito pelo PABX
|
RECORD RESP:ERROR\r\n\r\n |
Erro reportado pelo PABX
|
NOTA: Quando a resposta do servidor for um OK, o servidor enviará eventos RECORD indicando o status da reprodução do arquivo.
RECORD PLAY:PATH/audio.wav DURATION:2
Evento com parâmentro '''PLAY''', indicando o inicio da reprodução, e o parâmetro '''DURATION''' indicando a duração total (em segundos)
RECORD SEEK:PATH/audio.wav POSITION:1
O evento '''SEEK''' é informado a cada segundo de reprodução do áudio, e no parâmentro '''POSITION''', informando sua atual posição (em segundos)
RECORD STOP:PATH/audio.wav
Evento com o parâmetro '''STOP''', informando o final da reprodução.
Exemplo PHP
Solicitando para reproduzir o arquivo de áudio no ranal do usuário:
<?php
function cti_record_play_file($socket, $file)
{
$data = "RECORD PLAY:$file\r\n\r\n";
return socket_write($socket, $data, strlen($data));
}
$file = "/utech/gravacoes/03092015/7000_2001_c500000a_16006_c800000a_16008_155857.wav"
cti_record_play_file($socket, $file)
?>
|
Parâmetros de Download de Gravação
DOWNLOAD
Parâmetros enviados para o Servidor
|
DOWNLOAD |
Arquivo que a aplicação deseja fazer o donwload.
|
PORT |
Porta para conexão TCP que o servidor CTI irá se conectar para enviar o arquivo de gravação.
|
RECORD DOWNLOAD:/utech/gravacoes/03092015/4833334840_2000_08_02_095734.wav PORT:64999\r\n\r\n
|
>> RECORD DOWNLOAD:/utech/gravacoes/03092015/7000_2001_c500000a_16006_c800000a_16008_155857.wav PORT:64999
<< RECORD RESP:OK
<< RECORD DOWNLOAD:/utech/gravacoes/03092015/7000_2001_c500000a_16006_c800000a_16008_155857.wav SIZE:36364
<< RECORD STOP:/utech/gravacoes/03092015/7000_2001_c500000a_16006_c800000a_16008_155857.wav
Fluxo
APP CTI > SERVIDOR CTI
|
RECORD DOWNLOAD:/PATH/audio.wav PORT:64999\r\n\r\n
|
SERVIDOR CTI > APP CTI
|
RECORD RESP:OK\r\n\r\n |
Comando aceito pelo PABX
|
RECORD RESP:ERROR\r\n\r\n |
Erro reportado pelo PABX
|
NOTA: Quando a resposta do servidor for um OK, o servidor enviará eventos RECORD indicando o status do Download do arquivo.
RECORD DOWNLOAD:/utech/gravacoes/03092015/7000_2001_c500000a_16006_c800000a_16008_155857.wav SIZE:36364
No primeiro evento, é recebido o parâmetro '''DOWNLOAD''' com o ''path'' arquivo e o paramentro '''SIZE''' com o tamanho do arquivo solicitado.
RECORD STOP:/utech/gravacoes/03092015/7000_2001_c500000a_16006_c800000a_16008_155857.wav.<br\>
No segundo evento, é passado o parâmetro '''STOP''', indicando que o donwload foi finalizado.<br\>
Exemplo PHP
Requisitando download de arquivo:
<?php
function get_download_audio_file($socket, $file, $port)
{
$data = "RECORD DOWNLOAD:$file PORT=$port\r\n\r\n";
return socket_write($socket, $data, strlen($data));
}
$file = "/utech/gravacoes/03092015/7000_2001_c500000a_16006_c800000a_16008_155857.wav"
$port = "64999";
get_download_audio_file($socket, $file, $port)
?>
|
Recebendo arquivo de download na porta 64999:
<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$address = '192.168.88.100';
$port = 9999;
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if($sock === false) {
$err = socket_strerror(socket_last_error());
printf("socket_create error: %s\n", $err);
exit(1);
}
if (socket_bind($sock, $address, $port) === false) {
$err = socket_strerror(socket_last_error($sock));
printf("socket_bind error: %s\n", $err);
exit(1);
}
if (socket_listen($sock, 5) === false) {
$err = socket_strerror(socket_last_error($sock));
printf("socket_listen error: $err\n");
exit(1);
}
if (($msgsock = socket_accept($sock)) === false) {
$err = socket_strerror(socket_last_error($sock));
printf("socket_accept error: %s\n", $err);
break;
}
$fp = null;
do {
$buf = socket_read($msgsock, 2048, PHP_BINARY_READ);
if($buf === false) {
$strerr = socket_strerror(socket_last_error($msgsock));
$err = socket_last_error($msgsock);
if($err = 104)
echo "Connection reset by peer\n";
else
printf("read error: %s\n", $strerr);
break;
}
if (!$buf = trim($buf))
continue;
if(!$fp)
$fp = fopen("audio.wav", "wb");
fwrite($fp, $buf);
} while (true);
fclose($fp);
socket_close($msgsock);
socket_close($sock);
?>
|
Volta ao menu