Initial Commit

This commit is contained in:
2025-07-04 20:33:06 +03:00
commit 8f09347ae0
9219 changed files with 2447903 additions and 0 deletions
@@ -0,0 +1,76 @@
/*
* 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.Text.RegularExpressions;
using Meta.WitAi.Json;
using Meta.WitAi.Utilities;
using UnityEngine;
namespace Meta.WitAi.CallbackHandlers
{
[AddComponentMenu("Wit.ai/Response Matchers/Utterance Matcher")]
public class WitUtteranceMatcher : WitResponseHandler
{
[SerializeField] private string searchText;
[SerializeField] private bool exactMatch = true;
[SerializeField] private bool useRegex;
[SerializeField] private StringEvent onUtteranceMatched = new StringEvent();
private Regex regex;
protected override string OnValidateResponse(WitResponseNode response, bool isEarlyResponse)
{
var text = response["text"].Value;
if (!IsMatch(text))
{
return "Required utterance does not match";
}
return "";
}
protected override void OnResponseInvalid(WitResponseNode response, string error){}
protected override void OnResponseSuccess(WitResponseNode response)
{
var text = response["text"].Value;
onUtteranceMatched?.Invoke(text);
}
private bool IsMatch(string text)
{
if (useRegex)
{
if (null == regex)
{
regex = new Regex(searchText, RegexOptions.Compiled | RegexOptions.IgnoreCase);
}
var match = regex.Match(text);
if (match.Success)
{
if (exactMatch && match.Value == text)
{
return true;
}
else
{
return true;
}
}
}
else if (exactMatch && text.ToLower() == searchText.ToLower())
{
return true;
}
else if (text.ToLower().Contains(searchText.ToLower()))
{
return true;
}
return false;
}
}
}