Repository navigation
Releases: voicetel/voiceml-ruby-sdk
Release list
v0.9.5
Tracks VoiceML API spec 0.9.4.
Added
calls.createacceptsTimeLimit(seconds; explicit0or>14400rejected with error 13216, negative disables the limit).- Conference
participants.createacceptsConferenceStatusCallback,ConferenceStatusCallbackMethodandConferenceStatusCallbackEvent. - Conference recording update accepts
PauseBehavior(withstatus="paused":skipdrops the paused span,silencekeeps it). applications.create/applications.updateacceptSmsUrl,SmsMethod,SmsFallbackUrl,SmsFallbackMethodandPublicApplicationConnectEnabled.messages.createacceptsSendAtandScheduleType(fixed) for scheduled sends.- Call transcriptions start accepts
SpeechModel,EnableAutomaticPunctuationandIntelligenceService.
Changed
- Transcriptions start: the request field
StatusCallbackis renamed toStatusCallbackUrl— the name the server actually reads (the old key was never applied).
v0.9.4
Tracks VoiceML API spec 0.9.3.
Added
incoming_phone_numbers.create/.updateacceptvoice_application_sid:,status_callback:andstatus_callback_method:— the number-level lifecycle webhook for inbound calls, and binding the number's voice config to an Application.outgoing_caller_ids.create(caller-ID verification) acceptscall_delay:(0–60 s),extension:,status_callback:andstatus_callback_method:.
These close the gap where the server accepted these form fields but the SDK raised ArgumentError on the unknown kwargs.
v0.9.3
VoiceML v0.9.3 (Ruby)
Thread-safety fix: a shared client no longer interleaves concurrent requests on one connection (responses could previously reach the wrong caller). Ruby floor is now 3.1.
Fixed
- Pagination: list iterators now follow the API's
next_page_uri/meta.next_page_urllinks verbatim. The previous page-counting approach never terminated for Calls/Conferences and was rejected for Messages/Recordings on page 2. - Retry safety: non-idempotent POSTs are no longer replayed after 5xx responses or read timeouts, preventing duplicate outbound calls and messages. POSTs still retry on 429 (honouring
Retry-After, seconds or HTTP-date, capped) and on connection failures that provably preceded the request. - Credential hygiene: the API key no longer appears in default object dumps/serialisation; recording-audio redirects drop credentials when leaving the API host and refuse https->http downgrades.
- Path parameters are RFC 3986-encoded end to end;
Retry-After, error envelopes, and 2xx decode failures now report accurately. - Wire-shape conformance fixes across Calls/Messages/Applications/IncomingPhoneNumbers/Recordings; a committed spec-contract test now exercises every operation.
Added
- Webhook
X-Twilio-Signaturevalidation helper (constant-time, port-tolerant). - 40 operations newly reachable: Accounts (incl. key rotation), Balance, OutgoingCallerIds, Message Media + Feedback, Exports, account/recording Transcriptions, Usage Records (+8 windows), SIP Registrations, Messaging Service sender numbers, Monitor Alerts, conference recording start, openapi.yaml/yml.
Breaking (behavioural, endpoint-precise)
- Removed SDK methods for the six per-call GETs the API retired (405 / error 20004):
/Calls/{Sid}/Streams|Siprec|Transcriptionslist/fetch. POST start/stop remain. total/num_pagesdropped from list envelopes; non-specStartTime>=/StartTime<=filters removed.
Full change list: CHANGELOG.md ([0.9.3]).
v0.9.2
v0.9.2
New
- Messaging Service —
client.messaging_v1.services: create, list, fetch, update, delete. - Pricing (v1 & v2) —
client.pricing: 13 read-only rate-lookup endpoints across Voice, Messaging, Phone Numbers, and Trunking. - Per-product host routing — the Conversations product now answers on
conversations.voicetel.comand Messaging Service onmessaging.voicetel.com, derived automatically from your base URL. Newmessaging_base_url / conversations_base_urloptions target custom hosts on self-hosted deployments.
Maintenance
- Integrated dependency and security updates.
- Documentation links refreshed to the v0.9 API docs.
Tracks OpenAPI spec 0.9.2.
v0.9.1
v0.9.1 — Conversations v1, Voice v1, Routes V2 PhoneNumbers, Assistants v1
Major surface expansion. Spec rotation 0.8.1 → 0.9.1 (307 ops, +179 since v0.8.1). Twilio-compatible across the board; migration-compatible with Twilio Conversations / Assistants client code.
New client accessors
client.conversations_v1— 15 account-level resource families plus 14-family service-scoped mirror via.services.scope(chat_service_sid).*.client.voice_v1—byoc_trunks,connection_policies(+.targets(sid)),settings(DialingPermissions),source_ip_mappings,ip_records.client.routes_v2.phone_numbers— Inbound Processing Region for phone numbers.client.assistants_v1—assistants/tools/knowledge(+.status,.chunks) /sessions/messages(send) /feedbacks/policiesvia scope factoryassistants.scope(id). First JSON-bodied family in the SDK;PUTfor updates viatransport.request(:post, ..., json: {...}).
Ruby notes
- Replaced the old
SKIP_OPSarray +casedispatch inspec/conformance_spec.rbwith an explicitCONFORMANCE_TARGETSlookup table covering all 107 op IDs — every Twilio fixture now dispatches, none silenced. Refactor also removed 4 pre-existingrubocop:disable Metrics/*directives. - 5 new compat-stub model files added (accounts, outgoing_caller_ids, media, notifications, user_defined_messages) +
SipAuthMappingList. bundle exec rspecruns 373 examples / 0 failures / 0 pending with conformance env set.
Install
gem install voiceml -v 0.9.1
Live on RubyGems: https://rubygems.org/gems/voiceml/versions/0.9.1
v0.8.1
v0.7.1.1
Test-pin fix on top of v0.7.1 — same null-bugfix cohort.
v0.7.1 lifted the SDK Version constant from 0.7.0 → 0.7.1 across the fleet as a marker for the fleet-wide README parity refresh, but the Ruby SDK's test suite carried a version-pinned assertion that still expected "0.7.0" and so failed CI. v0.7.1.1 brings both the version constant and the test assertion to "0.7.1.1" in lockstep.
No SDK behaviour change beyond the version constant. The README is the new fleet-uniform style (📚 TOC, ✨ Features, 🚀 Installation, 🏁 Quickstart, 🔑 Authentication, 🗺️ Resource Reference, 🚨 Error Handling, ⚡ Async / 📄 Pagination, 🔁 Migration, ⏱️ Rate Limits, 🛠️ Development, 📖 API Documentation, 🙌 Contributors, 💖 Sponsors, 📄 License).
Treat v0.7.1.1 as your v0.7.1 on this SDK. The v0.7.1 tag exists on this repo as a transient artifact but its CI failed and the canonical release for the v0.7.1 cohort here is v0.7.1.1.
Verified before push: bundle exec rspec in a vanilla ruby:3.2 container (68 examples, 0 failures) — both green.
Other SDKs in the same cohort:
- Python, TypeScript / Node, Java, C# / .NET, PHP: shipped at v0.7.1 (CI green there)
- Collections, sdks-index: tagged at v0.7.1
v0.7.0
Spec sync to callbroadcast v0.7.0.
New resources
client.messages— outbound SMS on the Twilio-compatible/Messagesresource:create(...),fetch(sid),list(...)(to:/from:/date_sent:/date_sent_lt:/date_sent_gt:filters,page:/page_size:/page_token:),update(sid, body: ..., status: ...)(Body redaction;status: :canceled),delete(sid),each(...)Enumerator for paginated walks.Message,MessageListdata classes.
client.calls.start_payment(call_sid, ...)/update_payment(call_sid, payment_sid, ...)— REST companion to<Pay>:- Opens a Pay session on a live call, advance via
capture:, terminate viastatus: :complete/:cancel. CallPaymentdata class + six wire-enum modules (PaymentBankAccountType,PaymentInput,PaymentMethod,PaymentTokenType,PaymentCapture,PaymentSessionStatus).
- Opens a Pay session on a live call, advance via
The conformance harness now decodes Twilio's 17 Messages fixtures.
Installation
gem install voiceml -v 0.7.0
Verification
rspec— 199 examples, 0 failures, 9 pending (baseline notification stubs only).RUBYOPT='-W2'clean.
v0.6.6.1
- Persistent HTTP connections for TLS session reuse and reduced handshake overhead
- HTTP client injection via http_client: on Transport and Client constructors
- each() Enumerator-based pagination for Calls, Conferences, Recordings, Queues
- Multi-page pagination test coverage
v0.6.6
What's new in v0.6.6
- New
client.notificationsresource — per-call + account-level Notification list/fetch (compat stubs) - Conference-scoped Recording CRUD on
client.conferences: fetch, update (pause/resume/stop), delete - IncomingPhoneNumber typed list endpoints:
list_local,list_mobile,list_toll_free - Accept-but-no-op list filters:
log,message_datetriple,include_soft_deleted
Doc-comment refresh
"Twilio-shape(d)" → "Twilio-compatible" across models, errors, client, voiceml.rb module doc, and README.
Full Changelog: v0.6.4...v0.6.6