/// <summary> /// Factory method for instantiating and initializing the skill. /// </summary> /// <param name="executionDevice"></param> /// <returns></returns> public IAsyncOperation <ISkill> CreateSkillAsync(ISkillExecutionDevice executionDevice) { return(AsyncInfo.Run(async(token) => { // Create a skill instance with the executionDevice supplied var skillInstance = await FaceSentimentAnalyzerSkill.CreateAsync(this, executionDevice); return skillInstance as ISkill; })); }
/// <summary> /// Creates and initializes a FaceSentimentAnalyzerSkill instance /// </summary> /// <param name="descriptor"></param> /// <param name="device"></param> /// <returns></returns> internal static IAsyncOperation <FaceSentimentAnalyzerSkill> CreateAsync( ISkillDescriptor descriptor, ISkillExecutionDevice device) { return(AsyncInfo.Run(async(token) => { // Create instance var skillInstance = new FaceSentimentAnalyzerSkill(descriptor, device); // Instantiate the FaceDetector skillInstance.m_faceDetector = await FaceDetector.CreateAsync(); // Load WinML model var modelFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri($"ms-appx:///Contoso.FaceSentimentAnalyzer/{FaceSentimentAnalyzerConst.WINML_MODEL_FILENAME}")); var winmlModel = LearningModel.LoadFromFilePath(modelFile.Path); // Create WinML session skillInstance.m_winmlSession = new LearningModelSession(winmlModel, GetWinMLDevice(device)); return skillInstance; })); }