1 votes

Bulle de notification Apple script - invite de style réponse rapide

Je sais que vous pouvez déclencher une notification en utilisant le script d'Apple :

osascript -e 'display notification "Hello" with title "How are you feeling?"'

Cependant, je souhaite également pouvoir demander certaines valeurs à la manière des iMessages. reply-from-notification-popup .

Par exemple, je veux pouvoir faire ceci à partir du shell script :

ANS=$(osascript -e 'display notification "Hello" with title "How are you feeling?"' with prompt)
echo "User is feeling $ANS"

Est-ce possible ?

1voto

DivineWolfwood Points 864

L'attrait de la notification est évidemment d'ordre esthétique, mais si vous avez besoin de ses fonctionnalités, vous avez de la chance, car vous pouvez utiliser le dialogue d'affichage pour acte littéralement de la même manière :

set userCanceled to false
try
    set dialogResult to display dialog ¬
        "How are you feeling?" with title ¬
        "Hello" buttons {"Close", "Reply"} ¬
        default button "Reply" cancel button ¬
        "Close" giving up after 8 ¬
        default answer ("")
on error number -128
    set userCanceled to true
end try

log "User is feeling " & text returned of dialogResult 

La mention "abandon après 8" signifie que si rien ne se passe dans ce délai, la boîte disparaîtra.

En théorie, vous pourriez aussi faire en sorte que cela ressemble davantage à une notification en faisant en sorte que la zone de texte n'apparaisse qu'après que l'utilisateur ait cliqué sur "Répondre". Pour ce faire, faites une copie de cette boîte de dialogue sans la partie "réponse par défaut" et en supprimant la partie "abandon après 8" de l'original, puis placez la copie avant l'original et placez cette instruction if autour de l'original :

if button returned of dialogResult is "Reply" then

Une autre chose que vous pourriez faire avec la boîte de dialogue, que je suis presque sûr que vous ne pouvez même pas faire avec la notification imessage, est de la contrôler avec le clavier. Lorsqu'une boîte de dialogue avec une zone de texte apparaît, vous pouvez commencer à taper immédiatement, appuyer sur la touche Entrée pour envoyer, et appuyer sur la touche Echap à tout moment.

Si vous voulez utiliser une notification, malheureusement la section notification de la documentation d'applescript suggère totalement que ce n'est pas possible (avec applescript). D'après cette documentation, vous ne pouvez même pas renvoyer l'une des deux valeurs, et encore moins laisser l'utilisateur entrer une chaîne de caractères.

https://upload.vstanced.com/images/2015/12/07/ScreenShot2015-12-06at8.03.06PM.png ] 1

Si vous pouvez obtenir deux réponses, je suggère d'avoir un bouton d'annulation et un autre qui récupère le texte du presse-papiers. Ce n'est peut-être pas l'approche la plus élégante, mais elle permettrait de faire le travail.

0voto

zonble Points 2925

Pourquoi pas :

set allResults to ¬
display dialog "Hello!\n\nHow are you feeling?" default answer ¬
    "" buttons {"(enter)", "Don't ask."} default button 1
set answer to button returned of allResults
set userFeeling to text returned of allResults

if (userFeeling is not "") and (answer is not "Don't ask.") then ¬
    display dialog "User is feeling ... " & userFeeling buttons ¬
{"Congrats!", "So sorry..."} default button 1
end if

... simple et facile ...

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X