Traitement du langage naturel pour le sélecteur de date

Our date picker and conversion is a powerful feature. I’d love to see us make it simpler to add a date/time to a post. A common way this is done is through natural language processing. Apps like Fantastical on iOS have used this for years for date input.

Instead of fiddling with the mouse to input a date, you could type in something like:

  • monday at 2pm which would output the date and time to your timezone
  • next friday at 10am NZST which outputs the date/time next friday in NZST
  • 11am which outputs today’s date at 11am
  • 8/9 to 8/13 which outputs a date range.

This could either replace the modal shown by clicking the calendar icon in the composer with a textbox (and an advanced button which shows the existing modal contents) or a separate modal launched by a keyboard shortcut.

9 « J'aime »

This library might help with implementation: GitHub - wanasit/chrono: A natural language date parser in Javascript

That said I suspect it would be a challenge to get robust language support for this.

The current fully supported languages are en , ja , and fr ( de and pt are partially supported). Other languages from v1 ( nl and zh ) are under development.


Also, another UX pattern to consider is automatically replacing date strings in the body of a post with Discourse date/time objects. Sort of like one-boxing but for dates. E.g. if I type “next monday at 2pm” in my post, it automatically converts that to 2021-08-17T18:00:00Z.

5 « J'aime »

I really like this idea!

3 « J'aime »

J’aime beaucoup cette idée, pouvez-vous me montrer la maquette de l’interface utilisateur de la façon dont vous voyez cela fonctionner ? C’est ce qui manque ici.

Il n’y aura peut-être même pas besoin d’interface utilisateur. Lorsqu’un message est traité, le NLP pourrait le traiter, revenir au client et confirmer avec une simple fenêtre modale :

1 date a été trouvée. Souhaitez-vous convertir en horodatages dynamiques ?
- mardi à 14h --> [date discourse]

Ou, cela pourrait être plus simple. Cliquez sur l’icône du calendrier, et au lieu d’un sélecteur de date, il s’agit d’une simple zone de texte.

Et, similaire à notre fenêtre modale d’invitations, il pourrait y avoir un bouton pour les contrôles avancés qui affiche notre sélecteur de date/heure/fuseau horaire existant pour des options plus granulaires.

C’est à @j.jaffeux de décider, je ne suis pas sûr que cela corresponde du tout à l’interface utilisateur actuelle que nous avons ? Je ne suis pas non plus sûr que les gens normaux veuillent taper autant plutôt que cliquer, surtout sur un smartphone ?

Cela a du sens dans Google Agenda car vous pouvez le faire en tapant le nom de l’événement, par exemple, au lieu de taper

« Plombier »

vous tapez

« Plombier 15h - 17h »

mais c’est facile car je suis sur un appareil avec un clavier.

Je trouve en fait que notre modal est fastidieux à utiliser, que ce soit sur ordinateur ou sur mobile, c’est pourquoi j’ai suggéré cette fonctionnalité en premier lieu. Il est beaucoup plus rapide de taper aujourd'hui à 11h31 dans une modale que d’utiliser les molettes de défilement ou de cliquer dans une grande modale. Le fait que de nombreux calendriers le fassent déjà réduit la charge mentale nécessaire pour que les gens comprennent.

1 « J'aime »

Je suis d’accord sur ordinateur. Je ne suis pas d’accord sur smartphone, car taper sur smartphone est brutal. Peut-être que cela pourrait être un comportement réservé aux ordinateurs de bureau ?

1 « J'aime »

Cela me conviendrait personnellement.

Il y a beaucoup de code dans les dates qui font déjà cela, nous avons travaillé dessus avec @daniel

Il y a essentiellement 3 façons de résoudre cela :

  • une meilleure modale
  • une commande !
  • analyse de texte

L’analyse de texte est excellente, mais elle ne résout pas tout et nous devons également la faire fonctionner pour toutes les locales. Mais je suis d’accord que nous pourrions activer la prise en charge d’un petit sous-ensemble. C’est en grande partie déjà là, il faudrait juste que je la termine/l’active.

5 « J'aime »