Bolla di notifica di Apple Script: prompt di risposta rapida

1

So che puoi attivare una notifica usando Apple Script:

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

Tuttavia, voglio anche essere in grado di richiedere determinati valori nello stile di iMessages reply-da-notifica-pop-up .

Ad esempio, voglio essere in grado di farlo dallo script di shell:

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

Questo è possibile?

    
posta Sridhar Ratnakumar 25.01.2015 - 13:58
fonte

2 risposte

1

L'appeal nella notifica è ovviamente tipicamente estetico, ma se le sue funzionalità fossero ciò di cui avevi bisogno, allora sei fortunato perché puoi usare la finestra di visualizzazione per act letteralmente l'esatto stesso modo:

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 

Il "rinunciare dopo 8" significa che se non accade nulla entro quel tempo, la scatola andrà via.

Potresti anche teoricamente renderlo più simile a una notifica facendo apparire la casella di testo solo dopo che l'utente ha premuto "Rispondi". Puoi farlo facendo una copia di questa finestra di dialogo senza la parte "risposta predefinita", e rimuovendo la parte "rinunciare dopo 8" dall'originale, quindi inserendo la copia prima dell'originale e inserendo questa frase nell'originale:

if button returned of dialogResult is "Reply" then

Un'altra cosa che potresti fare con la finestra di dialogo, che sono abbastanza sicuro che non puoi nemmeno fare con la notifica di imessage, è controllarla con la tastiera. Quando viene visualizzata una finestra di dialogo con una casella di testo, puoi iniziare a digitare immediatamente, premere Invio per inviare e premere Esc in qualsiasi momento.

Se si sta usando una notifica, sfortunatamente la sezione di notifica della documentazione di applescript suggerisce totalmente che non è possibile (con applescript). In base ad esso, non puoi nemmeno restituire uno di due valori e tanto meno lasciare che l'utente inserisca una stringa.

] 1

Se potresti ottenere 2 risposte da esso, id suggerisce di avere un pulsante di annullamento del pulsante e un altro pulsante che ottiene il testo dagli Appunti. Forse non l'approccio più elegante, ma avrebbe fatto il lavoro.

    
risposta data 07.12.2015 - 03:04
fonte
0

Che ne dici di:

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

... semplice e facile ...

    
risposta data 06.12.2015 - 21:40
fonte

Leggi altre domande sui tag