Я пытаюсь сделать это с утра, и, похоже, это не работает для меня.
Требуется, чтобы пользователь вызвал Кортану и попросил ее открыть приложение - назовем его app1.
Я создал лазурного бота на основе EchoBot и заменил код ответа следующим:
protected override async Task
OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext,
CancellationToken cancellationToken)
{
await turnContext.SendActivityAsync(MessageFactory.Text($"Echo:
Opening app1..."), cancellationToken);
var startInfo = new ProcessStartInfo
{
FileName = @"D:\_Projects\xyz\app1.exe",
UseShellExecute = false,
CreateNoWindow = false,
};
var process = Process.Start(startInfo);
var success = process != null && process.WaitForExit(30 * 10000);
if (!success)
{
//process?.Kill();
throw new ApplicationException("A timeout occurred during
method execution. The service interface did not finish in a
timely fashion.");
}
var exitCode = process.ExitCode;
}
работает при локальном выполнении после загрузки кода из Azure.
Но он не работает при вызове из Кортаны.
Редактировать : локальное тестирование выполнено с использованием эмулятора Bot Framework (v4)
Он просто печатает строку «Открытие приложения 1» и стоит там.
Окно отладки, как и ожидалось, бесполезно.
Теперь я попытался использовать совершенно другую технику, которую я где-то читал, она заключается в локальном добавлении приложения в папку user \ Programs \ и вызове его из Cortana, сказав Open app1.
Проблема в том, что Кортана вообще не распознает приложение. он просто запускает Edge и ищет app1 на bing.
Я видел несколько видео, касающихся навыка cortana, и в некоторых из них запуск нового приложения с использованием готового приложения uwp - но мой на самом деле exe-файл, сгенерированный из python с использованием auto-py-to-exe, так что это не полезно для меня.
Ссылка:
https://www.youtube.com/watch?v=h2L9KAWh5qs&t=2696s
https://www.youtube.com/watch?v=6imjt5l7jXc
Есть ли решение этой проблемы?