使用“询问对话框”命令立即通过Bash命令传递文本

问题描述

我想使用“询问对话框”命令立即传递问题。我正在尝试自动化启动终端并运行“询问对话框”的过程。每当我的bash脚本运行时,Alexa实例打开后就会暂停。

#!/bin/bash/
cd /Users/AlexaDirectory/
ask dialog 
#this is where I need to ask Alexa a question automatically. 
#I have tried running "ask dialog && (insert question)",but the script pauses once it reaches "ask dialog"
echo "end"

这是我在运行.sh时通常看到的内容

MacBook-Pro Desktop % bash Test.command
Defaulting locale to the first value from the skill manifest: en-US

======================================= Welcome to ASK Dialog =======================================
=========== In interactive mode,type your utterance text onto the console and hit enter ============
===================== Alexa will then evaluate your input and give a response! ======================
=== Use ".record <fileName>" or ".record <fileName> --append-quit" to save list of utterances to a file. ===
=============== You can exit the interactive mode by entering ".quit" or "ctrl + c". ================

User  > 

如果无法立即通过问题,是否可以向终端发送击键?

解决方法

答案是在查尔斯·达菲(Charles Duffy)的帮助下。

在调用docker run -d -p 9999:8080 my-go-image 并且修复程序正在发送ask dialog时,该过程冻结。这也立即终止了Alexa实例。

,

您可以尝试使用the expect command。我一直在努力解决类似的问题。在非交互模式下运行ask init。最后,我像这样解决了它。

echo '#!/usr/bin/expect 
spawn ask init 
expect "? Skill Id (leave empty to create one):" 
send "my-skill\r" 
expect "? Skill package path:" 
send "./path/to/skill-package\r" 
expect "? Lambda code path for default region (leave empty to not deploy Lambda):" 
send "./path/to/lampda-package\r"
' > ask_init.sh
chmod u+x ask_init.sh 
./ask_init.sh

仅供参考,我还尝试使用|echo的组合来传递答案,就像这样:

echo 'quantum-skill
./path/to/skill-package
./path/to/lampda-package
' | ask init

printf,如下所示:

printf 'quantum-skill\n./path/to/skill-package\n./path/to/lambda-package\n' | ask init

后者都不起作用。因此,我建议改用expect

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...