Cortana BackgroundTask Интеграция
Поэтому я пытаюсь интегрировать Cortana в мое универсальное приложение для Windows с помощью фоновой задачи, потому что мне нужно создать диалог с Cortana.
Я следовал за образцами отсюда
В приведенном выше примере используется IBackgroundTask для построения диалога и однозначного соответствия имени поездки в AdventureWorksVoiceCommandService
Поэтому я пытаюсь сделать то же самое на самом простом примере:
using Windows.ApplicationModel.Background;
namespace AdventureWorks.VoiceCommands
{
public sealed class TestBgService : IBackgroundTask
{
public async void Run(IBackgroundTaskInstance taskInstance)
{
var someVar = taskInstance;
}
}
}
И я обновил пакетный манифест следующим образом:
<Extensions>
<uap:Extension Category="windows.appService" EntryPoint="AdventureWorks.VoiceCommands.TestBgService">
<uap:AppService Name="TestBgService" />
</uap:Extension>
</Extensions>
И файл My VCD содержит следующее:
<Command Name="heyHowLetsGo">
<Example> Hey How Lets Go </Example>
<ListenFor RequireAppName="BeforeOrAfterPhrase">Hey How Lets Go</ListenFor>
<VoiceCommandService Target="TestBgService"/>
</Command>
Выполнение этого в приложении AdventureWorks smaple работает просто отлично (на самом деле случайно, но id не выдает ошибку), запуская тот же самый чертов код в моем Универсальном приложении для Windows, когда запрашивает у Cortana сопоставленную строку 1: 1, которую она всегда говорит:
Что-то пошло не так. Попробуйте позже
Поэтому я предполагаю, что она распознает шаблон команды ("Привет, как пойдем"), но по какой-то причудливой причине она не может пообедать или запустить BackgroundTask
Самым большим разочарованием является то, что нет никакого безумного пути отладки сообщений Кортаны!!
Если я хочу знать, ЧТО ТОЧНО НЕПРАВИЛЬНО -> я не смогу это сделать.
Единственный возможный вывод, который я смог получить от этой вещи, когда происходит ошибка, это:
Exception thrown at 0x00007FFC15401F28 in SearchUI.exe: Microsoft C++ exception: wil::ResultException at memory location 0x0000007DF1CFD180.
Exception thrown at 0x00007FFC15401F28 in SearchUI.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FFC15401F28 in SearchUI.exe: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location 0x0000007DFB9F7DC0.
Пожалуйста, если у кого-то есть идеи, попробуйте этот мир программного обеспечения -> не проходите мимо, не отвечая. Я сижу на этой штуке больше суток без движения.
И да -> я добавил проект с BackgroundTask в качестве ссылки в автозагрузке проекта -> не помогло
Update1:
Таким образом, мне удалось запустить тест BackgroundTask, скопировав точный проект VoiceCommandService из примера приложения в мое приложение и добавив его (и это важно) в качестве справочного материала (нажмите на стартовый проект, в панели инструментов в заголовке попал в Project -> Добавить Ссылка -> добавь свой проект туда)
добавление его как Зависимости проекта или Ссылочный путь -> имеет эффект 0 (* это так Microsoft, извините)
- Мой testService в другом связан с запуском проекта, так как Ссылка по-прежнему дает тот же дерьмовый ответ от удивительного Кортана
UPDATE2:
Итак, мне удалось заставить ее начать говорить о моих задачах!!
- Для того, чтобы эти BackgroundTask работали, вам нужно иметь их в отдельном проекте.
- Этот проект ДОЛЖЕН быть включен в качестве ссылки в ваш проект Statup
- Этот проект ДОЛЖЕН иметь тип: Windows Runtime Component
- Ваша BackgroundTask НЕ ДОЛЖНА содержать конструктор -> иначе cortana будет освобождена от него. Выполните инициализацию и другие действия с помощью метода Run().
Это можно считать решенным.