Skip to content

AppCivico/Twitter-Chatbot

Repository files navigation

Mandato Aberto no Twitter

Chatbot para Twitter utilizando o account-activity-dashboard de exemplo do Twitter. Feito para replicar o mesmo chatbot do Mandato Aberto disponível no Messenger. Assim como o chatbot para Messenger, os dados de cada usuário inscrito no app são provenientes da API do Mandato Aberto utilizando seu respectivo Twitter ID como identificador.

Dependencias

Crie e configure um Twitter app

  1. Crie um Twitter app apps.twitter.com

  2. Vá em Permissions > Access > assinale Read, Write and Access direct messages.

  3. Vá em Keys and Access Tokens > Your Access Token > clique em Create my access token.

  4. Vá em Keys and Access Tokens, guarde os consumer key, consumer secret, access token e access token secret gerados.

Crie e configure um acesso beta a Account Activity API

  1. Entre em https://developer.twitter.com/en/apply)

  2. Confirme seu telefone (se necessário).

  3. Responda os questionários. Pode escolher "Personal Use". Escreva um texto em inglês explicando porque você quer esse acesso.

  4. Confirme seu e-mail e aguarde alguns dias pela resposta do Twitter.

  5. Crie um ambiente/environment para seu webhook em: https://developer.twitter.com/en/account/environments

  6. Configure um ambiente em "Account Activity API Sandbox" (Uma caixa de diálogo aparecerá).

  7. Configure o rótulo do ambiente (exemplo: "Teste").

  8. Selecione o App que você criou.

Configure e execute essa aplicação

  1. Clone esse repositório
git clone https://github.com/AppCivico/Twitter-Chatbot.git
  1. Instale as dependências do Node.js:
npm install
  1. Crie um novo arquivo config.json baseado no config.sample.json e preencha as chaves e tokens do seu App e o nome do ambiente do seu webhook (exemplo: TWITTER_WEBHOOK_ENV:"Teste"). As chaves e tokens de acesoo do seu App podem ser encontradas em apps.twitter.com. USER e PASSWORD podem ser o que você quiser, e são usadas como uma simples proteção por senha para a interface web de configuração.

  2. Execute localmente (por padrão, ele utilizará a porta 5000):

npm start
  1. Configure um túnel ao localhost com ngrok ou similar.
./ngrok http 5000

Guarde a URL do seu webhook. Por exemplo:

https://9eb889bb.ngrok.io
  1. Com essa URL, revisite seu App, vá em Settings, e adicione as seguintes URLs como URLS de callback permitidas (Não esqueça de salvar as mudanças com "Update Settings" na parte de baixo):
https://9eb889bb.ngrok.io/callbacks/addsub
https://9eb889bb.ngrok.io/callbacks/removesub

Configure seu webhook para receber eventos

Para configurar seu webhook você pode usar a interface web do aplicativo ou os scripts de exemplo da linha de comando. Deixe o servidor Express rodando para tudo funcione.

Usando os scripts de exemplo

Esses scripts devem ser executados da raiz da pasta do seu projeto. Seu ambiente, url ou webhook devem ser passado como argumentos na linha de comando.

  1. Criar a configuração do webhook.
node example_scripts/webhook_management/create-webhook-config.js -e <ambiente> -u <url>

Onde é o rótulo do webhook(e.g. "Teste") e é a url do seu webhook + /webhook/twitter. Importante: nesse projeto, o [arquivo responsável] já inclui a parte do '/webhook/twitter'm então você só precisa de:

node example_scripts/webhook_management/create-webhook-config.js -e Teste -u https://9eb889bb.ngrok.io

Obs: para adicionar um novo webhook será necessário deletar o antigo primeiro com:

node example_scripts/webhook_management/delete-webhook-config.js -e <ambiente>
  1. Adicione uma inscrição do aplicativo para o usuário dono do aplicativo (você?). No acesso gratuito ao Account Activity API o limite é de 15 inscrições.
node example_scripts/subscription_management/add-subscription-app-owner.js -e <ambiente>
  1. Para adicionar a inscrição de um usuário qualquer utilize o login baseado em PIN com o seguinte comando:
node example_scripts/subscription_management/add-subscription-other-user.js -e <ambiente>

Mande o link para o usuário, ele deverá logar-se e te devolver o PIN. Entre com o PIN no terminal e anote os access_token e access_token secret para registrar no oauth.

Note: Mais scripts podem sem encontrados em example_scripts, incluindo:

  • Criar, deletar, visualizar e validar a configuração do webhook.
  • Adicionar, remover, visualizar, contar e listar inscrições dos.

Usando a interface web

Carregue a interface no seu navegador (localhost:5000) e siga as instruções abaixo:

  1. Configuração do webhook. Navegue para "manage webhook". Entre sua URL do webhook e clique em "Create/Update."

  2. Adicione um usuário. Navegue até "manage subscriptions". Clique em "add" e siga com o Login do Twitter. Assim que completa seu webhook irá começar a receber os eventos da atividade da conta do usuário.

Oauth?

Cada usuário precisa de sua própria autenticação para que esse chatbot possa agir em seu nome. Ao realizar a inscrição do usuário (com o PIN, por exemplo) o access_token e o access_token secret serão usados para autenticação. No caso, eles são vinculados a um Twitter ID. A classe responsável é a auth-other-user.js.

Mensagem de Boas-Vindas?

Foi escrito um script para ajudar nessa questão. O que ele faz é apagar todas as mensagens e regras que o usuário já tem e carregar o novo texto da API já criando a regra e configurando essa mensagem como ativa. Execute-o da seguinte maneira:

node example_scripts/misc/create-welcome-message.js -t <ID>

Sendo o Twitter ID do usuário.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages