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,160 @@
/*
* 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.Voice;
using Meta.WitAi.Configuration;
using Meta.WitAi.Data.Configuration;
using Meta.WitAi.Json;
using UnityEngine;
namespace Meta.WitAi.Requests
{
/// <summary>
/// A class used to track Wit text 'Message' requests
/// </summary>
[Serializable]
public class WitUnityRequest : VoiceServiceRequest
{
/// <summary>
/// The configuration to be used for the request
/// </summary>
public WitConfiguration Configuration { get; private set; }
/// <summary>
/// Unity request wrapper for Wit
/// </summary>
private readonly WitVRequest _request;
/// <summary>
/// Endpoint to be used
/// </summary>
public string Endpoint { get; set; }
/// <summary>
/// Endpoint to be used
/// </summary>
public bool ShouldPost { get; set; }
/// <summary>
/// Apply configuration
/// </summary>
/// <param name="newConfiguration"></param>
/// <param name="newOptions"></param>
/// <param name="newEvents"></param>
public WitUnityRequest(WitConfiguration newConfiguration, NLPRequestInputType newDataType, WitRequestOptions newOptions, VoiceServiceRequestEvents newEvents) : base(newDataType, newOptions, newEvents)
{
// Apply configuration & generate request
Configuration = newConfiguration;
// Generate a message WitVRequest
if (InputType == NLPRequestInputType.Text)
{
_request = new WitMessageVRequest(Configuration, newOptions.RequestId, SetDownloadProgress);
Endpoint = Configuration.GetEndpointInfo().Message;
_request.Timeout = Mathf.RoundToInt(Configuration.timeoutMS / 1000f);
ShouldPost = false;
}
// Generate an audio WitVRequest
else if (InputType == NLPRequestInputType.Audio)
{
// TODO: T121060485: Add audio support to WitVRequest
Endpoint = Configuration.GetEndpointInfo().Speech;
ShouldPost = true;
}
// Initialized
_initialized = true;
SetState(VoiceRequestState.Initialized);
}
/// <summary>
/// Ignore state changes unless setup
/// </summary>
private bool _initialized = false;
protected override void SetState(VoiceRequestState newState)
{
if (_initialized)
{
base.SetState(newState);
}
}
/// <summary>
/// Get send error options
/// </summary>
protected override string GetSendError()
{
if (Configuration == null)
{
return "Cannot send request without a valid configuration.";
}
if (_request == null)
{
return "Request creation failed.";
}
return base.GetSendError();
}
/// <summary>
/// Performs a wit message request
/// </summary>
/// <param name="onSendComplete">Callback that handles send completion</param>
protected override void HandleSend()
{
// Send message request
if (_request is WitMessageVRequest messageRequest)
{
messageRequest.MessageRequest(Endpoint, ShouldPost,
Options.Text, Options.QueryParams,
HandleFinalNlpResponse);
}
}
/// <summary>
/// Set status code prior to handling response
/// </summary>
protected override void HandleFinalNlpResponse(WitResponseNode responseData, string error)
{
StatusCode = _request.ResponseCode;
base.HandleFinalNlpResponse(responseData, error);
}
/// <summary>
/// Handle cancellation
/// </summary>
protected override void HandleCancel()
{
if (_request != null)
{
_request.Cancel();
}
}
#region AUDIO CALLBACKS
// TODO: T121060485: Add audio support to WitVRequest
/// <summary>
/// Error returned if audio cannot be activated
/// </summary>
protected override string GetActivateAudioError()
{
return "Audio request not yet implemented";
}
/// <summary>
/// Activates audio & calls activated callback once complete
/// </summary>
protected override void HandleAudioActivation()
{
SetAudioInputState(VoiceAudioInputState.On);
}
/// <summary>
/// Deactivates audio asap & calls deactivated callback once complete
/// </summary>
protected override void HandleAudioDeactivation()
{
SetAudioInputState(VoiceAudioInputState.Off);
}
#endregion
}
}