Skip to content

Releases: voicetel/voiceml-ruby-sdk

v0.9.5

Choose a tag to compare

@voicetel voicetel released this 21 Oct 15:00

Tracks VoiceML API spec 0.9.4.

Added

  • calls.create accepts TimeLimit (seconds; explicit 0 or >14400 rejected with error 13216, negative disables the limit).
  • Conference participants.create accepts ConferenceStatusCallback, ConferenceStatusCallbackMethod and ConferenceStatusCallbackEvent.
  • Conference recording update accepts PauseBehavior (with status="paused": skip drops the paused span, silence keeps it).
  • applications.create / applications.update accept SmsUrl, SmsMethod, SmsFallbackUrl, SmsFallbackMethod and PublicApplicationConnectEnabled.
  • messages.create accepts SendAt and ScheduleType (fixed) for scheduled sends.
  • Call transcriptions start accepts SpeechModel, EnableAutomaticPunctuation and IntelligenceService.

Changed

  • Transcriptions start: the request field StatusCallback is renamed to StatusCallbackUrl — the name the server actually reads (the old key was never applied).

v0.9.4

Choose a tag to compare

@voicetel voicetel released this 21 Oct 12:07

Tracks VoiceML API spec 0.9.3.

Added

  • incoming_phone_numbers.create / .update accept voice_application_sid:, status_callback: and status_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) accepts call_delay: (0–60 s), extension:, status_callback: and status_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

Choose a tag to compare

@voicetel voicetel released this 18 Oct 18:12

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_url links 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-Signature validation 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|Transcriptions list/fetch. POST start/stop remain.
  • total/num_pages dropped from list envelopes; non-spec StartTime>=/StartTime<= filters removed.

Full change list: CHANGELOG.md ([0.9.3]).

v0.9.2

Choose a tag to compare

@voicetel voicetel released this 09 Jul 16:00

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.com and Messaging Service on messaging.voicetel.com, derived automatically from your base URL. New messaging_base_url / conversations_base_url options 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

Choose a tag to compare

@voicetel voicetel released this 28 Jun 19:48

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 / policies via scope factory assistants.scope(id). First JSON-bodied family in the SDK; PUT for updates via transport.request(:post, ..., json: {...}).

Ruby notes

  • Replaced the old SKIP_OPS array + case dispatch in spec/conformance_spec.rb with an explicit CONFORMANCE_TARGETS lookup table covering all 107 op IDs — every Twilio fixture now dispatches, none silenced. Refactor also removed 4 pre-existing rubocop:disable Metrics/* directives.
  • 5 new compat-stub model files added (accounts, outgoing_caller_ids, media, notifications, user_defined_messages) + SipAuthMappingList.
  • bundle exec rspec runs 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

Choose a tag to compare

@voicetel voicetel released this 17 Jun 22:42

SIP Trunking + Routes V2 Inbound Processing Region added (skipping v0.8.0 entirely for Ruby). client.sip.* and client.routes_v2.sip_domains.*. 81 RSpec examples pass (was 65). RubyGems publish via OIDC.

v0.7.1.1

Choose a tag to compare

@voicetel voicetel released this 12 Jun 12:42

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

Choose a tag to compare

@voicetel voicetel released this 11 Jun 18:11

Spec sync to callbroadcast v0.7.0.

New resources

  • client.messages — outbound SMS on the Twilio-compatible /Messages resource:
    • 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, MessageList data 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 via status: :complete / :cancel.
    • CallPayment data class + six wire-enum modules (PaymentBankAccountType, PaymentInput, PaymentMethod, PaymentTokenType, PaymentCapture, PaymentSessionStatus).

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

Choose a tag to compare

@voicetel voicetel released this 26 May 13:38
  • 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

Choose a tag to compare

@voicetel voicetel released this 24 May 14:59

What's new in v0.6.6

  • New client.notifications resource — 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_date triple, 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