From LINKS - Documentation
Jump to: navigation, search


What voices do I have installed?

  • Press Windows Key + R
  • For 64-bit voices
    • Copy/Paste "%WinDir%\SysWow64\speech\speechux\sapi.cpl"
  • For 32-bit voices
    • Copy/Paste "%WinDir%\System32\speech\speechux\sapi.cpl"
  • Press Enter
  • Under "Text To Speech" tab you will see all available voices that can be used by LINKS.

Why do I receive firewall access warning every time LINKS is updated?

  • LINKS uses ClickOnce technology and creates its own webserver on your machine.
Every time you update LINKS, it installs a new executable file that causes Windows to show firewall access window.

I am receiving "Activation of http://.../jarvisWPF.application resulted in exception..." error. How do I fix it?

How do move the Main Control Center window to a different location?

  • Bring the window in focus, then hold shift and drag. Scroll to change the size of UI.
Note: The location is not saved in v2.6.2.3

How do I play a specific song?

  • Say AIName + "play me a song" or AIName + "play a song"
Then say the full song and artist artist name.
Example: Song by Artist.

What's the difference between Mark II and Mark III?

  • Eventually, Mark II will become Mark III. It is being updated with new functionalities every day.
We have been through over a thousand revisions of Mark II since the beginning of the project. We did not want to change the application name with each if its revision.
Notice the Mark II version number. When it becomes version number, this will be the start of Mark III. Mark III will have ALL of the functions of Mark II with an additional enhanced User Interface.

Where do I get the voice for Jarvis?

  • Most users usually use the voice called "Brian" by Ivona.
  • You can install more voices from multiple websites such as:
  • Note: Most voices work in LINKS but only supported voices are Microsoft voices.
Make sure you test the voice before buying it.
The Vendor called "nextup" for IVONA Voices is not fully compatible, voice may work but all functionality will not be available.

Is there an offline installer for LINKS?

  • No, we do not provide an offline installer/exe for LINKS.

How do I check what speech recognizer language is installed on my computer?

Press Windows + R
Type "%WinDir%\System32\Speech\SpeechUX\SAPI.cpl"
Press Enter
Select "Speech Recognition" from top left tab.
In the language top box shown, you will see the speech recognizer.
Within the same box you will see a dropdown menu that looks a 'v', clicking on this will allow you to see if other speech recognizers
are installed on your system, and give you the option of choosing whether to pick another recognizer.

How do I add a command?

Open customize window
Double click an empty row, and type the command as you wish.
You can press tab to get to 'response' column and so forth.
Make sure profile name is filled in before pressing update button.
After you are done writing the command, press enter then click update to complete the process.

Where can I find the error report/log?

  • Under LINKS folder in AppData
Press Windows Key + R
Type %AppData%\LINKS\Logs\
Press Enter
If you get an error a file named "Error Report.txt" will appear in this folder.

Is there a log of what LINKS heard?

  • Yes, to access that log:
Press Windows Key + R
Type %AppData%\LINKS\Customization\Plugins\LINKS\LINKS_Heard.txt

How can I edit the introductory speech on start-up?

  • Look up any phrase you like to edit in %AppData%\LINKS\Customization\XML and change as you like.

What parameters does action columns takes?

  • Following parameters can be used in action by prepending the parameter to the action.
-ret Retrieves string from console app
-hi1 Hides the app (way 1)
-hi2 Hides the app (way 2)
-max Maximizes the app
-min Minimizes the app
-con Asks for confirmation before executing the app. See “How do I add confirmation to a command?”
-fun Allows to write functions that won’t return any executable paths. See example.
  • Example:
Grammar: Open notepad

Can I add a custom word or pronunciation so it can be recognized in dictation?

  • Yes, by using windows speech add/remove word feature.
  • Press Windows Key + R
  • Copy and Paste %WinDir%\System32\Speech\SpeechUX\SpeechUXWiz.exe AddRemoveWord
  • Press Enter
  • And follow the directions on screen.

How do I train windows speech recognizer?

  • Press Windows Key + R
  • Copy and Paste %WinDir%\System32\Speech\SpeechUX\SpeechUXWiz.exe UserTraining
  • Press Enter
  • Follow the directions on screen.

How do I start microphone training wizzard?

  • Press Windows Key + R
  • Copy and Paste %WinDir%\System32\Speech\SpeechUX\SpeechUXWiz.exe MicTraining
  • Press Enter
  • Follow the directions on screen.

How do I solve the issue of loading data grid?

Follow these steps then reinstall:

"C:\Program Files\Microsoft SQL Server\120\LocalDB\Binn\sqlservr.exe"
"C:\Program Files\Microsoft SQL Server (x86)\120\LocalDB\Binn\sqlservr.exe"

How do I check what mode/state LINKS is in?

LINKS has 3 modes/states. We can look at the system tray icon to see the current status.

  • Normal Mode: Listening for all commands; Cyan icon.
  • Soft Stop Listening Mode: Only listening for "Start Listening" and "Stop Talking" command; Gray/Cyan icon.
  • Hard Stop Listening Mode: Listening to nothing; Gray/Red icon.

What is a Function?

  • Functions allows users to use special features that do not require the user to be a programmer.
  • Functions can be used inside the commands or externally from LINKS web service.
  • All functions are enclosed inside square brackets [FunctionName].
  • Functions can contain placeholders for arguments [FunctionName("Argument1","Argument2","Argument...")]
  • Function can only be used in Response and Action columns.
  • Most functions return a string on successful execution.
    In another words if we have a function to add numbers i.e. [Add("1","2")], the result will be 3.

Can I make my own function?

  • Yes, it's possible to make your own functions.
  • To do that, we have to create a dll and place it in the %APPDATA%\LINKS\Customization\Plugins folder.
    • Can only access static string function from a dll.
    • Can only pass arguments as string to the functions.
    • To access a function from a dll, we have to specify the namespace, class, and function name.
    • For Example:
      • [Namespace.Class.FuntionName("Argument1","Argument2","Argument...")]
    • For more information, see the sample *.cs files provided in the Plugins folder.
    • Or see some samples at https://github.com/Zunair/C-Sharp

What is the Web Service?

  • Web service allows you to talk back and forth with LINKS remotely or locally.
  • For Example:
Making custom scripts and talk through LINKS that allows you to use stop talking.
Get/Set status or data via web. Request to execute a command remotely via web.
Extremely helpful in Home Automation.
  • Example URL: http://localhost:54657/?action=action=[Speak("Hello World")]&key=1234ABC
Speaks "Hello World" from LINKS using a web request.

How do I reset LINKS files for reinstall?

  • Uninstall LINKS using Add/Remove programs from Control Pannel.
  • Press Windows Key + R
  • type %APPDATA%\..\Local\Apps
  • Rename or delete 2.0 folder
  • Follow "How do I delete all LINKS data?"
This step is not absolutely nessesary, note this will remove all your custom commands.
  • Install LINKS

How do I delete all LINKS data?

What is the difference between hard and soft listening mode?

  • Hard Listening Mode
    Hard listening mode is enabled or disabled by using the orange button.
    It allows you, the user, to make LINKS stop listening to all commands.
  • Stop Listening Mode
    Stop listening mode can be enabled by voice, by saying the "Stop listening" command.
    It makes LINKS to stop listening to all command except the "Start listening" default commands.

Note: "Start listening" command can be modified or added in default commands tab under customize window.

How do I make LINKS to listen variable speech?

  • You can use Cortana plugin or Windows Speech Recognition to interact with your scripts or other plugins.
  • For example, if you have a script that takes 1 argument called “Search.vbs”, add command in shell as follows:
    Command: Links, answer this.
    Response: (leave this blank)
    Action: Search "[Cortana.LDictation.GetDictation("Ask away sir?","show_ui")]"
  • Another action example would be like this:
    Action: [LINKS.WebSearch.bingQuery("[Cortana.LDictation.GetDictation("What For Sir?","show_ui")]","sorry, I can not locate that")]
    This sends text received from Cortana to another plugin.

Be sure to use exact syntax to make it work. Do not forget the quotes.

Can I use Cortana on windows 7 or 8.1?

  • No, it’s only compatible with windows 10.

Is Cortana always listening?

  • No, it only listens when you call a Cortana command.

How do I wake-up windows default Cortana?

  • In keyboard section, add a command as follows:
    Command: wake up Cortana
    Response: sure
    Macro: {WIN_DOWN}{LShiftKey_DOWN}{C}{LShiftKey_UP}{WIN_UP}

How do I issue a shutdown command to safely close LINKS and save my Databases?

  • Call shutdown command, as you specify in default commands.
    Default command is “Goodbye”
    To confirm the shutdown command say "Affirmative" or "Yes {AIName}"

Note: Where AIName is what's specified under settings i.e. "JARVIS"

How do I make LINKS say random responses?

  • Just separate the phrases with semicolon.
  • For example:
    Response: goodbye sir;initiating shutdown protocols sir;farewell sir;until next time sir

Mic problem or LINKS listening to unspoken commands?

  • Close LINKS
  • Monitor your mic level by opening your microphone level settings from sounds under control panel or the sound tray icon.
  • Open microphone setup wizard:
    • Press Windows Key + r, type the following:
      •  %WINDIR%\System32\speech\speechux\SpeechUXWiz.exe MicTraining
    • Press Enter
    • Go next in wizard.
    • Watch the mic level, while yelling or tapping into microphone. Note: You don’t have to read the displayed text.
    • Make the level go about 50% or as low as desired.
    • Test LINKS with couple different volume levels with trial and error. You can go as low as 1% mic level under certain conditions.

Should you wish to see additional data relative to the mic problem, please visit this link: [1]

How do I add comments in my commands

  • In the beginning of the command add <!--Comment-->.
  • Example:
    Command: <!--This is a word list command-->Say hello to {f=friendList}
    Response: hello {f}

Note: This is only available for dynamic commands in v2.6.1.10

How do I un-train LINKS's speech recognition

  • You can use windows "Advanced Speech Options" to create a new speech profile.
    • Open the Control Panel, All Control Panel Items, where it shows the list for you to adjust your computer’s settings.
    • Click on Speech Recognition
    • Under Control Panel Home/Pane (left side of screen), click on Advanced Speech Options
    • In the second tab, Recognition Profiles, click on New.
    • It will bring you to” Add a profile” window.
    • Following the example, assign a new profile name, and press enter.
    • This will bring you to the microphone setup wizard.
    • Choose the mic for your system, then follow all instructions accordingly.

How do I play a custom sound using voice command?

  • Copy your sound file in "%appdata%\LINKS\Customization\Sound Effects\" and by calling [PlaySound("FileName")] function.
  • Example:
    • For this example, the wav file name is “Glados_Hello.wav”
    • Note: It only supports .wav files
    • In social tab, add this command:
      Command: hey glados
      Response: [PlaySound("Glados_Hello")]

How do I add a command that will ask for confirmation before executing?

  • In shell tab, add a command as follows:
    Command: Shutdown my computer
    Response: Are you sure you want to shutdown the computer?|Shutting system down
    Action: -conShutdown -s -t 10

How do make a pause between keyboard command?

  • We can use {WAIT:millisecond} to wait between typing a letter.
  • For Example, in keyboard section, add command as follows:
    Command: Type h then wait 1 second and then type ello
    Response: sure
    Macro: H{WAIT:1000}ello
    Note: This type h then wait 1 second then type ello.
  • Some more commands:
    • {WIN_UP}
    • {WIN_DOWN}

Why is the Fly-out menu not working?

  • It's not ready yet, we have to wait till LINKS says "Online and ready"

Why is LINKS not listening to me after x amount of time

  • Enable Auto Reset from settings window. And change auto reset settings to x amount of minutes.
  • You can also press the orange button off and on to bring it back online.
  • Another reason could be that you turned on Auto Sleep on, you have to call "start listening" command to wake it up.

How do I reset the database\commands to its default?

  • Close LINKS
  • Press Windows + r key
  • Type %APPDATA%\LINKS\Data\
  • Enter
  • Delete these files if they exist:
    • _Grammar_v1.mdf
    • _Grammar_v1_log.ldf
  • Restart LINKS

How do I revert to an older backup?

  • Follow database reset process, minus restarting LINKS.
  • Then go to %APPDATA%\LINKS\Data\Backups\ folder
  • Copy any of the backup database from there.
  • Paste it in %APPDATA%\LINKS\Data\' folder and rename it to _Grammar_v1.mdf
  • Start LINKS

What is Auto Sleep in speech recognition setting?

  • Enabling Auto Sleep makes LINKS go to soft stop listening mode.
  • You can then bring him back by calling any of the "start listening" default commands.

Note: After LINKS accepts each command the time resets back to x seconds so you can call more commands.

What is Auto Reset?

  • Enabling Auto Reset makes LINKS reset the recognition after x amount of time. Some users require this automatic action when they use LINKS for an extended period of time because LINKS tends to stop listening.

What is Push To Talk?

  • Allows user to use right control key to enable recognition.
  • User can hold the key as long as they want to speak the command.
  • When user releases the key LINKS will go into hard stop listening mode.

Can I edit the function column in default commands under customize window?

  • It is a best practice not to alter the functions column of the default commands tab.
  • However, it is acceptable to remove full command rows or add additional command rows with alternate key phrases that call the same default action.
  • For example:
    Command: <command>stop Listening</command>
    Function: <command>stop listening</command>
Can be duplicated as:
Command: <command>I'm on the phone LINKS.</command>
function: <command>stop listening</command>

How do I create variable\dynamic commands (WordList)?

  • WordList text file example:
Create a text file, with 2 or more tab delimited columns with any headers as follows:
thing to buy.txt
Grammar Value Size
milk Milk 1 Gallon
bread Some brand bread Family
detergent Some brand pods detergent 40+
Save the text file as %AppData%\LINKS\Data\WordList\thing to buy.txt
Remember: Header should always be defined. The first line is not used to build the grammar.
  • Make a command in shell as follows:
Command: add {thing=thing to buy} to the shopping list
Response: are you sure you want to add {{thing}} to the shopping list?|{{thing}} added to the shopping list
Action: -conCMD /m /c "echo {{thing}} >> %temp%\ShoppingList.txt"
  • So, how can I get the Size column?
    By using [GetWord("WordList","Grammar","ColumnName")] function.
We are going to use it with [Get("Variable")] and [Set("Variable","Value")] functions in this example.
Make a command in social as follows:
Command: What size of {thing=thing to buy} should I get?[Set("LastRequestedThing","{thing}")]
Response: [GetWord("thing to buy","[Get("LastRequestedThing")]","Size")]

Can I set/get variables in commands?

  • Yes, by using [Get("Variable"] and [Set("Variable","Value")] functions.
  • Make 2 commands:
Command[1]: hey {ai=ainame}
Response[1]: [SetSpeechVoice("{{ai}}")]Hello [get_SirOrMadam] - [Set("AIName","{ai}")][Set("AIValue","{{ai}}")]
Note: this command will change the voice to specified voice from WordList
Command[2]: what is your voice set to?
Response[2]: My name is [Get("AIName")], and my voice is set to [Get("AIValue")]
Note: this command will repeat the AIName and AIValue you set in previous command.
Name Voice Name
Jarvis IVONA Brian
LINKS Microsoft David Desktop
Elizabeth Elizabeth

Can I set a delayed command ?

  • Yes, by using [SetTask("Date time to delay till","Phrase to speak before execution","Speech Volume","Emulate-able Command")] function that would call the delay command.
  • Make 2 shell commands:
Command[1]: 00000001_DelayedCommand (Can be anything that should not get recognized)
Response[1]: opening notepad
Action[1]: notepad
Command[2]: test delayed command
Response[2]: Sure, will open notepad in 10 seconds
Action[2]: -fun[SetTask("[DateAdd("","sec", "10")]","about to execute notepad","100","00000001_DelayedCommand")]
Note: In this example, Command[2] will call Command[1] after 10 seconds.
To figure out what date format has to be used, use [DateAdd("","sec", "10")] to output to a batch file or run from web service.

How to manage the exported database/list of commands?

  • When trying to import a list of commands be sure to remove any id column that might be in the file.
  • Make sure the file is a tab delimited .txt format.

How should I use command line apps?

  • You can now run console apps in LINKS of any format from shell commands.
  • Python, Java, VBS, batch and any other console based app are compatible.
  • LINKS will execute the command line app and read the output of the app.
  • Example:
    • Python:
    Command: run my python command
    Response: {{!Action!}}
    Action: -ret"python" "%AppData%\LINKS\Customization\Scripts\test_python.py"
    Note: Make sure python is installed and PATH is set in System Environment Variable.
    • Java:
    Command: run my java command
    Response: {{!Action!}}
    Action: -ret"java" -cp "%AppData%\LINKS\Customization\Scripts\;" test_java
    Note: Make sure to compile the class first before execution the java command. i.e, javac test_java.java
    • VBS:
    Command: run my vbs command
    Response: {{!Action!}}
    Action: -retCScript VBS_Test.vbs
    • Batch:
    Command: run my batch command
    Response: {{!Action!}}
    Action: -retBatch_Test.bat
  • Note: -ret only gets the output from the console application. If the console application does not end then LINKS will wait for it till it ends.

Why am I getting Global Assembly Cache (GAC) error while running the setup?

  • That error usually occurs on windows 7.
Make sure you have SP1 installed prior to running the setup.

How to start an external apps when LINKS starts or exits?

  • Edit XML config file to update the below code.
  • Search for <setting name="OnlineAndReady" serializeAs="String">. (This is for Starting an app)
  • For exiting an app you can search for <setting name="ShutdownSequence" serializeAs="String"> add the function here.
  • Update the <value></value> as shown below:
    • <value>[RunAsShell("notepad","note pad initialized","running note pad","failed to open note pad")]</value>
  • You can edit and customize your own speeches.

Pressing Keys with LINKS