Skip to content

Add Soprano Voice text-to-speech with API-key authentication only - #10

Open
Hou (SciencePotato) wants to merge 2 commits into
mainfrom
feature/soprano-voice-api-key
Open

Add Soprano Voice text-to-speech with API-key authentication only#10
Hou (SciencePotato) wants to merge 2 commits into
mainfrom
feature/soprano-voice-api-key

Conversation

@SciencePotato

Copy link
Copy Markdown
Collaborator

Summary

  • Add structured Soprano Voice speech support in JavaScript, Python, and .NET using voice.text2voice on the existing /messages/omnimsg endpoint.
  • Carry beforePasswordText, password, and language from the encrypted delivery context without extracting the password from message text; preserve leading zeros.
  • Reject incomplete live voice context before credential lookup or outbound HTTP; retain SMS behavior and evaluation mode.
  • Keep Soprano authentication exclusively X-MEMS-API-ID and X-MEMS-API-Key backed by existing Key Vault secrets. No provider JWT, OAuth, token acquisition, token configuration, or bearer forwarding is added. Existing platform caller authentication and JWE encryption are unchanged.
  • Update contract documentation and regression tests for request shape, encrypted-handler propagation, validation, and privacy.

References

  • Reference branch: feature/soprano-voice-provider-token. Only the voice payload approach is used; token features are excluded.
  • Reviewed Connect API - Voice.pdf, including API-key authentication and password speech. The PDF documents the older form-based /voice/voice_orderApiCreate.do API; this PR retains the reference branch's existing JSON omnimsg integration rather than introducing that separate endpoint.

Validation

  • JavaScript: 20 tests passed.
  • Python: 27 tests passed.
  • .NET: 31 tests passed.
  • Production .NET build: passed, zero warnings and errors.
  • git diff --check: passed.
  • No deployment or live provider call performed; actual telephony delivery remains unverified.

@SciencePotato

Copy link
Copy Markdown
Collaborator Author

Local API-key voice verification (2026-09-11)

  • Ran the real JavaScript handler locally with JWE encryption/decryption and existing Soprano API ID/key credentials. Only Functions registration and Key Vault retrieval were substituted locally; the live attempt used real HTTPS. No JWT/OAuth added.
  • One user-authorized live voice submission was attempted at 16:59:49 UTC. The handler returned HTTP 504 after 2517 ms, with no provider response and no nonce acknowledgment. Provider acceptance and handset delivery are UNKNOWN, not confirmed failures or successes. No automatic resend was made.
  • Follow-up non-sending HEAD checks failed to establish a connection to qa4.devops.sopranodesign.com: Node reported UND_ERR_CONNECT_TIMEOUT; Windows curl also timed out with connect=0 and tls=0. Live verification is currently blocked by endpoint reachability from this workstation. Credentials were not verified by the provider.
  • The local encrypted-handler dry run passes, including exact voice payload and API-key-only header assertions.
  • Cleanup commit df2a1a8 removes duplicated speech-field mapping in JavaScript and .NET by serializing the existing models; an extra-field regression assertion protects the outbound contract.
  • After cleanup: JavaScript 20/20 and .NET 31/31 tests passed, editor diagnostics clean, git diff --check passed. Python was unchanged in this cleanup (27/27 passed previously).

Do not treat this as a successful live telephony test. No deployment or merge performed. Local credentials, phone number, and diagnostic artifacts remain outside the PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant