Telegram-Messages mit Emojis

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Aquaplex
Beiträge: 309
Registriert: 16.11.2011, 18:16
System: CCU und Access Point
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Telegram-Messages mit Emojis

Beitrag von Aquaplex » 25.04.2023, 13:51

Habe ich denn sonst irgendwelche "Nachteile", wenn ich das bisher verwendete UriEncode durch das "Mini-UriEncode" (nur auf die Leerzeichen angewendet) einsetze? Bisher habe ich alle Push-Nachrichten vor dem Versand mit UriEncode durchlaufen lassen. Wenn ich das jetzt "nur" auf die Leerzeichen reduziere, könnten dann Nachrichten nicht/falsch verschickt werden?
HmIP auf Pi3B+ mit RaspberryMatic und neuem Funk-Modul sowie 3 HAPs / Etwa 150 IP-Geräte

Tyfys
Beiträge: 580
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 29 Mal
Danksagung erhalten: 136 Mal

Re: Telegram-Messages mit Emojis

Beitrag von Tyfys » 25.04.2023, 14:15

Wenn du Umlaute oder irgendwelche Sonderzeichen in der Nachricht hast
brauchst du das .UriEncode().
Du musst aber sicherstellen, dass die emoji nicht auch mit .UriEncode() geändert werden.

Code: Alles auswählen

string msg ="ABC & ÄÖ Üẞ";
string emoji = "%E2%9A%A0";
var sysvarname ="TelegramBotToken";
string TOKEN = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvarname).Value();
var sysvarname ="TelegramBotChatIDs";
string CHATID = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvarname).Value();
string MESSAGE = emoji#msg.ToUTF8().UriEncode();

string stdout;
string stderr;
system.Exec("wget --no-check-certificate -q -O - 'https://api.telegram.org/bot'"#TOKEN#"'/sendMessage?chat_id='"#CHATID#"'&parse_mode=markdownv2&text='"#MESSAGE , &stdout, &stderr);
Gruß
Harry

Aquaplex
Beiträge: 309
Registriert: 16.11.2011, 18:16
System: CCU und Access Point
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Telegram-Messages mit Emojis

Beitrag von Aquaplex » 26.04.2023, 09:52

Habe mich jetzt mal mit der Codierung befasst. Ich selbst komme um UriEncode nicht herum, da ich öfter Umlaute und Sonderzeichen verwende. Insofern müsste das (zumindest bei mir) drinbleiben.

Das einzige Problem für die Emojis ist doch das automatische Konvertieren des %-Zeichens, sehe ich das richtig? Das wird durch UriEncode zu %25 und ist dann für Telegram als Emoji nicht mehr erkennbar. Habe ich das so richtig verstanden?

Wenn dem so ist, müsste ich nach Konvertierung mittels UriEncode noch mal die %25 zurück konvertieren in %, dann sollten die Emojis doch wieder funktionieren :?:
HmIP auf Pi3B+ mit RaspberryMatic und neuem Funk-Modul sowie 3 HAPs / Etwa 150 IP-Geräte

Tyfys
Beiträge: 580
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 29 Mal
Danksagung erhalten: 136 Mal

Re: Telegram-Messages mit Emojis

Beitrag von Tyfys » 26.04.2023, 10:02

Probieren geht über studieren...
Gruß
Harry

Aquaplex
Beiträge: 309
Registriert: 16.11.2011, 18:16
System: CCU und Access Point
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Telegram-Messages mit Emojis

Beitrag von Aquaplex » 26.04.2023, 19:08

Funktioniert :)

Code: Alles auswählen

.UriEncode().Replace("%25","%")
Damit kann man seine Nachrichten URL-konform umwandeln, aber die %-Zeichen werden wieder zurück gewandelt. Dann klappt der Versand (auch mit MarkdownV2) und Emojis werden angezeigt!
HmIP auf Pi3B+ mit RaspberryMatic und neuem Funk-Modul sowie 3 HAPs / Etwa 150 IP-Geräte

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“