SenseTalkスクリプティングにおけるユーザーとの対話
実行時に情報を求めるSenseTalkスクリプトを作成 することができます。以下のコマンドは、情報の表示や要求によりSenseTalkスクリプトがユーザーと対話することを可能にします。
Assert コマンド
Behavior: answer コマンドは、メッセージとユーザーがクリックできる最大 4 つのボタンを含むシンプルなモーダルパネルを表示します。from list オプションを使用すると、ユーザーはより長い回答リストから選択できます。モーダルパネルであるため、パネルが表示されている間はスクリプトの実行が一時停止されます。
モーダルパネルに短~中程度の長さのメッセージを表示する必要がある場合、または2つ以上の選択肢から選択する形でユーザーに入力を求める必要がある場合は、answer コマンドを使用します。基本的な answer コマンドは、ユーザーが「はい/いいえ」や「続行/キャンセル」といった判断を下す必要がある状況に最適です。より複雑な選択肢が必要な場合は from list オプションを使用し、自由回答の場合は ask コマンドを使用します。
選択されたボタンまたはリストから選択された項目のタイトルを変数 it に返します。
構文:
answer {panelType} Optionsオプション:
{prompt | body | message} prompt
[title | titled] titleExpr
with reply1 {or reply2 {or reply3 {or reply4}}}
[timeout | time out] {after | in} duration
icon iconName
[default {answer} | answer] defaultSelection
{from} list listOfChoices
{allow} multiple
オプションの panelType として、information、question、warning、または error を指定できます。各パネルタイプの正確な実装はホストアプリケーションによって異なりますが、通常はパネル内に関連するアイコンが表示されます。
prompt は、パネル内の主要テキストとして値が表示される式です。TitleExpr は、パネルの上部に大きなフォントで表示されるタイトルです。
Reply1、reply2、reply3、reply4 は、パネル下部のボタンに表示されるラベルです。デフォルトのボタンは reply1 です。表示されるボタンの数は、コマンドで指定された返信文字列の数と一致します。返信文字列が指定されていない場合は、「OK」というラベルのボタンが1つ表示されます。
timeout オプションを使用する場合、duration はパネルが表示され、ユーザー入力を待機する時間(明示的に指定されていない場合は秒単位)を指定します。ユーザーがその時間内にパネルに応答しない場合、パネルは自動的に閉じられます。その場合、変数 it は空になり、the result 関数にはパネルがタイムアウトしたことを示す値が設定されます。
icon オプションは、パネルに表示する別のアイコンを指定するために使用できます。このオプションを使用する場合、iconName には、既知のシステムアイコンの名前、またはアイコンファイルへのフルパスを指定できます。
listOfChoices が指定された場合、すべての選択肢がパネルのメイン部分に表示されます。ユーザーは「OK」ボタンをクリックする前に、選択肢を1つ選択できます。multiple も指定されている場合、ユーザーは複数の選択肢を選択でき、それらの選択肢はリストとして返されます。
オプションが指定される順序は柔軟で、すべてのオプションはオプションです(ただし、少なくとも1つのオプションを供給する必要があります)。
answer コマンドの実行後、変数 it にはクリックされたボタンのタイトルが格納されます(パネルのタイムアウトが経過した 場合は空になります)。listOfChoices が提示され、デフォルトボタンがクリックされた場合、it にはユーザーが選択した選択肢または選択肢リストが格納されます。
answer コマンドの詳細については、Ask and Answer の使用を参照してください。
例:
answer "Great! You got " & pctRight &"% correct!"

例:
answer "Go on?" with "Yes" or "No" title "DECIDE"

例:
answer "How do you feel?" with "Great!" or \
"Okay" or "Really Lousy" title "Greetings!"

例:
answer "What would you like to drink?" from list ["Coffee", "Tea", "Beer", "Water"]

例 :
answer "Account" from list the unique items of myListOfChoices

関連:
Ask コマンド
Behavior: プロンプト文字列とユーザーが応答を入力できるテキスト入力フィールドを含むモーダルパネルを表示します。デフォルトの応答を指定することもできます。ユーザーの回答は変数 it に返されます。モーダルパネルであるため、パネルが表示されている間はスクリプトの実行が一時停止されます。
事前に決められた選択肢以外の回答をユーザーに求める場合は、ask password コマンドを使用します。入力中に非表示になる入力を要求する場合は、ask password コマンドを使用します。
構文:
ask {password} Optionsオプション:
{prompt | question} question
[title | titled] titleExpr
[with {answer} | answer] presetAnswer
[hint | placeholder | place holder] placeholder
[message | body] {text} message
{with} [buttons | button {label{s}] label1 {[and | ,] label2}
[timeout | time out] {after | in} duration
icon iconName
例:
ask "Enter your name:"

例:
ask "How do you feel?" title "Greetings!"

例:
ask query with defaultAnswer titled "Please Answer"

例:
ask password "Enter the secret code"

question のテキスト値は、パネルの入力フィールドの上にプロンプトとして表示されます。TitleExpr はタイトルで、パネルの上部に大きなフォントで表示されます。presetAnswer 式の文字列値は、デフォルトの回答として回答フィールドに表示されます。placeholder が指定されている場合、回答フィールドが空で選択されていないときに、プレースホルダー値が表示されます。message テキストは、パネルのタイトルの下に表示されます。
label1(およびオプションで_label2_)が指定されている場合は、パネル上のボタンが定義されます。指定されていない場合は、パネルの下部にキャンセルとOKの2つのボタンが表示されます。ユーザーがOKボタンをクリックした場合(またはリターンキーを押した場合)、回答フィールドの値が変数itに格納されます。ユーザーがキャンセルボタンをクリックした場合、変数itの値は空に設定され、結果関数は「キャンセル」を返します。
timeout オプションを使用する場合、duration はパネルが表示され、ユーザー入力を待機する時間(明示的に指定されていない場合は秒単位)を指定します。ユーザーがその時間内にパネルに応答しない場合、パネルは自動的に閉じられます。その場合、変数 it は空になり、result 関数にはパネルがタイムアウトしたことを示す値が設定されます。
icon オプションは、パネルに表示する別のアイコンを指定するために使用できます。このオプションを使用する場合、iconName には、既知のシステムアイコンの名前、またはアイコンファイルへのフルパスを指定できます。
オプションが指定される順序は柔軟で、すべてのオプションはオプションです(ただし、少なくとも1つのオプションを供給する必要があります)。
ask コマンドの実行後、変数 it にはフィールドに入力された値が含まれます (パネルのタイムアウトが経過した場合は空になります)。
ask コマンドの詳細については、Ask and Answer の使用を参照してください。
関連:
Put コマンド
Behavior: 宛先コンテナが指定されていない場合、put コマンドは標準出力にテキストを表示します。
answer コマンドのようにモーダルパネルを表示せずに、スクリプトの実行中にステータス情報を表示したい場合は、put コマンドをこのように使用します。put コマンドは、スクリプト内のさまざまな時点で変数の現在の値を表示するスクリプト開発でも非常によく使用されます。
構文:
put {expr {, expr ...}}
例:
put "Successfully loaded file " & fileName