Support des emoticons

@coke

Même souci dans une variable idem dans un bloc code :frowning:
C’est dommage car dans télégram ça donne pas mal.

Ce qui est bizarre quand on met la première fois les icons dans un scénario et qu’on enregistre le scénario ça passe.
Mais si je veux modifier ce même scénario avec les icons qui on été sauvegarde juste avant sans rencontrer le moindre souci, bah à ce coup si ça crée un message d’erreur.

Donc j’en déduit que jeedom c’est gérer les emoticons que c’est plus un aspect de bug non ?

car sinon ça fonctionnerais pas lors de la sauvegarde du scénario la première fois :slight_smile:

Merci d’avance.

Bonjour
Jeedom n’a jamais été prévu pour les gérer et c’est trop complexe a faire ça marche la première fois c’est juste un coup de chance

je l’utilise au quotidien avec un bloc code est je n’ai pas de soucis…
montre nous ton bloc code.

A oui avec un bloc code pas de soucis, le soucis c’est le rendu de l’ui du scénario qui casse l’émoticon mais j’arrive pas a corriger ca (quand c’est pas prévuv dès le debut…)

Hello All,

sorry pour la réponse tardive…

Je passe par une variable qui est utilisé dans un bloc code … et non un bloc code je disais n’importe quoi :frowning:

Je suis preneur de ta solution @coke si je peux avoir un exemple cela m’intéresse :slight_smile: >

Merci :slight_smile:

voilà un exemple de bloc code fourni par @noodom sur l’ancien forum a l’époque.

// Solution trouvé et partagé par @noodom
// https://www.quackit.com/character_sets/emoji/emoji_v3.0/unicode_emoji_v3.0_characters_all.cfm
// Récupération des tags passés en paramètre.
$tags = $scenario->getTags();
$tags['#logoDoor#'] = "&"."#x1F6AA;";
$tags['#logoRuningGuy#'] = "&"."#x1F3C3;";
$tags['#logoSleep#'] = "&"."#x1F4A4;";
$tags['#logoJarvis#'] = "&"."#x1F916;";
$tags['#logoCapricorne#'] = "&"."#x2651;";
$tags['#logoBelier#'] = "&"."#x2648;";
$tags['#logoInfo#'] = "&"."#x2139;";
$tags['#logoSaint#'] = "&"."#x1F47C;";
$tags['#logoSun#'] = "&"."#x1F31E;";
$tags['#logoUmbrella#'] = "&"."#x26F1;";
$tags['#logoEye#'] = "&"."#x1F440;";
$tags['#logoQuality#'] = "&"."#x1F6A6;";
$tags['#logoThermo#'] = "&"."#x1F321;";
$tags['#logoGreenHeart#'] = "&"."#x1F49A;";
$tags['#logoYellowHeart#'] = "&"."#x1F49B;";
$tags['#logoPurpleHeart#'] = "&"."#x1F494;";
$tags['#logoWarning#'] = "&"."#x26A0;";
$tags['#logoSkull#'] = "&"."#x2620;";
$tags['#logoLune#'] = "&"."#x1F319;";
$tags['#logoElec#'] = "&"."#x26A1;";
$tags['#logoFeu#'] = "&"."#x1F525;";
$tags['#logoGoutte#'] = "&"."#x1F4A7;";

// MAJ des tags avant exécution de la suite du scénario
$scenario->setTags($tags);

Utilisation dans un message :

tag(logoThermo)<b>Température:</b> #[Maison][Meteo][Température]#°C
4 « J'aime »

Hello All,

Petit retour pour dire que c’est au Top merci ça fonctionne.

Je vais pour voir m’éclater encore merci à vous pour votre réactivité.

Ça serait peut être sympas d’épingle cette méthode je suis certainement pas le seul dans ce cas :slight_smile:

1 « J'aime »

Une petite astuce qui rend de grands services en effet🙂 j’en pouvais plus de devoir réécrire mes emojis à chaque nouvelle modification de mes scénarios !

Apparemment, le problème initial qui est que les codes saisis sont écrasés après une deuxième sauvegarde d’un scénario ne peut pas être résolu dans le core de Jeedom, donc le problème risque de durer quelques temps encore…

Astuce à bien conserver donc :wink:

2 « J'aime »

Oui j’ai commencé à faire comme toi je me suis dit c’est pas humain de tout refaire etc … loool

Je la garde bien bien au chaud mdrrr

Tu devrais proposer ton astuce à youdom par exemple ou un autre lol comme petit tuto :wink:

je fait parti de youdom… lol je prepare un article sur recevoir des infos par telegram avec des emoji et un menu telegram… dans mon code il y a toujours la reference a @noodom comme vue dans mon bout de code… encore merci a lui pour cette astuce…

2 « J'aime »

Ça marche bien, effectivement, et ça égaille un peu le message, merci

Si j’ai bien compris, le code est à rajouter dans chaque scénarios susceptibles d’utiliser des emoticons ?

Et on peut en rajouter en utilisant des unicodes emoji ?

Si je comprends bien, cela fonctionne pour Telegram.

Est-ce également le cas pour l’envoi de SMS ?

un test nous le dira lol

1 « J'aime »

:sweat_smile:

Bonjour Loïc.

Aucun coup de chance, ça marche la première fois car c’est le code de l’entité HTML qui est entré et sauvegardé en base, donc aucun soucis.
Ensuite, une fois lu en base, il est interprété par le navigateur qui affiche l’emoji directement dans l’input (et c’est un comportement qu’on attend d’un navigateur en 2020).
Sauf que l’emoji en lui même, une fois interprété, n’a pas le même code que celui qui avait été entré ce qui fait que lors de l’enregistrement et donc de l’update dans la base MySQL, ça ne passe plus.

L’erreur MySQL est typique d’un mauvais encodage.
Pour que cela fonctionne, il faut que les tables de la base de données MySQL soit en utf8mb4 et pas en utf8. Après vérification, c’est bien le cas.
Dans ce cas le problème vient d’ailleurs, c’est à dire la connexion à la base. J’ai donc été dans le fichier core/class/DB.class.php et le problème vient bien de là: dans la méthode de connexion (ligne 38 et 40) il y a PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ce qui n’est pas bon. En modifiant les paramètres en PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci' ça fonctionne tout de suite mieux et les emojis fonctionnent.

Ce n’est donc pas un problème de l’avoir prévu dès le début, il suffisait juste que les tables soient au bon encodage (ce qui était le cas) et que les paramètres de connexion à la base de donnée soient bons (et c’est là que ça foire).
Ce n’est pas une grosse modification, en deux minutes Jeedom passe au 21ème siècle :wink:

Bonjour
Merci pour l’analyse mais c’est pas aussi simple et je ne prend pas la responsabilité de faire cette modification je ne maîtrise absolument pas les conséquences que ça peut avoir sur les différentes installation de jeedom.

C’est simple avec un seul jeedom mais quand yen a des dizaines de milliers c’est pas pareil et j’en ai un peu marre de m’en prendre plein la tête a chaque fois que j’essaye d’aider. Donc là pour le moment plus de modification lourdes comme ça, ça reviendra peut être quand j’aurais a nouveau le courage

Bonjour Loïc,

Je suis un peu abasourdi par cette réponse car:

  • d’une part ce n’est absolument pas une modification lourde de conséquence et on parle juste de l’encodage de caractères avec lequel se connecte PHP (utf8mb4 au lieu d’utf8);
  • d’autre part cela fait maintenant une dizaine d’année que ce paramètre est utilisé à la place de celui qui est dans Jeedom.
    De plus ce qui est bête c’est que vous avez bien configuré les tables de la base en utf8mb4 mais que vous vous connectez avec utf8 en paramètres.

On parle tout de même d’un encodage de caractère grandement utilisé depuis des années puisqu’il supporte Unicode et donc les emojis par la même occasion. On trouve par exemple un article d’un ingénieur Google qui en parle… en 2012: How to support full Unicode in MySQL databases · Mathias Bynens
De plus comme le dit cet article de 2017:

I would recommend anyone to set the MySQL encoding to utf8mb4. Never use utf8 in MySQL, there is no good reason to do that (unless you like tracing encoding related bugs).

Pour être sûr qu’on se soit bien compris, on parle juste de remplacer SET NAMES utf8 par SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci dans la chaîne de connexion.
Etant développeur d’applications web (CRM, applications métier) depuis une dizaine d’année, je m’étonne de voir que ce petit soucis risque de traîner et d’embêter les utilisateurs… (je me suis moi même penché dessus aujourd’hui car je voulais afficher un émoji dans un widget).

Bref, j’ai fait un pull request sur le GitHub du Core, à vous de faire la review et de voir si vous acceptez ou pas, mais la solution est très simple et permet d’ajouter quelque chose qui sera sûrement encore demandé dans le futur.

J’espère juste ne pas avoir à remettre ce bête paramètre à chaque fois qu’il y a une mise à jour du core…

Bonne soirée à vous ! :wink:

Je sais pas quoi te dire j’en peux plus de me prendre des claque a chaque modification même si je touche que a la doc. J’en peu simplement plus donc non je me lance pas la dedans. En plus toute les bdd on sont pas en utf8mb4 donc c’est sur je vais avoir des retours dans tous les sens des gens qui vont gueuler qui vont me pourrir me menacer et tous ce qui va avec.

Ya des limite a ce que un humain peut encaisser donc maintenant je choisis mes combats et celui là je suis pas tailler pour

Je trouve ça dommage comme réaction. Je ne travaille pas avec l’équipe Jeedom donc je ne sais pas comment ça se passe et à vrai dire en tant qu’utilisateur je n’ai pas à le savoir.

Cependant dois-je en déduire que Jeedom se meurt ? Je veux dire, le message est clairement que les demandes des utilisateurs ne sont pas la priorité.

Perso ça m’embête, j’ai un bon Jeedom bien en place, j’ai payé une dizaine de plugins… je me vois mal voir ailleurs.

Ce message n’est pas une critique, mais un questionnement en tant qu’utilisateur.

Sinon, bien que j’ai compris que cette demande n’aboutira sûrement jamais, voici une capture pour prouver que cela fonctionne: Imgur: The magic of the Internet
A charge aux utilisateurs de faire la modification si ils le veulent…

Edit: J’ai mis un lien car l’upload de gif ne fonctionne pas.

Non ya toujours autant d’évolution dans jeedom même plus que jamais juste on peut pas tout faire et se battre partout (oui on se bat tout le temps cette aprem ya même eu une personne qui a appeler pour se plaindre de l’association a qui on a fait le dons pour le covid…)

La ça marche chez toi oui ça se trouve ça va marcher chez 90% des utilisateurs mais pour les autres je fais quoi ? Je te les envoi ? Non c’est sur moi sur ça va retomber et c’est moi qui vais devoir expliquer au gens pourquoi on a fait ça et là pluspart vont le dire qu’ils en ont rien a faire des émoticon que c’est inadmissible et UFC ou autre…

Malheureusement c’est comme ça que ça se passe et oui ça me démoralise et c’est de plus en plus dur. Sans compter que la la roadmap est déjà pleine et que l’équipe est complètement sous l’eau. Donc je vois pas comment je peux annoncer a l’équipe que on va avoir un afflux de ticket compliqué a résoudre et qui vont leur bouffer du temps qu’il n’ont pas.

Donc oui cette modification je ne la prend pas pour le moment a un moment faut faire des choix pas que en regardant son propre cas mais en prenant en compte tous ce qu’il y a autour et en particulier le parc existant.