WhatsApp com Twilio

E que tal receber notificações em seu WhatsApp? Isso mesmo, nesse artigo vamos auxiliar a enviar mensagens pelo HA com Twilio para seu número de whatsapp.

nuvem

Se você já configurou a Ligação com o Twilio, será ainda mais prático.

Caso não tenha feito, será necessário criar uma conta no Twilio como no artigo da Ligação com Twilio.

Configurando o número WhatsApp no Twilio

Após criar a conta no Twilio, faça a autenticação, e clique no menu Programmable SMS.

image

Acesse a opção WhatsApp Beta

image

Agora você receberá uma mensagem que explica sobre este serviço e será solicitado a confirmar os Termos de serviço do whatrsapp. Marque a opção Eu concordo e clique em Confirmar para continuar.

image

Na próxima etapa, você receberá um número do WhatsApp (algo como +1 415 523 8886) para o qual você deve enviar um código para esse número e assim ativar a caixa de envio.

Você deve enviar o texto (code) em negrito para esse número através do whatsapp.
Exemplo: join hollow-hardily

Se funcionar, você pode ver que o Twilio recebeu sua mensagem: “Message Received”"

E também receberá uma mensagem de confirmação no aplicativo Whatsapp.

image

Implementando o Twilio no Home Assistant

No artigo da ligação com o Twilio já tem a explicação dessa etapa, se você já aplicou, não precisará repetir. Se você ainda não fez, siga os passos abaixo:

Agora clique em “Console” no menu e, em seguida, você poderá ver seu sid e token, e deve anotá-lo.

Agora, vá para o arquivo de configuração do Home Assistant e adicione o seguinte código:

twilio:
  account_sid: [your account sid]
  auth_token: [your account auth token]

Após isso, se você ainda não possuir a pasta “custom_components”, crie uma nova pasta e nomeie-a como “custom_components”, dentro dessa pasta, crie outra chamada “twilio_whatsapp”.

Em seguida crie um novo arquivo dentro da pasta twilio_whatsapp e chame-o “notify.py” e copie o texto a seguir para colocar no arquivo.

"""
Twilio Whatsapp platform for notify component.

For more details about this platform, please refer to the documentation at
https://en.techblog.co.il/2019/01/24/easily-send-home-assistant-notifications-using-whatsapp/
"""
import logging

import voluptuous as vol

# from homeassistant.components.twilio import DATA_TWILIO
import homeassistant.helpers.config_validation as cv
from homeassistant.components.notify import (
    ATTR_TARGET, PLATFORM_SCHEMA, BaseNotificationService)

_LOGGER = logging.getLogger(__name__)
# DEPENDENCIES = ["twilio"]

CONF_FROM_NUMBER = "from_number"
CONF_ACCOUNT_SID = "account_sid"
CONF_AUTH_TOKEN = "auth_token"

DOMAIN = "twilio"
DATA_TWILIO = DOMAIN

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
    {
        vol.Required(CONF_FROM_NUMBER): vol.All(cv.string),
        vol.Required(CONF_ACCOUNT_SID): vol.All(cv.string),
        vol.Required(CONF_AUTH_TOKEN): vol.All(cv.string),
    }
)

def get_service(hass, config, discovery_info=None):
    """Get the Twilio Whatsapp notification service."""
    from twilio.rest import Client

    hass.data[DATA_TWILIO] = Client(
        config[CONF_ACCOUNT_SID], config[CONF_AUTH_TOKEN]
    )

    return TwilioWhatsappNotificationService(
        hass.data[DATA_TWILIO], config[CONF_FROM_NUMBER])


class TwilioWhatsappNotificationService(BaseNotificationService):
    """Implement the notification service for the Twilio Whatsapp service."""

    def __init__(self, twilio_client, from_number):
        """Initialize the service."""
        self.client = twilio_client
        self.from_number = from_number

    def send_message(self, message="", **kwargs):
        """Send Whatsapp to specified target user cell."""
        targets = kwargs.get(ATTR_TARGET)

        if not targets:
            _LOGGER.info("At least 1 target is required")
            return

        for target in targets:
            self.client.messages.create(
                to='whatsapp:'+target, body=message, from_=self.from_number)

Agora, crie um novo arquivo e chame-o de “manifest.json” e copie o seguinte texto no arquivo:

{
    "domain": "https://techblog.co.il/2019/01/easily-send-home-assistant-notifications-using-whatsapp/",
    "name": "twilio_whatsapp",
    "documentation": "https://techblog.co.il/2019/01/easily-send-home-assistant-notifications-using-whatsapp/",
    "dependencies": ["twilio"],
    "codeowners": ["@T0merr"],
    "requirements": []
  }

Por último, crie o último arquivo __init__.py e deixe em branco, totalmente vazio e coloque todos esses arquivos dentro da pasta twilio_whatsapp, conforme a imagem abaixo.

image

Configurando a notificação no Home Assistant

Na etapa de configuração final adicione as seguintes linhas ao seu arquivo configuration.yam:

notify:
  - name: Home-Assistant
    platform: twilio_whatsapp
    from_number: whatsapp:+[o número para o qual você enviou a mensagem inicial, que foi criado no twilio]
    account_sid: !secret twilio_sid
    auth_token: !secret twilio_token

Após isso, você deve chegar seu código e reiniciar.

Para testar o serviço de noticação com o whatsapp você pode acessar a tela de serviços e testar manualmente:
image

Target é o seu número no whatsapp.

{
"message":"Home Assistant Teste",
"target":"[nosso número de telefone inclui o código do país]"
}
4 curtidas

Grande Douglas! Como sempre ajudando a comunidade. Mas me tira uma dúvida, eu segui todos os passos e ainda fui no fórum original, mas não chegam as mensagens no meu número. Já olhei os logs e não encontrei nenhum erro aparente. Existe algum log no Twilio para verificar se estou enviando as mensagens de forma correta? Tem algum forma de testar sem ser no Home Assistant?

Tire o nono digito (9 na frente) do seu número (no target) e teste novamente por favor.

45

Valeu Douglas! Vc está demais. Só foi retirar o 9 no início do número do celular e funcionou de primeira.

1 curtida

Fiz a configuração de ligação e deu certo. Só que para mandar mensagem para o whatsapp ele apresenta um erro.
já tenti tirando o “+”, já tentei colocando o número entre “” com e sem o sinal de + e não da certo, sempre apresenta essa mensagem em anexo.
O que pode ser?

!

Coloque por favor como você está enviando a mensagem? O número de destino (target) você está colocando o seu celular?

sim. meu celular. com essa mesma mensagem eu testo a ligação e funciona.

{
“message”:“Home Assistant Teste”,
“target”:"+5547996707913"
}

  • name: whatsapp
    platform: twilio_whatsapp
    from_number: +14155238886
    account_sid: !secret id_twilio
    auth_token: !secret token_twilio

Utilize o botão </> para formar o código. Selecione o código e pressione o botão para deixar no formato padrão.

Quanto ao número, conforme repassei para o Neivaldo, retire o novo digito do seu número e teste novamente por favor.

{
"message":"Home Assistant Teste",
"target":"5547996707913"
}

Já retirei o nono dígito também.

No exemplo que você repassou ainda consta o nono digito.

  • País: +55
  • DD: 47
  • Seu celular com o nodo digito: 996707913
  • Seu celular sem o nono digito: 96707913

Tente:

{
"message":"Home Assistant Teste",
"target":"+554796707913"
}

Já tentei sem o nono dígito e não vai. Coloquei dessa forma que você passou e também não foi. Pelo que entendi do código de erro ele não está identificando o numero do twilio como sendo inválido. Vou anexar novamente aqui.

Você já tentou enviar o código novamente para ativar o número e em seguida realizar o teste?

Se ficar muito tempo sem utilizar, se eu não me engano é preciso refazer esse processo para funcionar (isso quando fica muito tempo sem utilizar o serviço de envio de mensagem pelo whatsapp com twilio).

Primeiramente gostaria de agradecer pela contribuição Douglas.
No teste do service envia a mensagem certinho.

Agora estou na dúvida para criar a ação na automação, segue exemplo abaixo:

- alias: Notificar que a porta da Entrada foi Aberta
  trigger:
    platform: state
    entity_id: binary_sensor.door_window_sensor_158d000XXXXXX
    from: 'off'
    to: 'on'
  action:
      - service: notify.twiliowhatsaoo
      data:
        message: 'A porta foi aberta'
        target: +55XXXXXXXXXX

estou com a mesma duvida, alguém pode auxiliar?

O meu ficou assim Jerferson Kennedy e esta funcionando perfeitamente

- id: '1585646666666'
  alias: Geladeira desligada
  description: Envia um WhatsApp de Alerta
  trigger:
  - entity_id: switch.06517275xxxxxxxxxxxyy67564
    from: 'on'
    platform: state
    to: 'off'
  condition: []
  action:
  - data:
      message: ALERTA!!! - A Geladeira foi DESLIGADA!
      target: '+554799744164'
    service: notify.home_assistant
1 curtida

funciona todos os dias?

Douglas, ele manda mensagem para outro numero de whatsapp ou só o cadastrado no twilio?

O número que você quiser…

o From (de) é que vai usar o número cadastrado/criado no twilio.

1 curtida

Olá após algumas horas para resolver o problema igual ao edmur consegui usando a config abaixo adicionando “whatsapp:” antes do numero e no meu caso não precisei retirar o nono digito do meu numero na mensagem de teste (target).

notify:
  - name: Home-Assistant
    platform: twilio_whatsapp
    from_number: whatsapp:+14155238886
    account_sid: !secret twiliosid
    auth_token: !secret twiliopsw
Nota: Estou usando home assistant docker ubuntu 18.4 e não em VM.