{"id":"492cdeaf-9f8b-492b-8812-dcd498ceeb82","shortId":"pjpE8L","kind":"skill","title":"telnyx-voice-conferencing-ruby","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Voice Conferencing - Ruby\n\n## Installation\n\n```bash\ngem install telnyx\n```\n\n## Setup\n\n```ruby\nrequire \"telnyx\"\n\nclient = Telnyx::Client.new(\n  api_key: ENV[\"TELNYX_API_KEY\"], # This is the default and can be omitted\n)\n```\n\nAll examples below assume `client` is already initialized as shown above.\n\n## Error Handling\n\nAll API calls can fail with network errors, rate limits (429), validation errors (422),\nor authentication errors (401). Always handle errors in production code:\n\n```ruby\nbegin\n  result = client.messages.send_(to: \"+13125550001\", from: \"+13125550002\", text: \"Hello\")\nrescue Telnyx::Errors::APIConnectionError\n  puts \"Network error — check connectivity and retry\"\nrescue Telnyx::Errors::RateLimitError\n  # 429: rate limited — wait and retry with exponential backoff\n  sleep(1) # Check Retry-After header for actual delay\nrescue Telnyx::Errors::APIStatusError => e\n  puts \"API error #{e.status}: #{e.message}\"\n  if e.status == 422\n    puts \"Validation error — check required fields and formats\"\n  end\nend\n```\n\nCommon error codes: `401` invalid API key, `403` insufficient permissions,\n`404` resource not found, `422` validation error (check field formats),\n`429` rate limited (retry with exponential backoff).\n\n## Important Notes\n\n- **Pagination:** Use `.auto_paging_each` for automatic iteration: `page.auto_paging_each { |item| puts item.id }`.\n\n## Enqueue call\n\nPut the call in a queue.\n\n`POST /calls/{call_control_id}/actions/enqueue` — Required: `queue_name`\n\nOptional: `client_state` (string), `command_id` (string), `keep_after_hangup` (boolean), `max_size` (integer), `max_wait_time_secs` (integer)\n\n```ruby\nresponse = client.calls.actions.enqueue(\"call_control_id\", queue_name: \"support\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Remove call from a queue\n\nRemoves the call from a queue.\n\n`POST /calls/{call_control_id}/actions/leave_queue`\n\nOptional: `client_state` (string), `command_id` (string)\n\n```ruby\nresponse = client.calls.actions.leave_queue(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## List conferences\n\nLists conferences. Conferences are created on demand, and will expire after all participants have left the conference or after 4 hours regardless of the number of active participants. Conferences are listed in descending order by `expires_at`.\n\n`GET /conferences`\n\n```ruby\npage = client.conferences.list\n\nputs(page)\n```\n\nReturns: `connection_id` (string), `created_at` (string), `end_reason` (enum: all_left, ended_via_api, host_left, time_exceeded), `ended_by` (object), `expires_at` (string), `id` (string), `name` (string), `record_type` (enum: conference), `region` (string), `status` (enum: init, in_progress, completed), `updated_at` (string)\n\n## Create conference\n\nCreate a conference from an existing call leg using a `call_control_id` and a conference name. Upon creating the conference, the call will be automatically bridged to the conference. Conferences will expire after all participants have left the conference or after 4 hours regardless of the number of active participants.\n\n`POST /conferences` — Required: `call_control_id`, `name`\n\nOptional: `beep_enabled` (enum: always, never, on_enter, on_exit), `client_state` (string), `comfort_noise` (boolean), `command_id` (string), `duration_minutes` (integer), `hold_audio_url` (string), `hold_media_name` (string), `max_participants` (integer), `region` (enum: Australia, Europe, Middle East, US), `start_conference_on_create` (boolean)\n\n```ruby\nconference = client.conferences.create(\n  call_control_id: \"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg\",\n  name: \"Business\"\n)\n\nputs(conference)\n```\n\nReturns: `connection_id` (string), `created_at` (string), `end_reason` (enum: all_left, ended_via_api, host_left, time_exceeded), `ended_by` (object), `expires_at` (string), `id` (string), `name` (string), `record_type` (enum: conference), `region` (string), `status` (enum: init, in_progress, completed), `updated_at` (string)\n\n## List conference participants\n\nLists conference participants\n\n`GET /conferences/{conference_id}/participants`\n\n```ruby\npage = client.conferences.list_participants(\"550e8400-e29b-41d4-a716-446655440000\")\n\nputs(page)\n```\n\nReturns: `call_control_id` (string), `call_leg_id` (string), `conference` (object), `created_at` (string), `end_conference_on_exit` (boolean), `id` (string), `muted` (boolean), `on_hold` (boolean), `record_type` (enum: participant), `soft_end_conference_on_exit` (boolean), `status` (enum: joining, joined, left), `updated_at` (string), `whisper_call_control_ids` (array[string])\n\n## Retrieve a conference\n\nRetrieve an existing conference\n\n`GET /conferences/{id}`\n\n```ruby\nconference = client.conferences.retrieve(\"550e8400-e29b-41d4-a716-446655440000\")\n\nputs(conference)\n```\n\nReturns: `connection_id` (string), `created_at` (string), `end_reason` (enum: all_left, ended_via_api, host_left, time_exceeded), `ended_by` (object), `expires_at` (string), `id` (string), `name` (string), `record_type` (enum: conference), `region` (string), `status` (enum: init, in_progress, completed), `updated_at` (string)\n\n## End a conference\n\nEnd a conference and terminate all active participants.\n\n`POST /conferences/{id}/actions/end`\n\nOptional: `command_id` (string)\n\n```ruby\nresponse = client.conferences.actions.end_conference(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Gather DTMF using audio prompt in a conference\n\nPlay an audio file to a specific conference participant and gather DTMF input.\n\n`POST /conferences/{id}/actions/gather_using_audio` — Required: `call_control_id`\n\nOptional: `audio_url` (string), `client_state` (string), `gather_id` (string), `initial_timeout_millis` (integer), `inter_digit_timeout_millis` (integer), `invalid_audio_url` (string), `invalid_media_name` (string), `maximum_digits` (integer), `maximum_tries` (integer), `media_name` (string), `minimum_digits` (integer), `stop_playback_on_dtmf` (boolean), `terminating_digit` (string), `timeout_millis` (integer), `valid_digits` (string)\n\n```ruby\nresponse = client.conferences.actions.gather_dtmf_audio(\n  \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n  call_control_id: \"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg\"\n)\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Hold conference participants\n\nHold a list of participants in a conference call\n\n`POST /conferences/{id}/actions/hold`\n\nOptional: `audio_url` (string), `call_control_ids` (array[string]), `media_name` (string), `region` (enum: Australia, Europe, Middle East, US)\n\n```ruby\nresponse = client.conferences.actions.hold(\"550e8400-e29b-41d4-a716-446655440000\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Join a conference\n\nJoin an existing call leg to a conference. Issue the Join Conference command with the conference ID in the path and the `call_control_id` of the leg you wish to join to the conference as an attribute. The conference can have up to a certain amount of active participants, as set by the `max_participants` parameter in conference creation request.\n\n`POST /conferences/{id}/actions/join` — Required: `call_control_id`\n\nOptional: `beep_enabled` (enum: always, never, on_enter, on_exit), `client_state` (string), `command_id` (string), `end_conference_on_exit` (boolean), `hold` (boolean), `hold_audio_url` (string), `hold_media_name` (string), `mute` (boolean), `region` (enum: Australia, Europe, Middle East, US), `soft_end_conference_on_exit` (boolean), `start_conference_on_enter` (boolean), `supervisor_role` (enum: barge, monitor, none, whisper), `whisper_call_control_ids` (array[string])\n\n```ruby\nresponse = client.conferences.actions.join(\n  \"id\",\n  call_control_id: \"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg\"\n)\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Leave a conference\n\nRemoves a call leg from a conference and moves it back to parked state. **Expected Webhooks:**\n\n- `conference.participant.left`\n\n`POST /conferences/{id}/actions/leave` — Required: `call_control_id`\n\nOptional: `beep_enabled` (enum: always, never, on_enter, on_exit), `command_id` (string), `region` (enum: Australia, Europe, Middle East, US)\n\n```ruby\nresponse = client.conferences.actions.leave(\"id\", call_control_id: \"c46e06d7-b78f-4b13-96b6-c576af9640ff\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Mute conference participants\n\nMute a list of participants in a conference call\n\n`POST /conferences/{id}/actions/mute`\n\nOptional: `call_control_ids` (array[string]), `region` (enum: Australia, Europe, Middle East, US)\n\n```ruby\nresponse = client.conferences.actions.mute(\"550e8400-e29b-41d4-a716-446655440000\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Play audio to conference participants\n\nPlay audio to all or some participants on a conference call.\n\n`POST /conferences/{id}/actions/play`\n\nOptional: `audio_url` (string), `call_control_ids` (array[string]), `loop` (string), `media_name` (string), `region` (enum: Australia, Europe, Middle East, US)\n\n```ruby\nresponse = client.conferences.actions.play(\"550e8400-e29b-41d4-a716-446655440000\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Conference recording pause\n\nPause conference recording.\n\n`POST /conferences/{id}/actions/record_pause`\n\nOptional: `command_id` (string), `recording_id` (string), `region` (enum: Australia, Europe, Middle East, US)\n\n```ruby\nresponse = client.conferences.actions.record_pause(\"550e8400-e29b-41d4-a716-446655440000\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Conference recording resume\n\nResume conference recording.\n\n`POST /conferences/{id}/actions/record_resume`\n\nOptional: `command_id` (string), `recording_id` (string), `region` (enum: Australia, Europe, Middle East, US)\n\n```ruby\nresponse = client.conferences.actions.record_resume(\"550e8400-e29b-41d4-a716-446655440000\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Conference recording start\n\nStart recording the conference. Recording will stop on conference end, or via the Stop Recording command. **Expected Webhooks:**\n\n- `conference.recording.saved`\n\n`POST /conferences/{id}/actions/record_start` — Required: `format`\n\nOptional: `channels` (enum: single, dual), `command_id` (string), `custom_file_name` (string), `play_beep` (boolean), `region` (enum: Australia, Europe, Middle East, US), `trim` (enum: trim-silence)\n\n```ruby\nresponse = client.conferences.actions.record_start(\"id\", format_: :wav)\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Conference recording stop\n\nStop recording the conference. **Expected Webhooks:**\n\n- `conference.recording.saved`\n\n`POST /conferences/{id}/actions/record_stop`\n\nOptional: `client_state` (string), `command_id` (string), `recording_id` (uuid), `region` (enum: Australia, Europe, Middle East, US)\n\n```ruby\nresponse = client.conferences.actions.record_stop(\"550e8400-e29b-41d4-a716-446655440000\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Send DTMF to conference participants\n\nSend DTMF tones to one or more conference participants.\n\n`POST /conferences/{id}/actions/send_dtmf` — Required: `digits`\n\nOptional: `call_control_ids` (array[string]), `client_state` (string), `duration_millis` (integer)\n\n```ruby\nresponse = client.conferences.actions.send_dtmf(\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\", digits: \"1234#\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Speak text to conference participants\n\nConvert text to speech and play it to all or some participants.\n\n`POST /conferences/{id}/actions/speak` — Required: `payload`, `voice`\n\nOptional: `call_control_ids` (array[string]), `command_id` (string), `language` (enum: arb, cmn-CN, cy-GB, da-DK, de-DE, en-AU, en-GB, en-GB-WLS, en-IN, en-US, es-ES, es-MX, es-US, fr-CA, fr-FR, hi-IN, is-IS, it-IT, ja-JP, ko-KR, nb-NO, nl-NL, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sv-SE, tr-TR), `payload_type` (enum: text, ssml), `region` (enum: Australia, Europe, Middle East, US), `voice_settings` (object)\n\n```ruby\nresponse = client.conferences.actions.speak(\"id\", payload: \"Say this to participants\", voice: \"female\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Stop audio being played on the conference\n\nStop audio being played to all or some participants on a conference call.\n\n`POST /conferences/{id}/actions/stop`\n\nOptional: `call_control_ids` (array[string]), `region` (enum: Australia, Europe, Middle East, US)\n\n```ruby\nresponse = client.conferences.actions.stop(\"550e8400-e29b-41d4-a716-446655440000\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Unhold conference participants\n\nUnhold a list of participants in a conference call\n\n`POST /conferences/{id}/actions/unhold` — Required: `call_control_ids`\n\nOptional: `region` (enum: Australia, Europe, Middle East, US)\n\n```ruby\nresponse = client.conferences.actions.unhold(\n  \"id\",\n  call_control_ids: [\"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg\"]\n)\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Unmute conference participants\n\nUnmute a list of participants in a conference call\n\n`POST /conferences/{id}/actions/unmute`\n\nOptional: `call_control_ids` (array[string]), `region` (enum: Australia, Europe, Middle East, US)\n\n```ruby\nresponse = client.conferences.actions.unmute(\"550e8400-e29b-41d4-a716-446655440000\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Update conference participant\n\nUpdate conference participant supervisor_role\n\n`POST /conferences/{id}/actions/update` — Required: `call_control_id`, `supervisor_role`\n\nOptional: `command_id` (string), `region` (enum: Australia, Europe, Middle East, US), `whisper_call_control_ids` (array[string])\n\n```ruby\naction = client.conferences.actions.update(\n  \"id\",\n  call_control_id: \"v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg\",\n  supervisor_role: :whisper\n)\n\nputs(action)\n```\n\nReturns: `result` (string)\n\n## Retrieve a conference participant\n\nRetrieve details of a specific conference participant by their ID or label.\n\n`GET /conferences/{id}/participants/{participant_id}`\n\n```ruby\nresponse = client.conferences.retrieve_participant(\"participant_id\", id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\nReturns: `call_control_id` (string), `call_leg_id` (string), `conference_id` (string), `created_at` (date-time), `end_conference_on_exit` (boolean), `id` (string), `label` (string), `muted` (boolean), `on_hold` (boolean), `soft_end_conference_on_exit` (boolean), `status` (enum: joining, joined, left), `updated_at` (date-time), `whisper_call_control_ids` (array[string])\n\n## Update a conference participant\n\nUpdate properties of a conference participant.\n\n`PATCH /conferences/{id}/participants/{participant_id}`\n\nOptional: `beep_enabled` (enum: always, never, on_enter, on_exit), `end_conference_on_exit` (boolean), `soft_end_conference_on_exit` (boolean)\n\n```ruby\nresponse = client.conferences.update_participant(\"participant_id\", id: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\nputs(response)\n```\n\nReturns: `call_control_id` (string), `call_leg_id` (string), `conference_id` (string), `created_at` (date-time), `end_conference_on_exit` (boolean), `id` (string), `label` (string), `muted` (boolean), `on_hold` (boolean), `soft_end_conference_on_exit` (boolean), `status` (enum: joining, joined, left), `updated_at` (date-time), `whisper_call_control_ids` (array[string])\n\n## List queues\n\nList all queues for the authenticated user.\n\n`GET /queues`\n\n```ruby\npage = client.queues.list\n\nputs(page)\n```\n\nReturns: `average_wait_time_secs` (integer), `created_at` (string), `current_size` (integer), `id` (string), `max_size` (integer), `name` (string), `record_type` (enum: queue), `updated_at` (string)\n\n## Create a queue\n\nCreate a new call queue.\n\n`POST /queues` — Required: `queue_name`\n\nOptional: `max_size` (integer)\n\n```ruby\nqueue = client.queues.create(queue_name: \"tier_1_support\")\n\nputs(queue)\n```\n\nReturns: `average_wait_time_secs` (integer), `created_at` (string), `current_size` (integer), `id` (string), `max_size` (integer), `name` (string), `record_type` (enum: queue), `updated_at` (string)\n\n## Retrieve a call queue\n\nRetrieve an existing call queue\n\n`GET /queues/{queue_name}`\n\n```ruby\nqueue = client.queues.retrieve(\"queue_name\")\n\nputs(queue)\n```\n\nReturns: `average_wait_time_secs` (integer), `created_at` (string), `current_size` (integer), `id` (string), `max_size` (integer), `name` (string), `record_type` (enum: queue), `updated_at` (string)\n\n## Update a queue\n\nUpdate properties of an existing call queue.\n\n`POST /queues/{queue_name}` — Required: `max_size`\n\n```ruby\nqueue = client.queues.update(\"queue_name\", max_size: 200)\n\nputs(queue)\n```\n\nReturns: `average_wait_time_secs` (integer), `created_at` (string), `current_size` (integer), `id` (string), `max_size` (integer), `name` (string), `record_type` (enum: queue), `updated_at` (string)\n\n## Delete a queue\n\nDelete an existing call queue.\n\n`DELETE /queues/{queue_name}`\n\n```ruby\nresult = client.queues.delete(\"queue_name\")\n\nputs(result)\n```\n\n## Retrieve calls from a queue\n\nRetrieve the list of calls in an existing queue\n\n`GET /queues/{queue_name}/calls`\n\n```ruby\npage = client.queues.calls.list(\"queue_name\")\n\nputs(page)\n```\n\nReturns: `call_control_id` (string), `call_leg_id` (string), `call_session_id` (string), `connection_id` (string), `enqueued_at` (string), `from` (string), `is_alive` (boolean), `queue_id` (string), `queue_position` (integer), `record_type` (enum: queue_call), `to` (string), `wait_time_secs` (integer)\n\n## Retrieve a call from a queue\n\nRetrieve an existing call from an existing queue\n\n`GET /queues/{queue_name}/calls/{call_control_id}`\n\n```ruby\ncall = client.queues.calls.retrieve(\"call_control_id\", queue_name: \"my-queue\")\n\nputs(call)\n```\n\nReturns: `call_control_id` (string), `call_leg_id` (string), `call_session_id` (string), `connection_id` (string), `enqueued_at` (string), `from` (string), `is_alive` (boolean), `queue_id` (string), `queue_position` (integer), `record_type` (enum: queue_call), `to` (string), `wait_time_secs` (integer)\n\n## Update queued call\n\nUpdate queued call's keep_after_hangup flag\n\n`PATCH /queues/{queue_name}/calls/{call_control_id}`\n\nOptional: `keep_after_hangup` (boolean)\n\n```ruby\nresult = client.queues.calls.update(\"call_control_id\", queue_name: \"my-queue\")\n\nputs(result)\n```\n\n## Force remove a call from a queue\n\nRemoves an inactive call from a queue. If the call is no longer active, use this command to remove it from the queue.\n\n`DELETE /queues/{queue_name}/calls/{call_control_id}`\n\n```ruby\nresult = client.queues.calls.remove(\"call_control_id\", queue_name: \"my-queue\")\n\nputs(result)\n```\n\n---\n\n## Webhooks\n\n### Webhook Verification\n\nTelnyx signs webhooks with Ed25519. Each request includes `telnyx-signature-ed25519`\nand `telnyx-timestamp` headers. Always verify signatures in production:\n\n```ruby\n# In your webhook handler (e.g., Sinatra — use raw body):\npost \"/webhooks\" do\n  payload = request.body.read\n  headers = {\n    \"telnyx-signature-ed25519\" => request.env[\"HTTP_TELNYX_SIGNATURE_ED25519\"],\n    \"telnyx-timestamp\" => request.env[\"HTTP_TELNYX_TIMESTAMP\"],\n  }\n  begin\n    event = client.webhooks.unwrap(payload, headers)\n  rescue => e\n    halt 400, \"Invalid signature: #{e.message}\"\n  end\n  # Signature valid — event is the parsed webhook payload\n  puts \"Received event: #{event.data.event_type}\"\n  status 200\nend\n```\n\nThe following webhook events are sent to your configured webhook URL.\nAll webhooks include `telnyx-timestamp` and `telnyx-signature-ed25519` headers for Ed25519 signature verification. Use `client.webhooks.unwrap()` to verify.\n\n| Event | Description |\n|-------|-------------|\n| `callEnqueued` | Call Enqueued |\n| `callLeftQueue` | Call Left Queue |\n| `conferenceCreated` | Conference Created |\n| `conferenceEnded` | Conference Ended |\n| `conferenceFloorChanged` | Conference Floor Changed |\n| `conferenceParticipantJoined` | Conference Participant Joined |\n| `conferenceParticipantLeft` | Conference Participant Left |\n| `conferenceParticipantPlaybackEnded` | Conference Participant Playback Ended |\n| `conferenceParticipantPlaybackStarted` | Conference Participant Playback Started |\n| `conferenceParticipantSpeakEnded` | Conference Participant Speak Ended |\n| `conferenceParticipantSpeakStarted` | Conference Participant Speak Started |\n| `conferencePlaybackEnded` | Conference Playback Ended |\n| `conferencePlaybackStarted` | Conference Playback Started |\n| `conferenceRecordingSaved` | Conference Recording Saved |\n| `conferenceSpeakEnded` | Conference Speak Ended |\n| `conferenceSpeakStarted` | Conference Speak Started |\n\n### Webhook payload fields\n\n**`callEnqueued`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.enqueued | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.queue` | string | The name of the queue |\n| `data.payload.current_position` | integer | Current position of the call in the queue. |\n| `data.payload.queue_avg_wait_time_secs` | integer | Average time call spends in the queue in seconds. |\n\n**`callLeftQueue`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.dequeued | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.queue` | string | The name of the queue |\n| `data.payload.queue_position` | integer | Last position of the call in the queue. |\n| `data.payload.reason` | enum: bridged, bridging-in-process, hangup, leave, timeout | The reason for leaving the queue |\n| `data.payload.wait_time_secs` | integer | Time call spent in the queue in seconds. |\n\n**`conferenceCreated`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.created | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.conference_id` | string | Conference ID that the participant joined. |\n| `data.payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n\n**`conferenceEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.ended | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.conference_id` | string | Conference ID that the participant joined. |\n| `data.payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.reason` | enum: all_left, host_left, time_exceeded | Reason the conference ended. |\n\n**`conferenceFloorChanged`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `record_type` | enum: event | Identifies the type of the resource. |\n| `event_type` | enum: conference.floor.changed | The type of event being delivered. |\n| `id` | uuid | Identifies the type of resource. |\n| `payload.call_control_id` | string | Call Control ID of the new speaker. |\n| `payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `payload.call_leg_id` | string | Call Leg ID of the new speaker. |\n| `payload.call_session_id` | string | Call Session ID of the new speaker. |\n| `payload.client_state` | string | State received from a command. |\n| `payload.conference_id` | string | Conference ID that had a speaker change event. |\n| `payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n\n**`conferenceParticipantJoined`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.participant.joined | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.conference_id` | string | Conference ID that the participant joined. |\n\n**`conferenceParticipantLeft`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.participant.left | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.payload.call_control_id` | string | Call ID used to issue commands via Call Control API. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.conference_id` | string | Conference ID that the participant joined. |\n\n**`conferenceParticipantPlaybackEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.participant.playback.ended | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.call_control_id` | string | Participant's call ID used to issue commands via Call Control API. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.creator_call_session_id` | string | ID that is unique to the call session that started the conference. |\n| `data.payload.conference_id` | string | ID of the conference the text was spoken in. |\n| `data.payload.media_url` | string | The audio URL being played back, if audio_url has been used to start. |\n| `data.payload.media_name` | string | The name of the audio media file being played back, if media_name has been used to start. |\n| `data.payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n\n**`conferenceParticipantPlaybackStarted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.participant.playback.started | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.call_control_id` | string | Participant's call ID used to issue commands via Call Control API. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.creator_call_session_id` | string | ID that is unique to the call session that started the conference. |\n| `data.payload.conference_id` | string | ID of the conference the text was spoken in. |\n| `data.payload.media_url` | string | The audio URL being played back, if audio_url has been used to start. |\n| `data.payload.media_name` | string | The name of the audio media file being played back, if media_name has been used to start. |\n| `data.payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n\n**`conferenceParticipantSpeakEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.participant.speak.ended | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.call_control_id` | string | Participant's call ID used to issue commands via Call Control API. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.creator_call_session_id` | string | ID that is unique to the call session that started the conference. |\n| `data.payload.conference_id` | string | ID of the conference the text was spoken in. |\n| `data.payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n\n**`conferenceParticipantSpeakStarted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.participant.speak.started | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.call_control_id` | string | Participant's call ID used to issue commands via Call Control API. |\n| `data.payload.call_leg_id` | string | ID that is unique to the call and can be used to correlate webhook events. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.creator_call_session_id` | string | ID that is unique to the call session that started the conference. |\n| `data.payload.conference_id` | string | ID of the conference the text was spoken in. |\n| `data.payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n\n**`conferencePlaybackEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.playback.ended | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.creator_call_session_id` | string | ID that is unique to the call session that started the conference. |\n| `data.payload.conference_id` | string | ID of the conference the text was spoken in. |\n| `data.payload.media_url` | string | The audio URL being played back, if audio_url has been used to start. |\n| `data.payload.media_name` | string | The name of the audio media file being played back, if media_name has been used to start. |\n| `data.payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n\n**`conferencePlaybackStarted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.playback.started | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.creator_call_session_id` | string | ID that is unique to the call session that started the conference. |\n| `data.payload.conference_id` | string | ID of the conference the text was spoken in. |\n| `data.payload.media_url` | string | The audio URL being played back, if audio_url has been used to start. |\n| `data.payload.media_name` | string | The name of the audio media file being played back, if media_name has been used to start. |\n| `data.payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n\n**`conferenceRecordingSaved`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.recording.saved | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.call_control_id` | string | Participant's call ID used to issue commands via Call Control API. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session and can be used to correlate webhook events. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.channels` | enum: single, dual | Whether recording was recorded in `single` or `dual` channel. |\n| `data.payload.conference_id` | uuid | ID of the conference that is being recorded. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.format` | enum: wav, mp3 | The audio file format used when storing the call recording. |\n| `data.payload.recording_ended_at` | date-time | ISO 8601 datetime of when recording ended. |\n| `data.payload.recording_id` | uuid | ID of the conference recording. |\n| `data.payload.recording_started_at` | date-time | ISO 8601 datetime of when recording started. |\n\n**`conferenceSpeakEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.speak.ended | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.creator_call_session_id` | string | ID that is unique to the call session that started the conference. |\n| `data.payload.conference_id` | string | ID of the conference the text was spoken in. |\n| `data.payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n\n**`conferenceSpeakStarted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: conference.speak.started | The type of event being delivered. |\n| `data.id` | uuid | Identifies the type of resource. |\n| `data.payload.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.creator_call_session_id` | string | ID that is unique to the call session that started the conference. |\n| `data.payload.conference_id` | string | ID of the conference the text was spoken in. |\n| `data.payload.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |","tags":["telnyx","voice","conferencing","ruby","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm"],"capabilities":["skill","source-team-telnyx","skill-telnyx-voice-conferencing-ruby","topic-agent-skills","topic-ai-coding-agent","topic-claude-code","topic-cpaas","topic-cursor","topic-iot","topic-llm","topic-sdk","topic-sip","topic-sms","topic-speech-to-text","topic-telephony"],"categories":["ai"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/team-telnyx/ai/telnyx-voice-conferencing-ruby","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add team-telnyx/ai","source_repo":"https://github.com/team-telnyx/ai","install_from":"skills.sh"}},"qualityScore":"0.533","qualityRationale":"deterministic score 0.53 from registry signals: · indexed on github topic:agent-skills · 167 github stars · SKILL.md body (38,102 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:54:52.077Z","embedding":null,"createdAt":"2026-04-18T22:08:22.223Z","updatedAt":"2026-04-22T00:54:52.077Z","lastSeenAt":"2026-04-22T00:54:52.077Z","tsv":"'+13125550001':78 '+13125550002':80 '/actions/end':678 '/actions/enqueue':196 '/actions/gather_using_audio':722 '/actions/hold':817 '/actions/join':918 '/actions/leave':1025 '/actions/leave_queue':249 '/actions/mute':1083 '/actions/play':1130 '/actions/record_pause':1175 '/actions/record_resume':1214 '/actions/record_start':1269 '/actions/record_stop':1324 '/actions/send_dtmf':1374 '/actions/speak':1426 '/actions/stop':1581 '/actions/unhold':1624 '/actions/unmute':1667 '/actions/update':1706 '/calls':192,245,2174,2241,2314,2370 '/conferences':314,418,533,607,676,720,815,916,1023,1081,1128,1173,1212,1267,1322,1372,1424,1579,1622,1665,1704,1765,1849 '/participants':536,1767,1851 '/queues':1953,1994,2048,2095,2146,2171,2238,2311,2367 '/webhooks':2423 '1':108,2008 '1234':1400 '182bd5e5':688,786,1394,1778,1883 '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e':687,785,1393,1777,1882 '200':2108,2471 '4':295,408 '400':2452 '401':66,143 '403':147 '404':150 '41d4':265,544,615,843,1103,1158,1197,1236,1349,1601,1687 '422':62,129,154 '429':59,98,160 '446655440000':267,546,617,845,1105,1160,1199,1238,1351,1603,1689 '4b13':1060 '4fe4':690,788,1396,1780,1885 '550e8400':262,541,612,840,1100,1155,1194,1233,1346,1598,1684 '6e1a':689,787,1395,1779,1884 '8601':2611,2764,3015,3144,3267,3311,3440,3714,3903,4054,4205,4331,4457,4599,4620,4707,4795 '96b6':1061 'a716':266,545,616,844,1104,1159,1198,1237,1350,1602,1688 'a799':691,789,1397,1781,1886 'aa6d9a6ab26e':692,790,1398,1782,1887 'action':1731,1744 'activ':302,415,673,902,2356 'actual':115 'aliv':2204,2280 'alreadi':42 'alway':67,428,927,1034,1858,2407 'amount':900 'api':22,26,50,123,145,334,496,634,2631,2784,2937,3066,3331,3460,3578,3767,3956,4107,4510 'apiconnectionerror':86 'apistatuserror':120 'app':2637,2790,2943,3072,3210,3337,3466,3631,3820,4009,4160,4248,4374,4568,4662,4750 'arb':1441 'array':597,825,985,1088,1138,1381,1434,1586,1672,1728,1836,1941 'assum':39 'attribut':891 'au':1456 'audio':447,701,708,728,747,784,819,947,1112,1117,1132,1559,1566,3674,3680,3694,3863,3869,3883,4291,4297,4311,4417,4423,4437,4583 'australia':459,832,958,1045,1092,1147,1185,1224,1289,1337,1534,1590,1632,1676,1719 'authent':64,1950 'auto':171 'automat':175,391 'averag':1960,2013,2059,2112,2718 'avg':2713 'b78f':1059 'back':1015,3678,3699,3867,3888,4295,4316,4421,4442 'backoff':106,166 'barg':977 'bash':11 'beep':425,924,1031,1285,1855 'begin':74,2444 'bodi':2421 'boolean':210,439,468,567,571,574,584,770,943,945,955,968,973,1286,1806,1812,1815,1821,1868,1874,1911,1917,1920,1926,2205,2281,2322 'br':1511 'bridg':392,2867,2869 'bridging-in-process':2868 'busi':479 'c46e06d7':1058 'c46e06d7-b78f-4b13-96b6-c576af9640ff':1057 'c576af9640ff':1062 'ca':1481 'call':51,184,187,193,222,234,240,246,372,376,388,420,472,550,554,594,724,791,813,822,857,876,920,982,991,1007,1027,1054,1079,1085,1126,1135,1378,1431,1577,1583,1620,1626,1641,1663,1669,1708,1725,1734,1786,1790,1833,1891,1895,1938,1991,2040,2045,2092,2143,2157,2165,2183,2187,2191,2216,2225,2232,2242,2246,2248,2257,2259,2263,2267,2292,2301,2304,2315,2326,2339,2346,2352,2371,2377,2507,2510,2622,2629,2635,2646,2657,2676,2708,2720,2775,2782,2788,2799,2810,2829,2861,2886,2928,2935,2941,2952,2963,2982,3057,3064,3070,3081,3092,3111,3198,3208,3219,3224,3235,3322,3329,3335,3346,3357,3376,3451,3458,3464,3475,3486,3505,3569,3576,3589,3608,3629,3640,3642,3652,3758,3765,3778,3797,3818,3829,3831,3841,3947,3954,3967,3986,4007,4018,4020,4030,4098,4105,4118,4137,4158,4169,4171,4181,4246,4257,4259,4269,4372,4383,4385,4395,4501,4508,4521,4566,4577,4590,4660,4671,4673,4683,4748,4759,4761,4771 'call.dequeued':2744 'call.enqueued':2591 'callenqueu':2506,2574 'callleftqueu':2509,2727 'certain':899 'chang':2522,3259 'channel':1273,4551 'check':90,109,133,157 'client':19,40,201,251,434,731,933,1326,1383 'client.calls.actions.enqueue':221 'client.calls.actions.leave':259 'client.conferences.actions.end':685 'client.conferences.actions.gather':782 'client.conferences.actions.hold':839 'client.conferences.actions.join':989 'client.conferences.actions.leave':1052 'client.conferences.actions.mute':1099 'client.conferences.actions.play':1154 'client.conferences.actions.record':1192,1231,1301,1344 'client.conferences.actions.send':1391 'client.conferences.actions.speak':1544 'client.conferences.actions.stop':1597 'client.conferences.actions.unhold':1639 'client.conferences.actions.unmute':1683 'client.conferences.actions.update':1732 'client.conferences.create':471 'client.conferences.list':317,539 'client.conferences.retrieve':611,1772 'client.conferences.update':1877 'client.messages.send':76 'client.new':21 'client.queues.calls.list':2177 'client.queues.calls.remove':2376 'client.queues.calls.retrieve':2247 'client.queues.calls.update':2325 'client.queues.create':2004 'client.queues.delete':2151 'client.queues.list':1956 'client.queues.retrieve':2053 'client.queues.update':2103 'client.webhooks.unwrap':2446,2501 'cmn':1443 'cmn-cn':1442 'cn':1444 'code':72,142 'comfort':437 'command':204,254,440,680,866,936,1040,1177,1216,1262,1277,1329,1436,1714,2359,2627,2693,2780,2846,2933,2999,3062,3128,3249,3327,3393,3456,3522,3574,3625,3763,3814,3952,4003,4103,4154,4506,4538 'common':140 'complet':360,522,660 'confer':275,277,278,292,304,352,365,368,381,386,395,396,405,465,470,481,514,527,530,534,558,564,581,601,605,610,619,652,666,669,686,705,713,803,812,853,861,865,869,888,893,912,940,965,970,1004,1011,1069,1078,1114,1125,1166,1170,1205,1209,1244,1250,1255,1311,1317,1360,1369,1409,1564,1576,1610,1619,1653,1662,1696,1699,1750,1757,1794,1803,1818,1840,1846,1865,1871,1899,1908,1923,2514,2517,2520,2524,2528,2532,2537,2542,2547,2552,2556,2560,2564,2568,3003,3132,3161,3253,3397,3526,3657,3664,3846,3853,4035,4042,4186,4193,4274,4281,4400,4407,4558,4611,4688,4695,4776,4783 'conferenc':4,8 'conference.created':2910 'conference.ended':3039 'conference.floor.changed':3180 'conference.participant.joined':3291 'conference.participant.left':1021,3420 'conference.participant.playback.ended':3549 'conference.participant.playback.started':3738 'conference.participant.speak.ended':3927 'conference.participant.speak.started':4078 'conference.playback.ended':4229 'conference.playback.started':4355 'conference.recording.saved':1265,1320,4481 'conference.speak.ended':4643 'conference.speak.started':4731 'conferencecr':2513,2893 'conferenceend':2516,3022 'conferencefloorchang':2519,3163 'conferenceparticipantjoin':2523,3274 'conferenceparticipantleft':2527,3403 'conferenceparticipantplaybackend':2531,3532 'conferenceparticipantplaybackstart':2536,3721 'conferenceparticipantspeakend':2541,3910 'conferenceparticipantspeakstart':2546,4061 'conferenceplaybackend':2551,4212 'conferenceplaybackstart':2555,4338 'conferencerecordingsav':2559,4464 'conferencespeakend':2563,4626 'conferencespeakstart':2567,4714 'configur':2481 'connect':91,321,483,621,2195,2271,2641,2794,2947,3076,3214,3341,3470,3635,3824,4013,4164,4252,4378,4572,4666,4754 'control':194,223,247,377,421,473,551,595,725,792,823,877,921,983,992,1028,1055,1086,1136,1379,1432,1584,1627,1642,1670,1709,1726,1735,1787,1834,1892,1939,2184,2243,2249,2260,2316,2327,2372,2378,2619,2630,2636,2772,2783,2789,2925,2936,2942,3054,3065,3071,3195,3199,3209,3319,3330,3336,3448,3459,3465,3564,3577,3630,3753,3766,3819,3942,3955,4008,4093,4106,4159,4247,4373,4496,4509,4567,4661,4749 'convert':1411 'correl':2663,2683,2816,2836,2969,2989,3098,3118,3363,3383,3492,3512,3595,3615,3784,3804,3973,3993,4124,4144,4528 'creat':280,324,364,366,384,467,486,560,624,1797,1902,1965,1985,1988,2018,2064,2117,2515 'creation':913 'current':1968,2021,2067,2120,2704 'custom':1280 'cy':1446 'cy-gb':1445 'da':1449 'da-dk':1448 'data.event':2588,2741,2907,3036,3288,3417,3546,3735,3924,4075,4226,4352,4478,4640,4728 'data.id':2598,2751,2917,3046,3298,3427,3556,3745,3934,4085,4236,4362,4488,4650,4738 'data.occurred':2605,2758,3305,3434 'data.payload.call':2618,2647,2666,2771,2800,2819,2924,2953,2972,3053,3082,3101,3318,3347,3366,3447,3476,3495,3563,3579,3598,3752,3768,3787,3941,3957,3976,4092,4108,4127,4495,4511 'data.payload.channels':4539 'data.payload.client':2686,2839,2992,3121,3386,3515,3618,3807,3996,4147,4531 'data.payload.conference':3000,3129,3394,3523,3658,3847,4036,4187,4275,4401,4552,4689,4777 'data.payload.connection':2632,2785,2938,3067,3332,3461,3626,3815,4004,4155,4243,4369,4563,4657,4745 'data.payload.creator':3641,3830,4019,4170,4258,4384,4672,4760 'data.payload.current':2701 'data.payload.format':4578 'data.payload.media':3670,3687,3859,3876,4287,4304,4413,4430 'data.payload.occurred':3009,3138,3708,3897,4048,4199,4325,4451,4701,4789 'data.payload.queue':2694,2712,2847,2854 'data.payload.reason':2865,3151 'data.payload.recording':4592,4605,4613 'data.payload.wait':2881 'data.record':2578,2731,2897,3026,3278,3407,3536,3725,3914,4065,4216,4342,4468,4630,4718 'date':1800,1830,1905,1935,2608,2761,3012,3141,3264,3308,3437,3711,3900,4051,4202,4328,4454,4596,4617,4704,4792 'date-tim':1799,1829,1904,1934,2607,2760,3011,3140,3263,3307,3436,3710,3899,4050,4201,4327,4453,4595,4616,4703,4791 'datetim':2612,2765,3016,3145,3268,3312,3441,3715,3904,4055,4206,4332,4458,4600,4621,4708,4796 'de':1452,1453 'de-d':1451 'default':31 'delay':116 'delet':2137,2140,2145,2366 'deliv':2597,2750,2916,3045,3186,3297,3426,3555,3744,3933,4084,4235,4361,4487,4649,4737 'demand':282 'descend':308 'descript':2505,2577,2730,2896,3025,3166,3277,3406,3535,3724,3913,4064,4215,4341,4467,4629,4717 'detail':1753 'digit':742,755,764,772,778,1376,1399 'dk':1450 'dtmf':699,717,769,783,1358,1363,1392 'dual':1276,4542,4550 'durat':443,1386 'e':121,2450 'e.g':2417 'e.message':126,2455 'e.status':125,128 'e29b':264,543,614,842,1102,1157,1196,1235,1348,1600,1686 'e29b-41d4-a716':263,542,613,841,1101,1156,1195,1234,1347,1599,1685 'east':462,835,961,1048,1095,1150,1188,1227,1292,1340,1537,1593,1635,1679,1722 'ed25519':2394,2401,2431,2436,2494,2497 'en':1455,1458,1461,1465,1468 'en-au':1454 'en-gb':1457 'en-gb-wl':1460 'en-in':1464 'en-us':1467 'enabl':426,925,1032,1856 'end':138,139,327,332,339,489,494,501,563,580,627,632,639,664,667,939,964,1256,1802,1817,1864,1870,1907,1922,2456,2472,2518,2535,2545,2554,2566,3162,4593,4604 'enqueu':183,2198,2274,2508 'enter':431,930,972,1037,1861 'enum':329,351,356,427,458,491,513,518,577,586,629,651,656,831,926,957,976,1033,1044,1091,1146,1184,1223,1274,1288,1295,1336,1440,1529,1533,1589,1631,1675,1718,1823,1857,1928,1980,2033,2079,2132,2214,2290,2580,2590,2733,2743,2866,2899,2909,3028,3038,3152,3169,3179,3280,3290,3409,3419,3538,3548,3727,3737,3916,3926,4067,4077,4218,4228,4344,4354,4470,4480,4540,4579,4632,4642,4720,4730 'env':24 'error':47,56,61,65,69,85,89,96,119,124,132,141,156 'es':1471,1472,1474,1477 'es-':1470 'es-mx':1473 'es-us':1476 'europ':460,833,959,1046,1093,1148,1186,1225,1290,1338,1535,1591,1633,1677,1720 'event':2445,2459,2467,2476,2504,2581,2595,2616,2665,2685,2734,2748,2769,2818,2838,2900,2914,2971,2991,3020,3029,3043,3100,3120,3149,3170,3177,3184,3260,3272,3281,3295,3316,3365,3385,3410,3424,3445,3494,3514,3539,3553,3597,3617,3719,3728,3742,3786,3806,3908,3917,3931,3975,3995,4059,4068,4082,4126,4146,4210,4219,4233,4336,4345,4359,4462,4471,4485,4530,4633,4647,4712,4721,4735,4800 'event.data.event':2468 'exampl':37 'exceed':338,500,638,3158 'exist':371,604,856,2044,2091,2142,2168,2231,2235 'exit':433,566,583,932,942,967,1039,1805,1820,1863,1867,1873,1910,1925 'expect':1019,1263,1318 'expir':285,311,342,398,504,642 'exponenti':105,165 'fail':53 'femal':1552 'field':135,158,2573,2575,2728,2894,3023,3164,3275,3404,3533,3722,3911,4062,4213,4339,4465,4627,4715 'file':709,1281,3696,3885,4313,4439,4584 'flag':2309 'floor':2521 'follow':2474 'forc':2336 'format':137,159,1271,1304,4585 'former':2639,2792,2945,3074,3212,3339,3468,3633,3822,4011,4162,4250,4376,4570,4664,4752 'found':153 'fr':1480,1483,1484 'fr-ca':1479 'fr-fr':1482 'gather':698,716,734 'gb':1447,1459,1462 'gem':12 'get':313,532,606,1764,1952,2047,2170,2237 'gru1ogrkyq':268 'halt':2451 'handl':48,68 'handler':2416 'hangup':209,2308,2321,2872 'header':113,2406,2427,2448,2495 'hello':82 'hi':1486 'hi-in':1485 'hold':446,450,573,802,805,944,946,950,1814,1919 'host':335,497,635,3155 'hour':296,409 'http':2433,2441 'id':195,205,224,248,255,322,345,378,422,441,474,484,507,535,552,556,568,596,608,622,645,677,681,721,726,735,793,816,824,870,878,917,922,937,984,990,993,1024,1029,1041,1053,1056,1082,1087,1129,1137,1174,1178,1181,1213,1217,1220,1268,1278,1303,1323,1330,1333,1373,1380,1425,1433,1437,1545,1580,1585,1623,1628,1640,1643,1666,1671,1705,1710,1715,1727,1733,1736,1761,1766,1769,1775,1776,1788,1792,1795,1807,1835,1850,1853,1880,1881,1893,1897,1900,1912,1940,1971,2024,2070,2123,2185,2189,2193,2196,2207,2244,2250,2261,2265,2269,2272,2283,2317,2328,2373,2379,2620,2623,2633,2638,2642,2649,2651,2668,2670,2773,2776,2786,2791,2795,2802,2804,2821,2823,2926,2929,2939,2944,2948,2955,2957,2974,2976,3001,3004,3055,3058,3068,3073,3077,3084,3086,3103,3105,3130,3133,3187,3196,3200,3206,3211,3215,3222,3226,3233,3237,3251,3254,3320,3323,3333,3338,3342,3349,3351,3368,3370,3395,3398,3449,3452,3462,3467,3471,3478,3480,3497,3499,3524,3527,3565,3570,3581,3583,3600,3602,3627,3632,3636,3644,3646,3659,3661,3754,3759,3770,3772,3789,3791,3816,3821,3825,3833,3835,3848,3850,3943,3948,3959,3961,3978,3980,4005,4010,4014,4022,4024,4037,4039,4094,4099,4110,4112,4129,4131,4156,4161,4165,4173,4175,4188,4190,4244,4249,4253,4261,4263,4276,4278,4370,4375,4379,4387,4389 'identifi':2582,2600,2735,2753,2901,2919,3030,3048,3171,3189,3282,3300,3411,3429,3540,3558,3729,3747,3918,3936,4069,4087,4220,4238,4346,4364,4472,4490,4634,4652,4722,4740 'iie4pqg':477,796,996,1646,1739 'import':167 'inact':2345 'includ':2397,2486 'init':357,519,657 'initi':43,737 'input':718 'instal':10,13 'insuffici':148 'integ':213,218,445,456,740,745,756,759,765,776,1388,1964,1970,1975,2001,2017,2023,2028,2063,2069,2074,2116,2122,2127,2211,2222,2287,2298,2703,2717,2856,2884 'inter':741 'invalid':144,746,750,2453 'is-i':1488 'iso':2610,2763,3014,3143,3266,3310,3439,3713,3902,4053,4204,4330,4456,4598,4619,4706,4794 'issu':862,2626,2779,2932,3061,3326,3455,3573,3762,3951,4102,4505 'it-it':1491 'item':180 'item.id':182 'iter':176 'ja':1495 'ja-jp':1494 'join':587,588,851,854,864,885,1824,1825,1929,1930,2526,3008,3137,3402,3531 'jp':1496 'keep':207,2306,2319 'key':23,27,146 'ko':1498 'ko-kr':1497 'kr':1499 'label':1763,1809,1914 'languag':1439 'last':2857 'leav':1002,2873,2878 'left':290,331,336,403,493,498,589,631,636,1826,1931,2511,2530,3154,3156 'leg':373,555,858,881,1008,1791,1896,2188,2264,2648,2801,2954,3083,3221,3225,3348,3477,3580,3769,3958,4109 'limit':58,100,162 'list':274,276,306,526,529,807,1073,1614,1657,1943,1945,2163 'longer':2355 'loop':1140 'max':211,214,454,908,1973,1999,2026,2072,2099,2106,2125 'maximum':754,757 'mdi91x4lwfes7igbbeot9m4aigoy08m0wwzfist1yw2axz':476,795,995,1645,1738 'media':451,751,760,827,951,1142,3695,3701,3884,3890,4312,4318,4438,4444 'middl':461,834,960,1047,1094,1149,1187,1226,1291,1339,1536,1592,1634,1678,1721 'milli':739,744,775,1387 'minimum':763 'minut':444 'monitor':978 'move':1013 'mp3':4581 'mute':570,954,1068,1071,1811,1916 'mx':1475 'my-queu':2253,2331,2382 'name':199,226,347,382,423,452,478,509,647,752,761,828,952,1143,1282,1976,1997,2006,2029,2050,2055,2075,2097,2105,2128,2148,2153,2173,2179,2240,2252,2313,2330,2369,2381,2697,2850,3688,3691,3702,3877,3880,3891,4305,4308,4319,4431,4434,4445 'nb':1501 'nb-no':1500 'network':55,88 'never':429,928,1035,1859 'new':1990,3203,3229,3240 'nl':1504,1505 'nl-nl':1503 'nois':438 'none':979 'note':168 'number':300,413 'object':341,503,559,641,1541 'occur':2617,2770,3021,3150,3273,3317,3446,3720,3909,4060,4211,4337,4463,4713,4801 'omit':35 'one':1366 'option':200,250,424,679,727,818,923,1030,1084,1131,1176,1215,1272,1325,1377,1430,1582,1629,1668,1713,1854,1998,2318 'order':309 'page':172,178,316,319,538,548,1955,1958,2176,2181 'page.auto':177 'pagin':169 'paramet':910 'park':1017 'pars':2462 'particip':288,303,401,416,455,528,531,540,578,674,714,804,809,903,909,1070,1075,1115,1122,1361,1370,1410,1422,1550,1573,1611,1616,1654,1659,1697,1700,1751,1758,1768,1773,1774,1841,1847,1852,1878,1879,2525,2529,2533,2538,2543,2548,3007,3136,3401,3530,3567,3756,3945,4096,4499 'patch':1848,2310 'path':873 'paus':1168,1169,1193 'payload':1428,1527,1546,2425,2447,2464,2572 'payload.call':3194,3220,3231 'payload.client':3242 'payload.conference':3250 'payload.connection':3205 'payload.occurred':3261 'permiss':149 'pl':1507,1508 'pl-pl':1506 'play':706,1111,1116,1284,1416,1561,1568,3677,3698,3866,3887,4294,4315,4420,4441 'playback':767,2534,2539,2553,2557 'posit':2210,2286,2702,2705,2855,2858 'post':191,244,417,675,719,814,915,1022,1080,1127,1172,1211,1266,1321,1371,1423,1578,1621,1664,1703,1993,2094,2422 'process':2871 'product':71,2411 'progress':359,521,659 'prompt':702 'properti':1843,2088 'pt':1510,1513,1514 'pt-br':1509 'pt-pt':1512 'put':87,122,130,181,185,228,269,318,480,547,618,693,797,846,997,1063,1106,1161,1200,1239,1306,1352,1401,1553,1604,1647,1690,1743,1783,1888,1957,2010,2056,2109,2154,2180,2256,2334,2385,2465 'queu':2300,2303 'queue':190,198,225,237,243,260,1944,1947,1981,1987,1992,1996,2003,2005,2011,2034,2041,2046,2049,2052,2054,2057,2080,2086,2093,2096,2102,2104,2110,2133,2139,2144,2147,2152,2160,2169,2172,2178,2206,2209,2215,2228,2236,2239,2251,2255,2282,2285,2291,2312,2329,2333,2342,2349,2365,2368,2380,2384,2512,2700,2711,2724,2853,2864,2880,2890 'rate':57,99,161 'ratelimiterror':97 'raw':2420 'reason':328,490,628,2876,3159 'receiv':2466,2690,2843,2996,3125,3246,3390,3519,3622,3811,4000,4151,4535 'record':349,511,575,649,1167,1171,1180,1206,1210,1219,1245,1248,1251,1261,1312,1315,1332,1978,2031,2077,2130,2212,2288,2561,3167,4544,4546,4562,4591,4603,4612,4624 'regardless':297,410 'region':353,457,515,653,830,956,1043,1090,1145,1183,1222,1287,1335,1532,1588,1630,1674,1717 'remov':233,238,1005,2337,2343,2361 'request':914,2396 'request.body.read':2426 'request.env':2432,2440 'requir':17,134,197,419,723,919,1026,1270,1375,1427,1625,1707,1995,2098 'rescu':83,94,117,2449 'resourc':151,2587,2604,2740,2757,2906,2923,3035,3052,3176,3193,3287,3304,3416,3433,3545,3562,3734,3751,3923,3940,4074,4091,4225,4242,4351,4368,4477,4494,4639,4656,4727,4744 'respons':220,229,258,270,684,694,781,798,838,847,988,998,1051,1064,1098,1107,1153,1162,1191,1201,1230,1240,1300,1307,1343,1353,1390,1402,1543,1554,1596,1605,1638,1648,1682,1691,1771,1784,1876,1889 'result':75,231,272,696,800,849,1000,1066,1109,1164,1203,1242,1309,1355,1404,1556,1607,1650,1693,1746,2150,2155,2324,2335,2375,2386 'resum':1207,1208,1232 'retri':93,103,111,163 'retriev':599,602,1748,1752,2038,2042,2156,2161,2223,2229 'retry-aft':110 'return':230,271,320,482,549,620,695,799,848,999,1065,1108,1163,1202,1241,1308,1354,1403,1555,1606,1649,1692,1745,1785,1890,1959,2012,2058,2111,2182,2258 'ro':1516,1517 'ro-ro':1515 'role':975,1702,1712,1741 'ru':1519,1520 'ru-ru':1518 'rubi':5,9,16,73,219,257,315,469,537,609,683,780,837,987,1050,1097,1152,1190,1229,1299,1342,1389,1542,1595,1637,1681,1730,1770,1875,1954,2002,2051,2101,2149,2175,2245,2323,2374,2412 'save':2562 'say':1547 'se':1523 'sec':217,1963,2016,2062,2115,2221,2297,2716,2883 'second':2726,2892 'send':1357,1362 'sent':2478 'session':2192,2268,2667,2677,2820,2830,2973,2983,3102,3112,3232,3236,3367,3377,3496,3506,3599,3609,3643,3653,3788,3798,3832,3842,3977,3987,4021,4031,4128,4138,4172,4182,4260,4270,4386,4396,4512,4522,4674,4684,4762,4772 'set':905,1540 'setup':15 'shown':45 'sign':2391 'signatur':2400,2409,2430,2435,2454,2457,2493,2498 'silenc':1298 'sinatra':2418 'singl':1275,4541,4548 'size':212,1969,1974,2000,2022,2027,2068,2073,2100,2107,2121,2126 'skill' 'skill-telnyx-voice-conferencing-ruby' 'sleep':107 'soft':579,963,1816,1869,1921 'source-team-telnyx' 'speak':1406,2544,2549,2565,2569 'speaker':3204,3230,3241,3258 'specif':712,1756 'speech':1414 'spend':2721 'spent':2887 'spoken':3668,3857,4046,4197,4285,4411,4699,4787 'ssml':1531 'start':464,969,1246,1247,1302,2540,2550,2558,2570,3655,3686,3707,3844,3875,3896,4033,4184,4272,4303,4324,4398,4429,4450,4614,4625,4686,4774 'state':202,252,435,732,934,1018,1327,1384,2687,2689,2840,2842,2993,2995,3122,3124,3243,3245,3387,3389,3516,3518,3619,3621,3808,3810,3997,3999,4148,4150,4532,4534 'status':355,517,585,655,1822,1927,2470 'stop':766,1253,1260,1313,1314,1345,1558,1565 'store':4588 'string':203,206,232,253,256,273,323,326,344,346,348,354,363,436,442,449,453,485,488,506,508,510,516,525,553,557,562,569,592,598,623,626,644,646,648,654,663,682,697,730,733,736,749,753,762,773,779,801,821,826,829,850,935,938,949,953,986,1001,1042,1067,1089,1110,1134,1139,1141,1144,1165,1179,1182,1204,1218,1221,1243,1279,1283,1310,1328,1331,1356,1382,1385,1405,1435,1438,1557,1587,1608,1651,1673,1694,1716,1729,1747,1789,1793,1796,1808,1810,1837,1894,1898,1901,1913,1915,1942,1967,1972,1977,1984,2020,2025,2030,2037,2066,2071,2076,2083,2119,2124,2129,2136,2186,2190,2194,2197,2200,2202,2208,2218,2262,2266,2270,2273,2276,2278,2284,2294,2621,2634,2650,2669,2688,2695,2774,2787,2803,2822,2841,2848,2927,2940,2956,2975,2994,3002,3056,3069,3085,3104,3123,3131,3197,3207,3223,3234,3244,3252,3321,3334,3350,3369,3388,3396,3450,3463,3479,3498,3517,3525,3566,3582,3601,3620,3628,3645,3660,3672,3689,3755,3771,3790,3809,3817,3834,3849,3861,3878,3944,3960,3979,3998,4006,4023,4038,4095,4111,4130,4149,4157,4174,4189,4245,4262,4277,4289,4306,4371,4388,4403,4415,4432,4498,4514,4533,4565,4659,4676,4691,4747,4764,4779 'supervisor':974,1701,1711,1740 'support':227,2009 'sv':1522 'sv-se':1521 'telnyx':2,6,14,18,20,25,84,95,118,2390,2399,2404,2429,2434,2438,2442,2488,2492,2640,2793,2946,3075,3213,3340,3469,3634,3823,4012,4163,4251,4377,4571,4665,4753 'telnyx-signature-ed25519':2398,2428,2491 'telnyx-timestamp':2403,2437,2487 'telnyx-voice-conferencing-rubi':1 'termin':671,771 'text':81,1407,1412,1530,3666,3855,4044,4195,4283,4409,4697,4785 'tier':2007 'time':216,337,499,637,1801,1831,1906,1936,1962,2015,2061,2114,2220,2296,2609,2715,2719,2762,2882,2885,3013,3142,3157,3265,3309,3438,3712,3901,4052,4203,4329,4455,4597,4618,4705,4793 'timeout':738,743,774,2874 'timestamp':2405,2439,2443,2489 'tone':1364 'topic-agent-skills' 'topic-ai-coding-agent' 'topic-claude-code' 'topic-cpaas' 'topic-cursor' 'topic-iot' 'topic-llm' 'topic-sdk' 'topic-sip' 'topic-sms' 'topic-speech-to-text' 'topic-telephony' 'tr':1525,1526 'tr-tr':1524 'tri':758 'trim':1294,1297 'trim-sil':1296 'type':350,512,576,650,1528,1979,2032,2078,2131,2213,2289,2469,2576,2579,2584,2589,2593,2602,2729,2732,2737,2742,2746,2755,2895,2898,2903,2908,2912,2921,3024,3027,3032,3037,3041,3050,3165,3168,3173,3178,3182,3191,3276,3279,3284,3289,3293,3302,3405,3408,3413,3418,3422,3431,3534,3537,3542,3547,3551,3560,3723,3726,3731,3736,3740,3749,3912,3915,3920,3925,3929,3938,4063,4066,4071,4076,4080,4089,4214,4217,4222,4227,4231,4240,4340,4343,4348,4353,4357,4366,4466,4469,4474,4479,4483,4492,4628,4631,4636,4641,4645,4654,4716,4719,4724,4729,4733,4742 'unhold':1609,1612 'uniqu':2654,2673,2807,2826,2960,2979,3089,3108,3354,3373,3483,3502,3586,3605,3649,3775,3794,3838,3964,3983,4027,4115,4134,4178,4266,4392,4518,4680,4768 'unmut':1652,1655 'updat':361,523,590,661,1695,1698,1827,1838,1842,1932,1982,2035,2081,2084,2087,2134,2299,2302 'upon':383 'url':448,729,748,820,948,1133,2483,3671,3675,3681,3860,3864,3870,4288,4292,4298,4414,4418,4424 'us':463,836,962,1049,1096,1151,1189,1228,1293,1341,1469,1478,1538,1594,1636,1680,1723 'use':170,374,700,2357,2419,2500,2624,2643,2661,2681,2777,2796,2814,2834,2930,2949,2967,2987,3059,3078,3096,3116,3216,3324,3343,3361,3381,3453,3472,3490,3510,3571,3593,3613,3637,3684,3705,3760,3782,3802,3826,3873,3894,3949,3971,3991,4015,4100,4122,4142,4166,4254,4301,4322,4380,4427,4448,4503,4526,4574,4586,4668,4756 'user':1951 'uuid':1334,2599,2752,2918,3047,3188,3299,3428,3557,3746,3935,4086,4237,4363,4489,4554,4607,4651,4739 'v3':261,475,794,994,1644,1737 'valid':60,131,155,777,2458 'verif':2389,2499 'verifi':2408,2503 'via':333,495,633,1258,2628,2781,2934,3063,3328,3457,3575,3764,3953,4104,4507 'voic':3,7,1429,1539,1551 'wait':101,215,1961,2014,2060,2113,2219,2295,2714 'wav':1305,4580 'webhook':1020,1264,1319,2387,2388,2392,2415,2463,2475,2482,2485,2571,2664,2684,2817,2837,2970,2990,3099,3119,3364,3384,3493,3513,3596,3616,3785,3805,3974,3994,4125,4145,4529 'whether':4543 'whisper':593,980,981,1724,1742,1832,1937 'wish':883 'wls':1463","prices":[{"id":"c87097a5-a269-464c-9d8d-4c4d69c9a4a6","listingId":"492cdeaf-9f8b-492b-8812-dcd498ceeb82","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"team-telnyx","category":"ai","install_from":"skills.sh"},"createdAt":"2026-04-18T22:08:22.223Z"}],"sources":[{"listingId":"492cdeaf-9f8b-492b-8812-dcd498ceeb82","source":"github","sourceId":"team-telnyx/ai/telnyx-voice-conferencing-ruby","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-conferencing-ruby","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:22.223Z","lastSeenAt":"2026-04-22T00:54:52.077Z"}],"details":{"listingId":"492cdeaf-9f8b-492b-8812-dcd498ceeb82","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-voice-conferencing-ruby","github":{"repo":"team-telnyx/ai","stars":167,"topics":["agent-skills","ai","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip","sms","speech-to-text","telephony","telnyx","tts","twilio-migration","voice-agents","voice-ai","webrtc","windsurf"],"license":"mit","html_url":"https://github.com/team-telnyx/ai","pushed_at":"2026-04-21T22:09:49Z","description":"Official one-stop shop for AI Agents and developers building with Telnyx.","skill_md_sha":"06d7f6909d7cd4d21b0bca3817944c9f8312b56d","skill_md_path":"skills/telnyx-voice-conferencing-ruby/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-conferencing-ruby"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-voice-conferencing-ruby","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-voice-conferencing-ruby"},"updatedAt":"2026-04-22T00:54:52.077Z"}}