npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

calllogstest

v0.0.1

Published

Tendo em mente a demora e incômodo propocionados pelo atendimento através de URAs tradicionais, o motivador deste asset é a necessidade observada de um "meio de campo" que procure resolver mais rápida e simplificadamente a solicitação do cliente através d

Downloads

3

Readme

Sobre o Asset

Tendo em mente a demora e incômodo propocionados pelo atendimento através de URAs tradicionais, o motivador deste asset é a necessidade observada de um "meio de campo" que procure resolver mais rápida e simplificadamente a solicitação do cliente através do autoatendimento do mesmo.

A ideia deste aplicativo é, então, realizar a captura de uma chamada telefônica para um determinado número e, a partir deste evento, abrir uma interface visual que apresente as opções mais requisitadas por clientes que ligam para a URA da empresa.

Arquitetura e Componentes

Este app foi adaptado para que a captura de chamadas fosse possível em diferentes versões Android. Esta sessão explicará as maneiras com que a captura é realizada em dois sub-tópicos:

Versão Android = 9:

O aplicativo se utiliza de Broadcast Receivers para receber do Sistema Operacional do celular toda alteração de estado em chamadas telefônicas (EXTRA_STATE_IDLE, EXTRA_STATE_RINGING e EXTRA_STATE_OFFHOOK).

Quando o app, através deste receptor, percebe que há uma chamada disparada, ele faz uma segunda validação, verificando se o número para o qual se discou é o especificado para monitoramento.

Versão Android >= 10:

A fim de ser notificado pelo sistema operacional mediante o evento de o usuário disparar uma chamada telefônica, fez-se necessário registrar o aplicativo como o serviço de redirecionamento de chamadas padrão do dispositivo da usuário.

Esta solicitação é realizada através da classe RoleManager, adicionada a partir da API level 29 (Android 10).

O "role" (papel/função/cargo) que deseja-se adquirir, como dito acima, é o de redirecionamento de chamadas telefônicas ou, em termos técnicos, ROLE_CALL_REDIRECTION. Com este papel, o app pode desfrutar dos métodos de redirecionamento/cancelamento de chamadas disparadas disponíveis na classe CallRedirectionService.

Independentemente da versão...

...o aplicativo, através do Broadcast (= Android 9) ou do "role" de CallRedirectionService (>= Android 10) , é capaz de encerrar essa chamada disparada e trazer sua interface como atividade principal na tela do celular do usuário.

Dentre as opções apresentadas nesta simples interface que foi desenvolvida para a demo, temos dois botões:

  • Abrir Suporte:

    Exibe, em um iframe, um página web a fim de exemplificar a funcionalidade do app.

  • Retornar à Chamada:

    Possibilita que o cliente não satisfeito com as opções apresentadas na interface opte por retornar a ligação da URA, sem ser interrompido pelo app novamente.

A implementação do Broadcast Receiver também é utilizada para que o app pudesse saber quando deveria ignorar a chamada disparada para o número monitorado ao invés de ativar seu processo de captura, cancelamento da ligação e apresentação da interface visual.

Esta funcionalidade de ignorar a chamada disparada sob determinadas condições é importante pelo fato de que desejou-se implementar um botão de "Retornar à ligação" no aplicativo. Para que o clicar deste botão não ocasionasse um loop em que a ligação feita pelo próprio app fosse capturada e cancelada, utilizou-se uma variável boolean ignore, que é atualizada mediante informação recebida pelo Broadcast Receiver:

  • Ao clicar no botão "Retornar à ligação", a variável ignore é atualizada para true;
  • Ao encerrar de uma ligação (independente do número telefônico discado), a variável ignore é atualizada para false;

A captura de chamadas e exibição da interface só acontecerá caso a variável ignore seja false;

Pre-requisitos

Para testar o código fonte disponibilizado, é necessário ter um aparelho celular android que possa fazer chamadas telefônicas.

Também é necessário conceder algumas permissões para que o app possa:

  • Identificar o status de chamadas do dispositivo;
  • Verificar se o número discado é o da URA definida;
  • Encerrar a chamada ao fazer a captura;
  • Iniciar uma nova chamada mediante clique no botão "Retornar à chamada";

Em termos técnicos, as permissões solicitadas pelo app são:

  • Android = 9

    • ANSWER_PHONE_CALLS
    • CALL_PHONE
    • READ_PHONE_STATE
    • READ_CALL_LOG
  • Android >= 10

    • CALL_PHONE
    • READ_PHONE_STATE
    • Ser reconhecido como CallRedirectionService padrão

Como realizar o Deployment

Há duas maneiras que o app pode ser instalado:

Através da Apk

Neste link é possível baixar a apk do aplicativo em questão. Ela se trata do aplicativo compilado e pronto para ser instalado em um celular Android.

Para instalar um app não originário da Play Store, é preciso dar uma permissão de instalação de apps externos ao aplicativo utilizado para exibir o arquivo apk. A solicitação de tal permissão é apresentada através do seguinte modal:

Clicando em "Settings" (o texto no botão pode mudar conforme língua selecionada para o dispositivo e conforme marca do aparelho), o sistema redireciona para a tela em que é possível conceder a permissão de instalar apks externas:

Feito isso, basta instalar o app através do próximo modal apresentado:

Fazendo Build e instalando através do React Native

Após completar todos os passos de setup inicial do React Native, é possível instalar o app conectando o celular via usb no computador e rodando o seguinte comando na raiz do diretório do código fonte:

    npx react-native run-android

Para o celular ser identificado, no entanto, é preciso habilitar a opção de USB Debugging no celular Android. O passo a passo abaixo mostra como fazê-lo:

  1. Abra o aplicativo de configurações do seu celular e encontre a opção "Sistema":
  1. Selecione a opção "Sobre o dispositivo"
  1. Selecione a opção "Informações de Software":
  1. Clique repetidamente na opção "Build Number":
  1. Isso habilitará a opção de "Opcões do desenvolvedor", disponível no menu "Sistema" do app de configurações:
  1. Dentro do menu de opções do desenvolvedor, habilite o toggle de "USB Debugging":

Pronto! Conecte o celular no computador via USB e execute o comando do react explicado anteriormente:

    npx react-native run-android

Guia do Usuário

Na primeira execução do aplicativo, serão solicitadas ao usuário a concessão das permissões de acordo com a versão android do dispositivo em questão:

Uma vez que o usuário concorde com estas concessões, o aplicativo está pronto para realizar capturas. O número que está sendo monitorado, por padrão, é o 115, embora isto possa ser personalizado no código fonte.

Disque e ligue para este número e veja o app funcionando!