--- 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-ext-skills-generator --- # 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 ) ``` 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" rescue Telnyx::Errors::RateLimitError # 429: rate limited — wait and retry with exponential backoff sleep(1) # Check Retry-After header for actual delay 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 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 `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 `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 List all On-demand Credentials. `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 Create a credential. `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 Update an existing 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 Delete an existing credential. `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)