Como configurar o Telegram - CALLBACK

Pessoal, peguei a primeira parte do tutorial do nossa grande amigo Douglas

Montei a primeira parte em cima do dele.

Para utilizar o telegram no Home Assistant você não precisa instalar nenhum componente ou add-on.

Você pode ver mais detalhes na página oficial do home assistant

Home Assistant

Telegram

Instructions on how to add Telegram notifications to Home Assistant.

Porém você precisará seguir os passos abaixo.

Primeiro você precisa abrir o seu telegram na plataforma que achar melhor (android, web, iphone…)
Com o telegram aberto, procurem o bot chamado BotFather como na imagem abaixo:

Criando um bot

Feito isso, será necessário criar um novo bot para você. Então clique na opção /newbot .

1) Irá vir uma pergunta questionando qual o nome do seu bot. Você digita um nome apropriado para você.
Exemplos: Watson, Home Assistant, Morpheus, MyBot, etc…

2) A segunda pergunta é o nome de usuário. Perceba que deverá acompanhar a palavra “ bot ” no final do username.
Exemplos: watsom_bot, homeassistant_bot, morpheus_bot, mybot, etc…

Logo em seguida você receberá as informações de finalizado junto com o token para acesso via API.

Copie esse código e salve em um documento, bloco de notas para ser utilizado mais para frente.

Após criar seu bot, você precisará procurar seu bot nos seus contatos do Telegram. Você irá procurar pelo mesmo nome que você deu no “username”. E clicar para falar com ele. Irá abrir a tela de conversa com um botão START, clique nesse botão.

3) Será necessário resgastar o “chat_id”. Para você obter essa informação você precisará copíar o token gerado anterior, copiar a url a seguinte URL https://api.telegram.org/bot YOUR_API_TOKEN /getUpdates e trocar a parte “YOUR_API_TOKEN” pelo token que você gerou do seu bot criado.
Exemplo: http://api.telegram.org/bot578745016:AAFvUqqEPEjeBgW40IhwO_TZgGJS3QitdXQ/getUpdates

E colocar no seu navegador (chrome, firefox, ie, safari…). O resultado se tudo ocorrer bem deve ser esse:

4) Agora volte ao telegram, e no seu bot digite qualquer coisa para ele. Exemplo: Olá meu bot.
Volte para a url da api com seu token e atualize a página. Irá mostrar o valor do chat_id. Copie conforme a imagem abaixo e guarde num documento ou bloco de notas.

esse é o chat_id

O Chat ID e o ID do seu Bot, guarde-o

Pessoal, essa parte é importante, se você quer ter somente o telegram enviando mensagem, deixar polling, se você quer que envie e receba, precisa deixar webhooks.

Criar um grupo por exemplo chamado CASA, colocar seu homeassistant_bot nele (ficando você é o seu bot no grupo)
Procurar o BOT “Group ID”, dar um /start, adicione ele no grupo criado e pegue o ID do Grupo.

Tendo seu user ID (Bot: GetIds Bot) e seu Group Id (Bot: Group ID), e so seguir os passos:

Outro ponto importante, a API do telegram aceita porta 80, 88, 443 e 8443.
Se você tem essas portas mapeadas , maravilha, se não precisa criar o mapeamento, ai sugiro 8443.
No meu caso eu tenho externo 8123 e interno 443 (NGIX), então criei mais um mapeamento 8443 para 443.

Além disso, você precisa “SETAR” seu webhook, no endereço abaixo
https://api.telegram.org/botSUAAPEIKEY/setWebhook?url=https://suaurl.duckdns.org:8443/api/telegram_webhooks

Exemplo:
https://api.telegram.org/bot123456789:AAAAAAAAAAAAAAAAAAAA/setWebhook?url=https://homeassistant.duckdns.org:8443/api/telegram_webhooks

Configurando o arquivo configuration.yaml

# Example configuration.yaml entry for the Telegram Bot
telegram_bot:
# TELEGRAM - NOT EXPOSED
#  - platform: polling
#    api_key: APIKEY
#    allowed_chat_ids:
#      - USERID
#      - -GROUPID
# TELEGRAM - EXPOSED
  - platform: webhooks
    api_key: APIKEY
    url: https://suaurl.duckdns.org:8443
    allowed_chat_ids:
      - USERID
      - -GROUPID
    trusted_networks:
      - 127.0.0.1/32 # LOCALHOST NGIX
      - 172.30.33.4 # TELEGRAM API

# Example configuration.yaml entry for the notifier
notify:
  - name: NOTIFIER_NAME #nome que achar melhor
    platform: telegram
    chat_id: CHAT_ID_2 #aqui você coloca o chat_id que você pegou após conversar com o bot.

OBS.
O PYTHON tem um bug, você precisa deixar no webhooks tanto seu USERID e seu GROUPID, pois está na programação AND e não OR, assim que resolver podem deixar 1 somente.

Exemplo de automação para notificar quando o seu HA é iniciado

Vale lembrar o seguinte:

automation:
  # alias = Nome da sua automação "LAMPADA LIGADA"
  - alias: 'Teste de telegram'
    # trigger = São os gatilhos que definem quando sua automação irá ser executada
    trigger:
      platform: homeassistant
      event: start
    # action = São as ações que sua automação irá executar ao iniciar
    action:
      service: notify.NOTIFIER_NAME # aqui você coloca o nome que você definiu no notify no campo "name" na configuração anterior.
      data_template:
        message: "Você quer desligar a lampada?"
        data:
          inline_keyboard:
            - 'Desligar:/lightOff' 

- alias: 'LAMPADA - DESLIGAR - TELEGRAM' #NOME QUE DESEJAR
  initial_state: true
  trigger:
    platform: event
    event_type: telegram_callback
    event_data:
      data: '/lightOff'
  action:
    - service: notify.telegram
      data:
        message: 'Ok, lampada desligada.'
    - service: light.turn_off
      entity_id: light.entidade
    - service: light.turn_off
      entity_id: light.entidade2


Com isso configurado você poderá agora usar o serviço do Telegram CALLBACK em suas automações, testes, scripts, etc.

Para identificar problemas:
-Olhar o homeassistant.log
-Ferramentas desenvolvedor, eventos, escutar o telegram_callback

Dessa forma você vai conseguir ver se está chegando ai a chamada do webhook, se não tem erro na config ou se algum ip está sendo barrado.

Abraços
Tadeu

1 curtida

valeu por compartilhar…

agora quem tem nabucasa como faz com esse negócio de portas?

Pelo que sei o Nabucasa usa a porta 80, então você pode fazer o callback no seu endereço e não precisa mapear.

1 curtida

Rapaz, ficou confuso essa parte dos ID’s. Tem que pegar o USERID, GROUPID e o CHAT_ID? Porque o chat_id que apareceu na conversa com o bot (pelo link do novegador) é o mesmo UDERID que aparece quando uso o Bot: GetIds Bot. É isso mesmo?

Bom dia, cada Bot da seu ID

Procure no Telegram na barra de Pesquisa
Group ID - Icone preto escrito ID em rosa = Esse vai mostrar o ID do grupo que você criou . Ex Casa
/start ENTER
Escolha o grupo que quer adicionar
GetIDs Bot - Icone marrom escrito ID Branco = Esse vai mostrar o ID do seu usuário.
:bust_in_silhouette: You
├ id: xxxxxx
├ is_bot: false
├ first_name: Rodrigo
├ last_name: xxxxx
├ username: rodrigotadeu (Telegram: Contact @rodrigotadeu)
└ language_code: pt-br (-)

1 curtida

Boa tarde meu amigo , consigo fazer o bot fazer uma chamada pelo telegram , quando algum evento acontecer ? obrigado