--- name: telnyx-webrtc-ruby description: >- Manage WebRTC credentials and mobile push notification settings. Use when building browser-based or mobile softphone applications. This skill provides Ruby SDK examples. metadata: author: telnyx product: webrtc language: ruby generated_by: telnyx-openapi-pipeline --- # Telnyx Webrtc - Ruby ## Installation ```bash gem install telnyx ``` ## Setup ```ruby require "telnyx" client = Telnyx::Client.new( api_key: ENV["TELNYX_API_KEY"], # This is the default and can be omitted public_key: ENV["TELNYX_PUBLIC_KEY"], # Required for client.webhooks.unwrap (webhook verification) ) ``` All examples below assume `client` is already initialized as shown above. ## Error Handling All API calls can fail with network errors, rate limits (429), validation errors (422), or authentication errors (401). Always handle errors in production code: ```ruby begin result = client.messages.send_(to: "+13125550001", from: "+13125550002", text: "Hello") rescue Telnyx::Errors::APIConnectionError puts "Network error — check connectivity and retry" raise rescue Telnyx::Errors::RateLimitError # 429: rate limited — wait, then retry the request (bounded exponential backoff) sleep(1) # Check Retry-After header for actual delay # ...retry the call here (give up after a few attempts); otherwise re-raise: raise rescue Telnyx::Errors::APIStatusError => e puts "API error #{e.status}: #{e.message}" if e.status == 422 puts "Validation error — check required fields and formats" end raise # A failed request must never look like success to the caller end ``` Common error codes: `401` invalid API key, `403` insufficient permissions, `404` resource not found, `422` validation error (check field formats), `429` rate limited (retry with exponential backoff). ## Important Notes - **Pagination:** Use `.auto_paging_each` for automatic iteration: `page.auto_paging_each { |item| puts item.id }`. ## List mobile push credentials Returns a paginated list of the mobile push credentials on your account, with support for filtering. `GET /mobile_push_credentials` ```ruby page = client.mobile_push_credentials.list puts(page) ``` Returns: `alias` (string), `certificate` (string), `created_at` (date-time), `id` (string), `private_key` (string), `project_account_json_file` (object), `record_type` (string), `type` (string), `updated_at` (date-time) ## Creates a new mobile push credential Creates a new mobile push credential for delivering push notifications to iOS or Android apps, and returns the created credential. `POST /mobile_push_credentials` — Required: `type`, `certificate`, `private_key`, `alias` ```ruby push_credential_response = client.mobile_push_credentials.create( create_mobile_push_credential_request: { alias: "LucyIosCredential", certificate: "-----BEGIN CERTIFICATE----- MIIGVDCCBTKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END CERTIFICATE-----", private_key: "-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END RSA PRIVATE KEY-----", type: :ios } ) puts(push_credential_response) ``` Returns: `alias` (string), `certificate` (string), `created_at` (date-time), `id` (string), `private_key` (string), `project_account_json_file` (object), `record_type` (string), `type` (string), `updated_at` (date-time) ## Retrieves a mobile push credential Retrieves mobile push credential based on the given `push_credential_id` `GET /mobile_push_credentials/{push_credential_id}` ```ruby push_credential_response = client.mobile_push_credentials.retrieve("0ccc7b76-4df3-4bca-a05a-3da1ecc389f0") puts(push_credential_response) ``` Returns: `alias` (string), `certificate` (string), `created_at` (date-time), `id` (string), `private_key` (string), `project_account_json_file` (object), `record_type` (string), `type` (string), `updated_at` (date-time) ## Deletes a mobile push credential Deletes a mobile push credential based on the given `push_credential_id` `DELETE /mobile_push_credentials/{push_credential_id}` ```ruby result = client.mobile_push_credentials.delete("0ccc7b76-4df3-4bca-a05a-3da1ecc389f0") puts(result) ``` ## List all credentials Returns a paginated list of the on-demand telephony credentials on your account, with support for filtering. `GET /telephony_credentials` ```ruby page = client.telephony_credentials.list puts(page) ``` Returns: `created_at` (string), `expired` (boolean), `expires_at` (string), `id` (string), `name` (string), `record_type` (string), `resource_id` (string), `sip_password` (string), `sip_username` (string), `updated_at` (string), `user_id` (string) ## Create a credential Creates a new on-demand telephony credential for the specified connection. The credential can then be used to generate access tokens for SIP or WebRTC clients. `POST /telephony_credentials` — Required: `connection_id` Optional: `expires_at` (string), `name` (string), `tag` (string) ```ruby telephony_credential = client.telephony_credentials.create(connection_id: "1234567890") puts(telephony_credential) ``` Returns: `created_at` (string), `expired` (boolean), `expires_at` (string), `id` (string), `name` (string), `record_type` (string), `resource_id` (string), `sip_password` (string), `sip_username` (string), `updated_at` (string), `user_id` (string) ## Get a credential Get the details of an existing On-demand Credential. `GET /telephony_credentials/{id}` ```ruby telephony_credential = client.telephony_credentials.retrieve("550e8400-e29b-41d4-a716-446655440000") puts(telephony_credential) ``` Returns: `created_at` (string), `expired` (boolean), `expires_at` (string), `id` (string), `name` (string), `record_type` (string), `resource_id` (string), `sip_password` (string), `sip_username` (string), `updated_at` (string), `user_id` (string) ## Update a credential Updates the specified telephony credential and returns the updated credential. `PATCH /telephony_credentials/{id}` Optional: `connection_id` (string), `expires_at` (string), `name` (string), `tag` (string) ```ruby telephony_credential = client.telephony_credentials.update("550e8400-e29b-41d4-a716-446655440000") puts(telephony_credential) ``` Returns: `created_at` (string), `expired` (boolean), `expires_at` (string), `id` (string), `name` (string), `record_type` (string), `resource_id` (string), `sip_password` (string), `sip_username` (string), `updated_at` (string), `user_id` (string) ## Delete a credential Permanently deletes the specified telephony credential, revoking any access it provided. `DELETE /telephony_credentials/{id}` ```ruby telephony_credential = client.telephony_credentials.delete("550e8400-e29b-41d4-a716-446655440000") puts(telephony_credential) ``` Returns: `created_at` (string), `expired` (boolean), `expires_at` (string), `id` (string), `name` (string), `record_type` (string), `resource_id` (string), `sip_password` (string), `sip_username` (string), `updated_at` (string), `user_id` (string)