Bemmelhor Telecom, integração click2Calls por REST

  por  Fabrício S Costa    Sat, Apr 16 2016 13:52:34
      
Bemmelhor Telecom, integração click2Calls por REST

Atendendo a uma demanda crescente de mercado, onde integrações entre soluções criam uma tendência para potencializar os modelos de negócios, a Bemmelhor SI disponibilizou há algum tempo, o padrão para integração de ferramentas de parceiros ao Bemmelhor Telecom (BmTelecom). Este recurso pode ser utilizado por qualquer sistema homologado previamente junto a equipe de suporte e desenvolvimento da empresa e suas funcionalidades vão desde monitoramento de recursos do sistema de telefonia ao tão desejado “Click To Dial”, onde é possível iniciar uma ligação para os agentes de Call Centers e usuários da telefonia apenas passando alguns parâmetros via URL.

Neste post iremos abordar um exemplo simples de Client PHP para conexão ao Webservice REST do sistema BmTelecom. Este modelo pode ser utilizado para entender a mecânica do funcionamento do serviço e permite a criação rápida de testes para validações do comportamento do ambiente de telefonia e suas variações. Não iremos apresentar aqui a documentação dos processos do sistema de integração, por não ser esse o foco inicial. Toda a documentação necessária para o entendimento e utilização do modelo de integração BmTelecom é disponibilizada através da página de Treinamentos e Suporte para clientes e parceiros Bemmelhor SI, que pode ser acessada através do link http://www.bemmelhor.com.br/info com usuário e senhas previamente cadastrados, caso ainda não possua cadastro entre em contato conosco através do link http://www.bemmelhor.com.br/site/site_contacts.

Conceito Básico

<?php

    $ch = curl_init('http://IP_SERVER_TELECOM:8080/bmservices/manager/iptelecom');

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_USERPWD, "usuario:senha");

    $response = curl_exec($ch);
    curl_close($ch);

    echo $response;	
?>

 

Exemplos Simples de Clients PHP para Conexão ao Servidor REST.

Dando sequência, vamos aos exemplos de clients para conexões ao servidor REST. Abaixo seguem alguns pequenos códigos contendo conexões básicas ao serviço BmTelecom utilizando a biblioteca CURL, nativa do PHP. O modelo de autenticação do serviço para homologação é o Basic Authentication, para saber mais sobre esse modelo acesse: https://en.wikipedia.org/wiki/Basic_access_authentication

Capturando dados no BmTelecom REST com GET

No modelo abaixo é utilizado uma URI do sistema de integração que retorna o IP do servidor de telefonia no padrão JSON, através do método GET:

<?php
    $client = new Client();
    print_r( $client->getServerIP("IP_SERVIDOR_REST", "USER", "PASS") );
    
    class Client {
    
        public function getServerIP($serverIP, $user, $pass) {
    
            $response = '';

            $url = sprintf('http://%s:8080/bmservices/manager/iptelecom', $serverIP);
            $auth = sprintf("%s:%s", $user, $pass);

            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_USERPWD, $auth);
            $response = curl_exec($ch);
            curl_close($ch);

            return $response;
        }
    }
?>

No exemplo acima o retorno seria um JSON com o IP do servidor de telefonia, algo como:

{"ip-telecom":"127.0.0.1"}

Alterando dados no BmTelecom REST através do PUT

No modelo abaixo é utilizado uma URI do sistema de integração que altera o IP do servidor de telefonia e recebe um retorno no padrão JSON, através do método PUT:

<?php

    $client = new Client();
    print_r( $client->getServerIP("IP_SERVIDOR_REST", "USER", "PASS", "NEW_IP") );

    class Client {

        public function setServerIP($serverIP, $user, $pass, $newIP) {

            $response = '';

            $url = sprintf('http://%s:8080/bmservices/manager/iptelecom/%s',
            $serverIP, $newIP);
            $auth = sprintf("%s:%s", $user, $pass);

            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_USERPWD, $auth);

            $response = curl_exec($ch);
            curl_close($ch);

            return $response;
        }
    }
?>

No exemplo acima o retorno seria um JSON com o novo IP do servidor de telefonia passado no parâmetro $newIP , algo como:

{"ip-telecom":"127.0.0.1"}

Os modelos acima podem ser utilizados para conexões com qualquer servidor REST disponíveis na web, sendo necessário uma atenção especial aos tipos de ações que serão realizadas no lado servidor, como por exemplo: GET, PUT, POST, DELETE, HEAD, OPTIONS ou TRACE. Porém podem necessitar de alterações para sua utilização no ambiente de produção, como tratamentos de erros e timeout pela lib CURL. Algo como:

<?php

    class Client {
        public function setServerIP($serverIP, $user, $pass, $newIP) {

            $response = '';

            $url = sprintf('http://%s:8080/bmservices/manager/iptelecom/%s',
            $serverIP, $newIP);
            $auth = sprintf("%s:%s", $user, $pass);

            $ch = curl_init($url);

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_USERPWD, $auth);

            curl_setopt($ch, CURLOPT_TIMEOUT,5000);
            curl_setopt($ch, CURLOPT_TIMEOUT_MS, 5000);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,3000);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 3000);
            curl_setopt($ch, CURLOPT_NOSIGNAL, 1);

            $response = curl_exec($curl);
            curl_close($curl);

            if (!response) {
                return “Falha ao capturar dados no servidor”;
            }
            return $response;
        }
    }
?>


Altere os modelos propostos e inicie seus testes com o WebService de integração BmTelecom, entre em contato com a equipe de consultores da Bemmelhor SI para iniciarmos uma parceria e você receberá usuário e senha válidos para acesso aos serviços, qualquer dúvida ou sugestão estamos à sua disposição.



Sobre o Author

Profile

Fabrício S Costa

Analista de Sistemas formado pelo Centro de Ensino Superior de Juiz de Fora (CESJF), com especializações em Business Intelligence (BI) e Telecom é desenvolvedor em diversas linguagens e entusiasta de software livre.