Sprachanruf aus HA an Telegram

Ich möchte folgendes umsetzten. Da ich Notifications bereits aus HA zu Telegram sende, möchte ich bei wichtigen Nachrichten wie z.B. „Stromausfall zu Hause“ nicht nur eine Nachricht in Telegram erhalten, sondern einen Sprachanruf zu Telegram absetzen. Wichtig wäre mir dabei, dass es unter Telegram Klingelt und ich somit sofort aufmerksam werde. Bei Notifications ist das immer so eine Sache, man Achtet halt nicht immer sofort darauf beziehungsweise überhört schon mal den Ton! Hat jemand eine Idee oder sogar schon eine Lösung?

Hi, Schade keiner eine Idee?

Vielleicht hilft dir das weiter: Telegram Phone Calls from HomeAssistant (with Voice Messages) - CallMeBot API

Ansonsten schwint das mit der telegram Integration nicht möglich zu sein.

Oh Danke für den Link, dass hört sich schon mal gut an. Werde ich Morgen gleich mal ausprobieren, vielen Dank.

Hab das jetzt mal nach der Anleitung versucht, aber funktioniert leider nicht.
Folgende Schritte habe ich durchgeführt:
-Bei dem authorize CallMeBot angemeldet
-unter Telegram diesen Bestätigt

  • Dann in die Config.yaml wie auf der Internetseite unter Punkt 1 den Code eingefügt, erster Abschnitt ist für meine Nachrichten, zweiter für den Call wie auf der Internetseite
notify:
  - platform: telegram
    name: xxxxxxxxx
    chat_id: xxxxxxxx
  - platform: telegram
    name: xxxxxxx
    chat_id: xxxxxxx
# Ab hier Eintrag für einen Call zu Telegram 
  - name: Telegram_Call
    platform: rest
    resource: https://api.callmebot.com/start.php
    data:
      source: HA
      user: xxxxxxxxxx
      lang: en-GB-Standard-B        #specify the languange and voice to use. See above the different options.
      rpt: 2                        #how many times you want the message to be repeated by the bot.

Jetzt unter einer Automation in HA eine Benachrichtigung als Aktion eingestellt mit
Benachrichtigung: Send a notification with telegram_call
Mit dem yaml Code

action: notify.telegram_call
metadata: {}
data:
  message: "This+is+Home+Assistant+calling+you+a+to+inform+you+about+something+urgent

Beim abspeichern kommt aber leider die Meldung

Ich weiß leider nicht was mit dieser Meldung gemeint ist
Kann es sein das er das Ganze als Data interpretiert, anstatt als Sprachanruf?

Hallo, schade, dass es nicht funktioniert. Ist in der Automation der Code richtig formatiert? Ist Message: richtig eingerückt (1x Tab)?

Der Name der Notification entspricht nicht der verwendeten, da case-sensitive beachtet werden muss. Am besten bei der Kleinschreibung bleiben.

1 „Gefällt mir“

O.k. habe die notification in der yaml jetzt klein geschrieben, nun kommt aber bei der yaml Überprüfung im Entwicklerboard folgende Meldung

Moin, wie sieht denn deine Zeile 34 in der config.yaml aus (Screenshot)? Irgendetwas mit notify funktioniert da nicht. Irgendwie sehe ich hier keine Methode zum Abruf der Daten über GET oder POST ( das kommt auf die verwendete API an). Kannst es ja mal so testen. :slight_smile:

notify:
  - platform: telegram
    name: user1
    chat_id: 123456789
  - platform: telegram
    name: user2
    chat_id: 987654321
  - platform: rest
    name: telegram_call
    resource: https://api.callmebot.com/start.php
    method: GET
    params:
      user: "xxxxxxxx"
      text: "{{ message }}"
      lang: "en-GB-Standard-B"
      rpt: "2"
    headers:
      Content-Type: application/x-www-form-urlencoded
                      

So habe jetzt das Problem etwas weiter eingrenzen können. Zunächst einmal kann man einen Fehler auf der Telegram Seite ausschließen. Mit dem Testcall aus dem Browser heraus über
Telegram Authentication funktioniert der Anruf nach Telegram. Über HA leider nicht.
Derzeit werden keine Probleme bei der yaml Prüfung oder dem versenden einer Sprachnachricht aus einer Automation heraus mehr in HA angezeigt.
Aber es kommt halt kein Sprachanruf an. Hier nochmal der Auszug aus der Config.yaml und der notification beim Automatisieren

1;Anbei der ganze Eintrag zu Telegram in der Config.yaml

# Telegram Bot
telegram_bot:
  - platform: polling
    api_key: xxxxxxxxxxxxx
    allowed_chat_ids:
     - xxxxxxxxxx
     - -xxxxxxxx
# Ab hier Nachrichtenversand an mich und der Gruppe
notify:
  - platform: telegram
    name: xxxxxxxx
    chat_id: xxxxxxxxxx
  - platform: telegram
    name: xxxxxxxxxx
    chat_id: xxxxxxxxx
# Ab hier Eintrag für einen Call zu Telegram 
  - name: telegram_call
    platform: rest
    resource: https://api.callmebot.com/start.php
    data:
      source: HA
      user: xxxxxxxxx   			#enter your telegram username
      lang: en-GB-Standard-B        #specify the languange and voice to use. See above the different options.
      rpt: 2                        #how many times you want the message to be repeated by the bot.

Die Zeile 34 ist der Eintrag - name: telegram_call das meckert er aber nachdem ich alles klein geschrieben habe nicht mehr an.


2; Wenn ich unter einer Automation
Benachrichtigung: Send a notification with telegram_call einfüge und mit Aktion ausführen teste wird Aktion erfolgreich durchgeführt angezeigt. Aber es kommt kein Call an
Hier Eingetragen habe ich folgendes Eingetragen, da der Eintrag aus dem Link von Telegram nicht angenommen werden kann.

action: notify.telegram_call
data:
  message: Hallo dies ist ein Test.

Hat jemand noch eine Idee woran es liegen kann?

Habe deinen vorschlag für die Yaml so mal eingetragen wird auch gespeichert.

- platform: rest
    name: telegram_call
    resource: https://api.callmebot.com/start.php
    method: GET
    params:
    data:
      user: xxxxx
      text: {{ Hallo }}
      lang: en-GB-Standard-B
      rpt: 2
    headers:
      Content-Type: application/x-www-form-urlencoded                    #how many times you want the message to be repeated by the bot.

Aber leider kommt bei der yaml Prüfung folgender Fehler


Habe mal Text mit massage ersetzt gleiches Problem. Was kann da Falsch sein?

Du versucht eine Variable mit dem Name Hallo zu verwenden.

Schau dir mal die Beispiele zur Verwendung von Strings in YAML in folgender URL an.

Also über diesen Weg (config.yaml) einen Call von HA aus nach Telegram abzusetzen gebe ich auf. Eventuell ist es gar nicht möglich dies zu realisieren, sagt zumindest die KI, dass ein Call hierrüber nicht möglich ist. Ich habe jetzt mal einen Test gemacht indem ich eine Überschriftskarte unter dem Dashbord hergenommen habe, unter dieser eine Interaktion erstellt, mit der http-Zeile, sodass ein Call durch dieser an Telegramm abgesetzt wurde, funktioniert also.
Code:

tap_action:
  action: url
  url_path: >- http://api.callmebot.com/start.php?source=auth&user=@xxxxxxx&text=This+is+a+test+from+CallMeBot&lang=en-US-Standard-B
heading: telegram test

Danach habe ich mit Hilfe der KI nochmals versucht in der config.yaml mit der oben beschrieben Lösung doch noch eine Automation zu erstellen
Eintrag in der Config.yaml konnte erfolgreich abgespeichert werden:

rest_command:
  send_callmebot_message:
    url: "http://api.callmebot.com/start.php?source=auth&user=@xxxxxx&text=Hallo+wir+haben+einen+Stromausfall+CallMeBot&lang=en-US-Standard-B"
    method: GET

Code bei der Erstellung der Automation:

automation:
  - alias: 'CallMeBot bei Schalteränderung'
    trigger:
      - platform: state
        entity_id: switch.virtueller_schalter_call
        to: 'on'  # oder 'off', je nachdem, wann du den Befehl senden möchtest
    action:
      - service: rest_command.call_me_bot

Bringt dann aber Fehler

Hat noch jemand eine Idee was da falsch ist, bzw. glaube ich, dass ein Call über eine Automation nicht möglich ist, oder?
Zweite Frage, wenn dies nicht möglich ist würde ich gerne den Umweg über die oben beschriebene Möglichkeit über das Dashboard realisieren. Gibt es eine Möglichkeit den hinterlegten Pfad bei der Interaktion einer Dashboardkarte über einen Helfer, etc. zu triggern?

Du definierst ein Rest-Command mit dem Name „send_callmebot_message“, rufst aber in der Automation das Rest-Command " call_me_bot" auf.

Wie Hecki bereits schrieb, hast du in der Automation einen anderen Namen als in der configuraiton.yaml angegeben :slight_smile:

Das stimmt nicht :slight_smile: Da das ja einfach nur ein REST-API Call ist, den man dort definiert, muss das eigentlich möglich sein.

1 „Gefällt mir“