public static string LongName(this AudioEncoding value) { FieldInfo field = value.GetType().GetField(value.ToString()); LongNameAttribute attribute = Attribute.GetCustomAttribute(field, typeof(LongNameAttribute)) as LongNameAttribute; return(attribute == null?value.ToString() : attribute.LongName); }
public static string Command(this AudioEncoding value) { FieldInfo field = value.GetType().GetField(value.ToString()); CommandAttribute attribute = Attribute.GetCustomAttribute(field, typeof(CommandAttribute)) as CommandAttribute; return(attribute == null?value.ToString() : attribute.Command); }
private string ProcessAudioLog(string log, AudioFrame frame, AudioEncoding encoding, ConnectionInfo remoteConnectionInfo) { var pcmBuffer = GetPcmAudioBuffer(frame); var compressedBuffer = GetCompressedAudioBuffer(frame); return(log .Replace("{footprint}", compressedBuffer.Footprint.ToString()) .Replace("{duration}", frame.Duration.ToString()) .Replace("{clockRate}", pcmBuffer.Format.ClockRate.ToString()) .Replace("{channelCount}", pcmBuffer.Format.ChannelCount.ToString()) .Replace("{mediaStreamId}", frame.Mid) .Replace("{rtpStreamId}", frame.RtpStreamId) .Replace("{sequenceNumber}", frame.SequenceNumber.ToString()) .Replace("{synchronizationSource}", frame.SynchronizationSource.ToString()) .Replace("{systemTimestamp}", frame.SystemTimestamp.ToString()) .Replace("{timestamp}", frame.Timestamp.ToString()) .Replace("{encoding}", encoding.ToString()) .Replace("{applicationId}", Options.ApplicationId) .Replace("{channelId}", Options.ChannelId) .Replace("{userId}", remoteConnectionInfo.UserId) .Replace("{userAlias}", remoteConnectionInfo.UserAlias) .Replace("{deviceId}", remoteConnectionInfo.DeviceId) .Replace("{deviceAlias}", remoteConnectionInfo.DeviceAlias) .Replace("{clientId}", remoteConnectionInfo.ClientId) .Replace("{clientTag}", remoteConnectionInfo.ClientTag) .Replace("{connectionId}", remoteConnectionInfo.Id) .Replace("{connectionTag}", remoteConnectionInfo.Tag) .Replace("{mediaId}", remoteConnectionInfo.MediaId)); }
private void StartRequest(Uri uri) { if (!configuration && configurationRequired) { statusDescription = "Configuration is not set. Cannot start request."; Debug.LogError(statusDescription); statusCode = ERROR_CODE_NO_CONFIGURATION; SafeInvoke(onResponse); return; } if (!isServerAuthRequired && string.IsNullOrEmpty(configuration.clientAccessToken)) { statusDescription = "Client access token is not defined. Cannot start request."; Debug.LogError(statusDescription); statusCode = ERROR_CODE_NO_CLIENT_TOKEN; SafeInvoke(onResponse); return; } //allow app to intercept request and potentially modify uri or add custom headers //NOTE: the callback depends on knowing the original Uri, before it is modified Dictionary <string, string> customHeaders = null; if (onPreSendRequest != null) { onPreSendRequest(ref uri, out customHeaders); } WrapHttpWebRequest wr = new WrapHttpWebRequest((HttpWebRequest)WebRequest.Create(uri.AbsoluteUri)); //request = (IRequest)(HttpWebRequest) WebRequest.Create(uri); _request = wr; if (isServerAuthRequired) { _request.Headers["Authorization"] = $"Bearer {serverToken}"; } else { _request.Headers["Authorization"] = $"Bearer {configuration.clientAccessToken.Trim()}"; } if (null != postContentType) { _request.Method = "POST"; _request.ContentType = postContentType; _request.ContentLength = postData.Length; } // Configure additional headers if (WitEndpointConfig.GetEndpointConfig(configuration).Speech == command || WitEndpointConfig.GetEndpointConfig(configuration).Dictation == command) { _request.ContentType = audioEncoding.ToString(); _request.Method = "POST"; _request.SendChunked = true; } _request.Headers["X-Wit-Client-Request-Id"] = requestId; requestRequiresBody = RequestRequiresBody(command); var configId = "not-yet-configured"; #if UNITY_EDITOR if (configuration) { if (string.IsNullOrEmpty(configuration.configId)) { configuration.configId = Guid.NewGuid().ToString(); EditorUtility.SetDirty(configuration); } configId = configuration.configId; } #endif _request.UserAgent = GetUserAgent(configuration); requestStartTime = DateTime.UtcNow; isActive = true; statusCode = 0; statusDescription = "Starting request"; _request.Timeout = configuration ? configuration.timeoutMS : 10000; WatchMainThreadCallbacks(); if (null != onProvideCustomHeaders) { foreach (var header in onProvideCustomHeaders()) { _request.Headers[header.Key] = header.Value; } } //apply any modified headers last, as this allows us to overwrite headers if need be if (customHeaders != null) { foreach (var pair in customHeaders) { _request.Headers[pair.Key] = pair.Value; } } if (_request.Method == "POST") { var getRequestTask = _request.BeginGetRequestStream(HandleRequestStream, _request); ThreadPool.RegisterWaitForSingleObject(getRequestTask.AsyncWaitHandle, HandleTimeoutTimer, _request, Timeout, true); } else { StartResponse(); } }
private void StartRequest(Uri uri) { if (!configuration && configurationRequired) { statusDescription = "Configuration is not set. Cannot start request."; Debug.LogError(statusDescription); statusCode = ERROR_CODE_NO_CONFIGURATION; SafeInvoke(onResponse); return; } if (!isServerAuthRequired && string.IsNullOrEmpty(configuration.clientAccessToken)) { statusDescription = "Client access token is not defined. Cannot start request."; Debug.LogError(statusDescription); statusCode = ERROR_CODE_NO_CLIENT_TOKEN; SafeInvoke(onResponse); return; } request = (HttpWebRequest)WebRequest.Create(uri); if (isServerAuthRequired) { request.Headers["Authorization"] = $"Bearer {serverToken}"; } else { request.Headers["Authorization"] = $"Bearer {configuration.clientAccessToken.Trim()}"; } if (null != postContentType) { request.Method = "POST"; request.ContentType = postContentType; request.ContentLength = postData.Length; } // Configure additional headers if (WitEndpointConfig.GetEndpointConfig(configuration).Speech == command) { request.ContentType = audioEncoding.ToString(); request.Method = "POST"; request.SendChunked = true; } var configId = "not-yet-configured"; #if UNITY_EDITOR if (configuration) { if (string.IsNullOrEmpty(configuration.configId)) { configuration.configId = Guid.NewGuid().ToString(); EditorUtility.SetDirty(configuration); } configId = configuration.configId; } #endif request.UserAgent = $"voice-sdk-35.0.0.98.175,wit-unity-{WIT_SDK_VERSION},{operatingSystem},{deviceModel},{configId},{Application.identifier}"; #if UNITY_EDITOR request.UserAgent += ",Editor"; #else request.UserAgent += ",Runtime"; #endif requestStartTime = DateTime.Now; isActive = true; statusCode = 0; statusDescription = "Starting request"; request.Timeout = configuration ? configuration.timeoutMS : 10000; if (null != onProvideCustomHeaders) { foreach (var header in onProvideCustomHeaders()) { request.Headers[header.Key] = header.Value; } } if (request.Method == "POST") { var getRequestTask = request.BeginGetRequestStream(HandleRequestStream, request); ThreadPool.RegisterWaitForSingleObject(getRequestTask.AsyncWaitHandle, HandleTimeoutTimer, request, Timeout, true); } else { StartResponse(); } }
/// <summary> /// Returns the file extension for specified audio type. /// </summary> /// <param name="audio">The audio type to get file extension for.</param> /// <returns>The file extension.</returns> public string GetAudioExtension(AudioEncoding audio) { return("." + audio.ToString().ToLower()); }