Initial Commit
This commit is contained in:
+64
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* 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 Intent Handler")]
|
||||
public class SimpleIntentHandler : WitIntentMatcher
|
||||
{
|
||||
[SerializeField] private UnityEvent onIntentTriggered = new UnityEvent();
|
||||
|
||||
[Tooltip("Confidence ranges are executed in order. If checked, all confidence values will be checked instead of stopping on the first one that matches.")]
|
||||
[SerializeField] public bool allowConfidenceOverlap;
|
||||
#if UNITY_2021_3_2 || UNITY_2021_3_3 || UNITY_2021_3_4 || UNITY_2021_3_5
|
||||
[NonReorderable]
|
||||
#endif
|
||||
[SerializeField] public ConfidenceRange[] confidenceRanges;
|
||||
|
||||
public UnityEvent OnIntentTriggered => onIntentTriggered;
|
||||
|
||||
protected override void OnResponseSuccess(WitResponseNode response)
|
||||
{
|
||||
onIntentTriggered.Invoke();
|
||||
UpdateRanges(response);
|
||||
}
|
||||
protected override void OnResponseInvalid(WitResponseNode response, string error)
|
||||
{
|
||||
UpdateRanges(response);
|
||||
}
|
||||
|
||||
private void UpdateRanges(WitResponseNode response)
|
||||
{
|
||||
// Find intents if possible
|
||||
var intents = response?.GetIntents();
|
||||
if (intents == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Iterate intents
|
||||
foreach (var intentData in intents)
|
||||
{
|
||||
if (string.Equals(intent, intentData.name, StringComparison.CurrentCultureIgnoreCase))
|
||||
{
|
||||
// Found intent
|
||||
RefreshConfidenceRange(intentData.confidence, confidenceRanges, allowConfidenceOverlap);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Not matched
|
||||
RefreshConfidenceRange(0, confidenceRanges, allowConfidenceOverlap);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user