Подтвердить что ты не робот

Как подключить команды Cortana к пользовательским сценариям?

Это может быть немного раньше, чтобы спросить об этом, но я запускаю Windows 10 Technical Preview Build 10122. Я хотел бы настроить Cortana для создания пользовательских команд. Вот как она работает:

Hey Cortana, <she'll listen and process this command>

Microsoft будет обрабатывать команду, и если для этого нет ничего, она будет просто искать входные данные на bing. Тем не менее, я хотел бы сказать что-то вроде, например,

Hey Cortana, I'm going to bed now

И пусть триггер ввода I'm going to bed now запускает пакетный пакет script, VBScript, команду или любой какой-то определенный пользовательский ответ, который в основном делает следующее.

C:\> shutdown -s

Есть ли способ настроить предопределенные пользовательские команды для Cortana?

Update:

Я создал этот основной учебник YouTube и этот более продвинутый с соответствующим GitHub repo на основе talkitbr отличный и очень полезный ответ ниже.

Вначале его ответ был не в моем понимании, поэтому я решил немного разбить его для будущих пользователей, таких как я.

4b9b3361

Ответ 1

Вы можете создавать команды для прослушивания Cortana. Эти команды должны быть описаны в XML файле под названием Определения голосовой команды или VCD.

Вот пример:

<?xml version="1.0" encoding="utf-8" ?>
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.2">
    <CommandSet xml:lang="en-us" Name="HomeControlCommandSet_en-us">
        <CommandPrefix>HomeControl</CommandPrefix>
        <Example>Control alarm, temperature, light and others</Example>

        <Command Name="Activate_Alarm">
            <Example>Activate alarm</Example>
            <ListenFor>[Would] [you] [please] activate [the] alarm [please]</ListenFor>
            <ListenFor RequireAppName="BeforeOrAfterPhrase">Activate alarm</ListenFor>
            <ListenFor RequireAppName="ExplicitlySpecified">Activate {builtin:AppName} alarm</ListenFor>
            <Feedback>Activating alarm</Feedback>
            <Navigate />
        </Command>
        ...
    </CommandSet>
</VoiceCommands>

После создания этого определения вам необходимо зарегистрировать его в App Startup:

protected async override void OnLaunched(LaunchActivatedEventArgs e)
{
    ...
    // Install the VCD
    try
    {
        StorageFile vcdStorageFile = await Package.Current.InstalledLocation.GetFileAsync(@"HomeControlCommands.xml");
        await VoiceCommandDefinitionManager.InstallCommandDefinitionsFromStorageFileAsync(vcdStorageFile);
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine("There was an error registering the Voice Command Definitions", ex);
    }
}

Затем переопределить метод App.OnActivated для обработки при срабатывании событий:

protected override void OnActivated(IActivatedEventArgs e)
{
    // Handle when app is launched by Cortana
    if (e.Kind == ActivationKind.VoiceCommand)
    {
        VoiceCommandActivatedEventArgs commandArgs = e as VoiceCommandActivatedEventArgs;
        SpeechRecognitionResult speechRecognitionResult = commandArgs.Result;

        string voiceCommandName = speechRecognitionResult.RulePath[0];
        string textSpoken = speechRecognitionResult.Text;
        IReadOnlyList<string> recognizedVoiceCommandPhrases;

        System.Diagnostics.Debug.WriteLine("voiceCommandName: " + voiceCommandName);
        System.Diagnostics.Debug.WriteLine("textSpoken: " + textSpoken);

        switch (voiceCommandName)
        {
            case "Activate_Alarm":
                System.Diagnostics.Debug.WriteLine("Activate_Alarm command");
                break;

Учебник показывает полный код.

После того, как вы все это сделаете, вы можете вызывать свои пакетные скрипты с помощью ProcessStartInfo или System.Diagnostics.Process.Start.

Кроме того, если вы заинтересованы в ответе на пользователя через окно Cortana, отметьте это сообщение о Cortana в фоновом режиме.

Ответ 2

Что вы можете сделать, это записать файл .bat и добавить ярлык к файлу в папку: C:\ProgramData\Microsoft\Windows\Start Menu\Programs вы можете назвать ярлык, что хотите, и вызвать выключение, сказав: "Привет, Cortana open/start [shortcut name]". Удостоверьтесь, что Cortana только слушает вас, чтобы не "шутить".