WhatsApp com Twilio

Douglas, muito obrigado!!!
Funcionou aqui…

1 curtida

galera da pra enviar imagens igual o telegram ou so menssagens mesmo?

Pessoal,

Após algumas tentativas, descobri que só é possível enviar mensagens para celulares que estiverem cadastrados no TWILIO.
Tentei enviar para o telefone da minha esposa, e no log da plataforma do TWILIO foi exibida a mensagem abaixo:

(Error: 63015) Channel Sandbox can only send messages to phone numbers that have joined the Sandbox

Tive que criar um conta pra ela, com um SID e TOKEN especifico, habilitar o whatsapp sandbox e configurar o Home assistant com uma NOTIFY para ela tb.

A minha configuração ficou assim:

notify:
 - name: home_assistant_whats_cadu
    platform: twilio_whatsapp
    from_number: whatsapp:<meu numero twilio>
    account_sid: !secret twilioaccount
    auth_token: !secret twiliotoken

  - name: home_assistant_whats_fer
    platform: twilio_whatsapp
    from_number: whatsapp:<numero_fer_twilio>
    account_sid: !secret twilioaccountfer
    auth_token: !secret twiliotokenfer

Valeu Douglas, funcionou perfeitamente.

Ele permite enviar imagens e vídeos? como seria?

Obs: estou sentindo falta dos seus vídeos no canal kkkk

abraço

Para contornar essa situação bastaria que a sua esposa enviasse o join code para o numero do Twilio.
Acabei de fazer essa configuração, criei um contato com o numero Twilio, enviei para o meu filho e bastou ele enviar o mesmo texto join code para o contato que passou a aceitar mensagens.

Para enviar para múltiplos contato basta criar um array de números no target:

{
  "message": "Mensagem para múltiplos contatos",
  "target": ["+55618XXXYYYY", "+55618YYYXXXX"]
}

Parabéns por mais esse excelente tutorial, @douglas .

Deu certinho aqui, eu gostaria de acrescentar uma pequena modificação que eu fiz para permitir enviar anexos, como fotos, videos, documentos e etc. Nesse link podemos ver a lista de arquivos permitidos.

No arquivo “notify.py” vamos fazer uma pequena modificação nas 3 ultimas linhas para permitir o envio de arquivos:

Substitua isso:

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)

Por isso:

def send_message(self, message="", **kwargs):
    """Send Whatsapp to specified target user cell."""
    targets = kwargs.get(ATTR_TARGET)
    data = kwargs.get(ATTR_DATA) or {}
    twilio_args = {"body": message, "from_": self.from_number}
    
    if "media_url" in data:
      twilio_args["media_url"] = data["media_url"]

    if not targets:
      _LOGGER.info("At least 1 target is required")
      return
    
    for target in targets:
      self.client.messages.create(to='whatsapp:'+target, **twilio_args)

Utilize os formato abaixo para testar o serviço de notificação:

{
  "message": "Enviando Anexo",
  "target": "+55DD########",
  "data": {
    "media_url": "https://brands.home-assistant.io/homeassistant/icon.png"
  }
}

A URL do arquivo deve ser publica, ou seja, acessível pela internet.

Por exemplo: https://[meu-ha].duckdns.org:8123/local/minha-foto.jpg

Onde minha-foto.jpg esta armazenado na pasta www do seu HA

Para enviar a mensagem para vários destinatários basta criar um array com os números.

{
  "message": "Mensagem para varios destinatarios",
  "target": ["+55DD########", "+55DD0000000"],
  "data": {
    "media_url": "https://brands.home-assistant.io/homeassistant/icon.png",
  }
}

Aproposito, para enviar mensagens para outros contatos basta que a pessoa envie o mesmo join code para o seu número Twilio, não é necessário que o contato se cadastre.

Agora caso você não queira seguir todos os passos do tutorial do Douglas e ter o trabalho de criar arquivos de custom components você pode apartir desse ponto do tutorial, com Account_sid, auth_token e numero Twilio, utilizar o component de integração Twilio SMS do HA (https://www.home-assistant.io/integrations/twilio_sms/)

Basicamente apos adicionar o Twilio em seu arquivos de configuração voce deve adiciona o Twilio SMS

# Example configuration.yaml entry
notify:
  - name: twilio_whatsapp
    platform: twilio_sms
    from_number: whatsapp:+[o número para o qual você enviou a mensagem inicial, que foi criado no twilio]

Utilizando esse component é importante que o telefone esteja no padrão whatsapp:+5511987654321

Exemplo de teste:

{
  "message": "Enviando Anexo",
  "target": "whatsapp:+5511987654321",
  "data": {
    "media_url": "https://brands.home-assistant.io/homeassistant/icon.png"
  }
}

Exemplo de automação

# Example automation notification entry
automation:
  - alias: The sun has set
    trigger:
      platform: sun
      event: sunset
    action:
      service: notify.twilio_whatsapp
      data:
        message: 'The sun has set'
        target:
          - 'whatsapp:+14151234567'
          - 'whatsapp:+15105555555'
        data:
          - media_url: 'https://www.home-assistant.io/images/supported_brands/home-assistant.png'
1 curtida

Show,

Muito obrigado pela informação.

Abs

1 curtida

Alvaro, muito obrigado pela ajuda.

Eu realizei as mudanças que você sugeriu para envio dos anexos e deu tudo certo.

Eu uso o Node-Red e não estou conseguindo integrar essa solução.

Antes dessa implementação eu fazia dessa forma e qualquer mensagem que eu passava no payload ele enviava no whatsapp
{“message”: “{{payload}}”,“target”:"+55XXXXXXXXXXX"}

Tentei fazer dessa forma:
{“message”: “{{payload}}”,“target”:"+55XXXXXXXXXXX",“data”:{{playload}}}

Passando no payload o seguinte: media_url: https://brands.home-assistant.io/homeassistant/icon.png

mas não deu certo.

o que estou fazendo errado:

Obrigado

1 curtida

Cara eu nunca utilizei o Node-Red, mas eu acredito que pode ser um erro na sintaxe do payload que vc esta passando, você tentou verificar o que diz o log do sistema?

Eu imagino que o erro pode estar aqui:

Nesse exemplo é bem provável que o data fique dessa forma:

“data”: media_url: https://brands.home-assistant.io/homeassistant/icon.png

Quando o correto seria ele ficar dessa forma:

“data”: { media_url: "https://brands.home-assistant.io/homeassistant/icon.png" }

Verifique o log e tente ajustar esse trecho que eu acredito que possa ser esse o problema.

Abraço.

Alvaro,

Agradeço a ajuda, mas tentei de tudo e não consegui. Então contornei da seguinte forma:
Criei uma automação no HA da forma que você ensinou acima e do meu fluxo do Node-Read eu chamei a automação.
Tudo funcionando perfeitamente.
Muito obrigado

Explêndido!

A integração ‘Home Assistant x Twilio’ para envio de alertas via ligação telefônica (call phone) funciona muito bem! Vale observar que, uma vez não atendida a ligação telefônica quando da entrada da chamada, o destinatário não tomará conhecimento do teor do alerta.
A integração ‘Home Assistant x Twilio x Whatsapp’ para envio de alertas por meio de mensagem de texto também funciona muito bem. Além disso, possibilita ao usuário tomar conhecimento do conteúdo do alerta a qualquer tempo desde o seu recebimento, já que a mensagem permanece na sua caixa do Whatsapp, tal como na integração ‘Home Assistant x Telegram’.

Parabéns pela didática, Douglas!
Muito obrigado pelo compartilhamento!

2 curtidas

Alvaro, me ajuda por gentileza.

estou tentando enviar um video capturado pelo HA de uma das cameras,
porem ele não busca o video na pasta, só manda o texto “Enviando Anexo”
no Telegram eu consigo enviar esse video,
tem alguma outra configuração que eu devo fazer?

estou com o seguinte código:

{
  "message": "Enviando Anexo",
  "target": "+5511xxxxxxxxx",
  "data": {
    "media_url": "/config/www/imgs/cameras/gar_fechada.mp4"
  }
}

Alguém pode dizer quantas mensagens gratuitas eu ganho?

Não sei o que fiz de errado. se alguem puder fazer um video mostrando melhor como é a configuração…
o meu fica dando esse erro abaixo…
ajuda