Protocolo CTI uTech/CMD RECORD

De uTech Tecnologia
Edição feita às 19h58min de 8 de junho de 2017 por Mayara (disc | contribs)

(dif) ← Versão anterior | ver versão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

Tabela de conteúdo


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.

Modo Play Modo Download
Diagrama-records-play.png
Diagrama-records-download.png
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

Ferramentas pessoais
Espaços nominais

Variantes
Visualizações
Ações
Navegação
Ferramentas