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>
そして私の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 でエラーが発生することはありません)。Cortana に 1 対 1 で一致する文字列を尋ねると、ユニバーサル Windows アプリで同じおかしなコードを実行します。
エラーが発生しました。あとでもう一度試してみてください
したがって、彼女はコマンド パターン ("Hey How Lets Go") を認識していると思いますが、ランチをしたり、BackgroundTask を実行したりできないという奇妙な理由があります。
フラストレーションの最大のポイントは、CORTANA メッセージをデバッグするおかしな方法がないことです!!
正確に何が間違っていたのかを知りたい場合->それを行う方法はありません。
エラーが発生したときに、そのことから取得できた唯一の出力は次のとおりです。
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を使用してプロジェクトを追加しました->助けにはなりませんでした
更新1:
だから私は正確なVoiceCommandServiceプロジェクトをサンプルアプリから私のアプリにコピーし、それを参照として追加することでテストBackgroundTaskを実行することができました(そしてそれは重要です)参照 - >そこにプロジェクトを追加します)
プロジェクトの依存関係または参照パスとして追加する -> 効果はありません (* Microsoft です、申し訳ありません)。
- Reference としてスタートアップ プロジェクトにリンクされた別の testService で、すばらしい Cortana から同じような応答が得られます
更新 2:
よし、なんとか彼女に私のタスクについて話し始めさせることができた!!
- これらの BackgroundTask を機能させるには、それらを別のプロジェクトに含める必要があります
- そのプロジェクトは、Statup プロジェクトの参照として含める必要があります。
- そのプロジェクトは次のタイプでなければなりません: Windows ランタイム コンポーネント
- BackgroundTask にコンストラクターを含めてはなりません -> そうしないと、cortana がそれを利用します。Run() メソッドを介して初期化などを行います
これは解決済みと見なすことができます。