Files
ApexSurgery/Assets/Oculus/Voice/Lib/Wit.ai/Scripts/Runtime/CallbackHandlers/SimpleStringEntityHandler.cs
T
2025-07-04 20:33:06 +03:00

61 lines
2.0 KiB
C#

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*/
using System;
using Meta.WitAi.Json;
using UnityEngine;
using UnityEngine.Events;
namespace Meta.WitAi.CallbackHandlers
{
[AddComponentMenu("Wit.ai/Response Matchers/Simple String Entity Handler")]
public class SimpleStringEntityHandler : WitIntentMatcher
{
[SerializeField] public string entity;
[SerializeField] public string format;
[SerializeField] private StringEntityMatchEvent onIntentEntityTriggered
= new StringEntityMatchEvent();
public StringEntityMatchEvent OnIntentEntityTriggered => onIntentEntityTriggered;
protected override string OnValidateResponse(WitResponseNode response, bool isEarlyResponse)
{
// Return base
string result = base.OnValidateResponse(response, isEarlyResponse);
if (!string.IsNullOrEmpty(result))
{
return result;
}
// Not found
var entityValue = response.GetFirstEntityValue(entity);
if (string.IsNullOrEmpty(entityValue))
{
return $"Missing required entity: {entity}";
}
// Fail
return string.Empty;
}
protected override void OnResponseInvalid(WitResponseNode response, string error) { }
protected override void OnResponseSuccess(WitResponseNode response)
{
var entityValue = response.GetFirstEntityValue(entity);
if (!string.IsNullOrEmpty(format))
{
onIntentEntityTriggered.Invoke(format.Replace("{value}", entityValue));
}
else
{
onIntentEntityTriggered.Invoke(entityValue);
}
}
}
[Serializable]
public class StringEntityMatchEvent : UnityEvent<string> {}
}