/// <summary> /// Post text to the session /// </summary> /// <param name="text"></param> public void PostText(TextBlobModel text, DeviceProfile device) { try { string relativeUri = String.Format(UriTemplates.POST_TEXT_URI, _session.SessionId, device.profile.id); string absoluteUri = TywiConfiguration.TywiServiceUri + relativeUri; SessionApiRequest<TextBlobModel, TextBlobModel> request = new SessionApiRequest<TextBlobModel, TextBlobModel>( device, absoluteUri, Http.HttpUtilities.Methods.POST, text); this.ProcessRequest<TextBlobModel, TextBlobModel>(request); } catch (Exception exc) { throw new AccessDeniedException(String.Format("Failed to post text from device {0}: {1}", device.profile.id, exc.Message), exc); } }
/// <summary> /// /// </summary> /// <param name="device"></param> /// <returns></returns> internal AudioModel GetAudio(DeviceProfile device) { try { string relativeUri = String.Format(UriTemplates.GET_AUDIO_URI, _session.SessionId, device.profile.id); string absoluteUri = TywiConfiguration.TywiServiceUri + relativeUri; SessionApiRequest<string, AudioModel> request = new SessionApiRequest<string, AudioModel>( device, absoluteUri, Http.HttpUtilities.Methods.GET, null); return this.ProcessRequest<string, AudioModel>(request); } catch (Exception exc) { throw new AccessDeniedException(String.Format("Failed to get audio from device {0}", device.profile.id), exc); } }
/// <summary> /// Get the latest text from the session /// </summary> /// <param name="device">The device details for the connection</param> /// <returns>TranscriptionModel with the latest text</returns> public TranscriptionModel GetText(DeviceProfile device) { try { string relativeUri = String.Format(UriTemplates.GET_TEXT_URI, _session.SessionId, device.profile.id); string absoluteUri = TywiConfiguration.TywiServiceUri + relativeUri; SessionApiRequest<string, TranscriptionModel> request = new SessionApiRequest<string, TranscriptionModel>( device, absoluteUri, Http.HttpUtilities.Methods.GET, null); return this.ProcessRequest<string, TranscriptionModel>(request); } catch (Exception exc) { throw new AccessDeniedException(String.Format("Failed to get text for device {0}", device.profile.id), exc); } }
/// <summary> /// /// </summary> /// <returns></returns> internal SessionModel PostSession(SessionModel session, DeviceProfile device) { try { string absoluteUri = TywiConfiguration.TywiServiceUri + UriTemplates.POST_SESSION_URI; SessionApiRequest<SessionModel, SessionModel> request = new SessionApiRequest<SessionModel, SessionModel>( device, absoluteUri, Http.HttpUtilities.Methods.POST, session); return this.ProcessRequest<SessionModel, SessionModel>(request); } catch (Exception exc) { throw new AccessDeniedException(String.Format("Failed to post audio from device {0}: {1}", device.profile.id, exc.Message), exc); } }
/// <summary> /// /// </summary> /// <param name="audio"></param> /// <param name="device"></param> internal void PostAudio(byte[] audio, DeviceProfile device) { try { if (audio != null && audio.Length > 0) { string relativeUri = String.Format(UriTemplates.POST_AUDIO_URI, _session.SessionId, device.profile.id); string absoluteUri = TywiConfiguration.TywiServiceUri + relativeUri; SessionApiRequest<byte[], byte[]> request = new SessionApiRequest<byte[], byte[]>( device, absoluteUri, Http.HttpUtilities.Methods.POST, audio, "audio/wav"); this.ProcessRequest<byte[], byte[]>(request); } } catch (Exception exc) { throw new AccessDeniedException(String.Format("Failed to post audio from device {0}: {1}", device.profile.id, exc.Message), exc); } }
/// <summary> /// /// </summary> /// <param name="audio"></param> /// <param name="device"></param> internal UserProfileModel PostProfile(UserProfileModel userProfile, DeviceProfile device) { try { string relativeUri = String.Format(UriTemplates.POST_PROFILE_URI, _session.SessionId); string absoluteUri = TywiConfiguration.TywiServiceUri + relativeUri; SessionApiRequest<UserProfileModel, UserProfileModel> request = new SessionApiRequest<UserProfileModel, UserProfileModel>( device, absoluteUri, Http.HttpUtilities.Methods.POST, userProfile); return this.ProcessRequest<UserProfileModel, UserProfileModel>(request); } catch (Exception exc) { throw new AccessDeniedException(String.Format("Failed to post audio from device {0}: {1}", device.profile.id, exc.Message), exc); } }
/// <summary> /// /// </summary> private void InitDevice() { if (Device == null) { Device = new DeviceProfile() { accountName = this.AccountName, bearerToken = this.BearerToken, deviceId = HttpUtilities.CreateRandomId(8), profile = new UserProfileModel() }; } }
/// <summary> /// /// </summary> /// <param name="index"></param> /// <param name="stream"></param> /// <param name="device"></param> private void HandleOutputText(int index, TywiTextStream stream, DeviceProfile device) { TranscriptionModel transcriptions = _service.GetText(device); foreach (var line in transcriptions.transcriptions) stream.WriteText(line.text); }
private void HandleOutputAudio(int index, TywiAudioStream stream, DeviceProfile device) { AudioModel audio = _service.GetAudio(device); foreach (var line in audio.files) { stream.QueueAudio(line.audioFile); } }
/// <summary> /// /// </summary> /// <param name="index"></param> /// <param name="stream"></param> /// <param name="device"></param> private void HandleInputText(int index, TywiTextStream stream, DeviceProfile device) { string text = stream.ReadText(); if (text != null) { TextBlobModel textBlob = new TextBlobModel() { receivedTime = DateTime.Now, text = text }; _service.PostText(textBlob, device); } }
private void HandleInputAudio(int index, TywiAudioStream stream, DeviceProfile device) { byte[] content = stream.ReadAudio(); if (content != null && content.Length > 0) { PcmWrapper wrapper = new PcmWrapper(content, 16000, 1, 16); _service.PostAudio(wrapper.Encode(), device); } }