NEWS
[gelöst] URL per Telegram versenden
-
Hallo,
ich habe eine kurze Frage zum Telegram Adapter.
Wenn es klingelt schickt mir ein Script ein Foto von der Türkamera. Das Foto kommt vom Synology-Adapter. Das funktioniert prima.
Jetzt wollte ich die Telegram Nachricht um einen Button ergänzen, der beim Druck eine URL von der Kamera überträgt. Erst wollte ich einen Link für das Starten des VLC-Players einbetten, aber da ich hier überhaupt nichts gefunden habe, wäre eine URL gut, die auf das "linkMJpegHttpath" Objekt vom Synology-Adapter stimmt. Hier werden dann wechselnde Standbilder von der Kamera im Webbrowser gezeigt.
Das gute ist, man kann eine beliebige URL übertragen, jedoch keine mit Anführungsstrichen.
Meine Ideen waren:
Die URL fest übergeben:sendTo('telegram.0', { text: 'Test', reply_markup: { inline_keyboard: [ [{ text: 'Link', callback_data: '1', url: 'http://192.168.0.65:4000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=5&StmKey="e655d488415edba5eee5a46673ca0ff6"'}], ] } });
Direkt das Objekt auslesen:
sendTo('telegram.0', { text: 'Test', reply_markup: { inline_keyboard: [ [{ text: 'Link', callback_data: '1', url: getState("synology.0.SurveillanceStation.cameras.Tor.linkMjpegHttpPath").val}], ] } });
Ich erhalte immer die Fehlermeldung:
Error (1158) Cannot send message [chatId - 1495719155]: Error: ETELEGRAM: 400 Bad Request: BUTTON_URL_INVALID
Lustig ist, dass man beim manuellen Abändern der URL alles bis zum (und wirklich inklusive dem ersten Anführungszeichen!) stehen lassen kann. Das wird dann übertragen.
Aber schon ein Buchstabe nach dem Anführungszeichen erzeugt schon einen Fehler:
url: 'http://192.168.0.65:4000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=5&StmKey="e'genauso wie
url: 'http://192.168.0.65:4000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Stream.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=5&StmKey="e"'Jemand eine Idee?
-
@mpenno Das funktioniert:
sendTo('telegram.0', { text: 'Test', reply_markup: { inline_keyboard: [ [{ text: 'Link', callback_data: '1', url: "www.google.de"}], ] } });
Vielleicht mal url beginnen mit " und beim key die " weglassen oder als 2.Versuch dann dort ' nutzen?
-
@mcu Danke für die Antwort.
Das habe ich probiert. Jede URL ohne Anführungszeichen geht. Auch die Fragezeichen sind kein Problem.
url: 'http://192.168.0.65:4000...&StmKey=' --> geht url: "http://192.168.0.65:4000...&StmKey=" --> geht url: 'http://192.168.0.65:4000...&StmKey="e"' --> geht nicht url: 'http://192.168.0.65:4000...&StmKey=\"e\"' --> geht nicht
Erreiche ich den Adapter-Entwickler irgendwo? Auf Github konnte ich nichts finden.
VG
-
url: 'http://192.168.0.65:4000...&StmKey=eqwjewjr'
Schon probiert?
Issue kannst du hier anlegen und fragen:
https://github.com/iobroker-community-adapters/ioBroker.telegram/issues -
@mcu
Du hast recht. Auf sowas simples wäre ich gar nicht gekommen. Es klappt.Jetzt habe ich festgestellt, dass sich der Link von den Surveilance Station leider ändert, wie oft weiß ich nicht. Also muss ich mir die URL aus dem Objekt vom Synology-Adpater holen und die Anführungsstriche entfernen.
In der Art:var urlTor = getState("synology.0.SurveillanceStation.cameras.Tor.linkMjpegHttpPath").val; urlTor = urlTor.replace(/"/g,"");
Danke für Deine Hilfe, es lohnt sich nun für mich hier weiter zu machen.
VG
-
@mpenno Bitte oben die Überschrift anpassen [gelöst]. Danke.
-
@mpenno sagte in [gelöst] URL per Telegram versenden:
Jetzt habe ich festgestellt, dass sich der Link von den Surveilance Station leider ändert, wie oft weiß ich nicht.
Nicht unbedingt, den kannst Du "fest" einstellen.