{"id":"5943fb0a-5a4b-43fd-a70b-ae1d67b7719e","shortId":"HW2gLz","kind":"skill","title":"telnyx-voice-advanced-ruby","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Voice Advanced - 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## Join AI Assistant Conversation\n\nAdd a participant to an existing AI assistant conversation. Use this command to bring an additional call leg into a running AI conversation.\n\n`POST /calls/{call_control_id}/actions/ai_assistant_join` — Required: `conversation_id`, `participant`\n\nOptional: `client_state` (string), `command_id` (string)\n\n```ruby\nresponse = client.calls.actions.join_ai_assistant(\n  \"call_control_id\",\n  conversation_id: \"v3:abc123\",\n  participant: {id: \"v3:abc123def456\", role: :user}\n)\n\nputs(response)\n```\n\nReturns: `conversation_id` (uuid), `result` (string)\n\n## Update client state\n\nUpdates client state\n\n`PUT /calls/{call_control_id}/actions/client_state_update` — Required: `client_state`\n\n```ruby\nresponse = client.calls.actions.update_client_state(\"call_control_id\", client_state: \"aGF2ZSBhIG5pY2UgZGF5ID1d\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Send DTMF\n\nSends DTMF tones from this leg. DTMF tones will be heard by the other end of the call. **Expected Webhooks:**\n\nThere are no webhooks associated with this command.\n\n`POST /calls/{call_control_id}/actions/send_dtmf` — Required: `digits`\n\nOptional: `client_state` (string), `command_id` (string), `duration_millis` (int32)\n\n```ruby\nresponse = client.calls.actions.send_dtmf(\"call_control_id\", digits: \"1www2WABCDw9\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## SIPREC start\n\nStart siprec session to configured in SIPREC connector SRS. \n\n**Expected Webhooks:**\n\n- `siprec.started`\n- `siprec.stopped`\n- `siprec.failed`\n\n`POST /calls/{call_control_id}/actions/siprec_start`\n\nOptional: `client_state` (string), `connector_name` (string), `include_metadata_custom_headers` (boolean), `secure` (boolean), `session_timeout_secs` (integer), `sip_transport` (enum: udp, tcp, tls), `siprec_track` (enum: inbound_track, outbound_track, both_tracks)\n\n```ruby\nresponse = client.calls.actions.start_siprec(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## SIPREC stop\n\nStop SIPREC session. **Expected Webhooks:**\n\n- `siprec.stopped`\n\n`POST /calls/{call_control_id}/actions/siprec_stop`\n\nOptional: `client_state` (string), `command_id` (string)\n\n```ruby\nresponse = client.calls.actions.stop_siprec(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Noise Suppression Start (BETA)\n\n`POST /calls/{call_control_id}/actions/suppression_start`\n\nOptional: `client_state` (string), `command_id` (string), `direction` (enum: inbound, outbound, both), `noise_suppression_engine` (enum: Denoiser, DeepFilterNet, Krisp, AiCoustics), `noise_suppression_engine_config` (object)\n\n```ruby\nresponse = client.calls.actions.start_noise_suppression(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Noise Suppression Stop (BETA)\n\n`POST /calls/{call_control_id}/actions/suppression_stop`\n\nOptional: `client_state` (string), `command_id` (string)\n\n```ruby\nresponse = client.calls.actions.stop_noise_suppression(\"v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Switch supervisor role\n\nSwitch the supervisor role for a bridged call. This allows switching between different supervisor modes during an active call\n\n`POST /calls/{call_control_id}/actions/switch_supervisor_role` — Required: `role`\n\n```ruby\nresponse = client.calls.actions.switch_supervisor_role(\"call_control_id\", role: :barge)\n\nputs(response)\n```\n\nReturns: `result` (string)\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| `callConversationEnded` | Call Conversation Ended |\n| `callConversationInsightsGenerated` | Call Conversation Insights Generated |\n| `callDtmfReceived` | Call Dtmf Received |\n| `callMachineDetectionEnded` | Call Machine Detection Ended |\n| `callMachineGreetingEnded` | Call Machine Greeting Ended |\n| `callMachinePremiumDetectionEnded` | Call Machine Premium Detection Ended |\n| `callMachinePremiumGreetingEnded` | Call Machine Premium Greeting Ended |\n| `callReferCompleted` | Call Refer Completed |\n| `callReferFailed` | Call Refer Failed |\n| `callReferStarted` | Call Refer Started |\n| `callSiprecFailed` | Call Siprec Failed |\n| `callSiprecStarted` | Call Siprec Started |\n| `callSiprecStopped` | Call Siprec Stopped |\n\n### Webhook payload fields\n\n**`callConversationEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.conversation.ended | The type of event being delivered. |\n| `data.id` | uuid | Unique identifier for the event. |\n| `data.occurred_at` | date-time | ISO 8601 datetime of when the event occurred. |\n| `data.created_at` | date-time | Timestamp when the event was created in the system. |\n| `data.payload.assistant_id` | string | Unique identifier of the assistant involved in the call. |\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 leg. |\n| `data.payload.call_session_id` | string | ID that is unique to the call session (group of related call legs). |\n| `data.payload.client_state` | string | Base64-encoded state received from a command. |\n| `data.payload.calling_party_type` | enum: pstn, sip | The type of calling party connection. |\n| `data.payload.conversation_id` | string | ID unique to the conversation or insight group generated for the call. |\n| `data.payload.duration_sec` | integer | Duration of the conversation in seconds. |\n| `data.payload.from` | string | The caller's number or identifier. |\n| `data.payload.to` | string | The callee's number or SIP address. |\n| `data.payload.llm_model` | string | The large language model used during the conversation. |\n| `data.payload.stt_model` | string | The speech-to-text model used in the conversation. |\n| `data.payload.tts_provider` | string | The text-to-speech provider used in the call. |\n| `data.payload.tts_model_id` | string | The model ID used for text-to-speech synthesis. |\n| `data.payload.tts_voice_id` | string | Voice ID used for TTS. |\n\n**`callConversationInsightsGenerated`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.conversation_insights.generated | 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.calling_party_type` | enum: pstn, sip | The type of calling party connection. |\n| `data.payload.insight_group_id` | string | ID that is unique to the insight group being generated for the call. |\n| `data.payload.results` | array[object] | Array of insight results being generated for the call. |\n\n**`callDtmfReceived`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.dtmf.received | 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 | Identifies the type of resource. |\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.from` | string | Number or SIP URI placing the call. |\n| `data.payload.to` | string | Destination number or SIP URI of the call. |\n| `data.payload.digit` | string | The received DTMF digit or symbol. |\n\n**`callMachineDetectionEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.machine.detection.ended | 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.from` | string | Number or SIP URI placing the call. |\n| `data.payload.to` | string | Destination number or SIP URI of the call. |\n| `data.payload.result` | enum: human, machine, not_sure | Answering machine detection result. |\n\n**`callMachineGreetingEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.machine.greeting.ended | 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.from` | string | Number or SIP URI placing the call. |\n| `data.payload.to` | string | Destination number or SIP URI of the call. |\n| `data.payload.result` | enum: beep_detected, ended, not_sure | Answering machine greeting ended result. |\n\n**`callMachinePremiumDetectionEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.machine.premium.detection.ended | 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.from` | string | Number or SIP URI placing the call. |\n| `data.payload.to` | string | Destination number or SIP URI of the call. |\n| `data.payload.result` | enum: human_residence, human_business, machine, silence, fax_detected, not_sure | Premium Answering Machine Detection result. |\n\n**`callMachinePremiumGreetingEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.machine.premium.greeting.ended | 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.from` | string | Number or SIP URI placing the call. |\n| `data.payload.to` | string | Destination number or SIP URI of the call. |\n| `data.payload.result` | enum: beep_detected, no_beep_detected | Premium Answering Machine Greeting Ended result. |\n\n**`callReferCompleted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.refer.completed | 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 | Unique ID for controlling 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.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.from` | string | Number or SIP URI placing the call. |\n| `data.payload.sip_notify_response` | integer | SIP NOTIFY event status for tracking the REFER attempt. |\n| `data.payload.to` | string | Destination number or SIP URI of the call. |\n\n**`callReferFailed`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.refer.failed | 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 | Unique ID for controlling 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.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.from` | string | Number or SIP URI placing the call. |\n| `data.payload.sip_notify_response` | integer | SIP NOTIFY event status for tracking the REFER attempt. |\n| `data.payload.to` | string | Destination number or SIP URI of the call. |\n\n**`callReferStarted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.refer.started | 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 | Unique ID for controlling 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.connection_id` | string | Call Control App ID (formerly Telnyx connection ID) used in the call. |\n| `data.payload.client_state` | string | State received from a command. |\n| `data.payload.from` | string | Number or SIP URI placing the call. |\n| `data.payload.sip_notify_response` | integer | SIP NOTIFY event status for tracking the REFER attempt. |\n| `data.payload.to` | string | Destination number or SIP URI of the call. |\n\n**`callSiprecFailed`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the resource. |\n| `data.event_type` | enum: siprec.failed | 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.failure_cause` | string | Q850 reason why siprec session failed. |\n\n**`callSiprecStarted`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: siprec.started | 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\n**`callSiprecStopped`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: siprec.stopped | 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.hangup_cause` | string | Q850 reason why the SIPREC session was stopped. |","tags":["telnyx","voice","advanced","ruby","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm"],"capabilities":["skill","source-team-telnyx","skill-telnyx-voice-advanced-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-advanced-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 (22,149 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:51.082Z","embedding":null,"createdAt":"2026-04-18T22:08:17.012Z","updatedAt":"2026-04-22T00:54:51.082Z","lastSeenAt":"2026-04-22T00:54:51.082Z","tsv":"'+13125550001':78 '+13125550002':80 '/actions/ai_assistant_join':199 '/actions/client_state_update':248 '/actions/send_dtmf':303 '/actions/siprec_start':351 '/actions/siprec_stop':415 '/actions/suppression_start':449 '/actions/suppression_stop':502 '/actions/switch_supervisor_role':555 '/calls':195,244,299,347,411,445,498,551 '/webhooks':609 '1':108 '1www2wabcdw9':324 '200':657 '400':638 '401':66,143 '403':147 '404':150 '41d4':393,431,484,519 '422':62,129,154 '429':59,98,160 '446655440000':395,433,486,521 '550e8400':390,428,481,516 '8601':791,1043,1204,1344,1493,1644,1800,1952,2100,2248,2393,2522,2642 'a716':394,432,485,520 'abc123':222 'abc123def456':226 'activ':548 'actual':115 'add':171 'addit':186 'address':945 'advanc':4,8 'agf2zsbhig5py2ugzgf5id1d':262 'ai':168,177,192,214 'aicoust':469 'allow':540 'alreadi':42 'alway':67,593 'answer':1452,1602,1759,1910 'api':22,26,50,123,145,837,1063,1224,1364,1513,1664,1820,2413,2542,2662 'apiconnectionerror':86 'apistatuserror':120 'app':843,1069,1370,1519,1670,1826,2013,2161,2309,2419,2548,2668 'array':1156,1158 'assist':169,178,215,819 'associ':294 'assum':39 'attempt':2052,2200,2348 'authent':64 'backoff':106,166 'barg':567 'base64':886 'base64-encoded':885 'bash':11 'beep':1597,1904,1907 'begin':74,630 'beta':443,496 'bodi':607 'boolean':363,365 'bridg':537 'bring':184 'busi':1751 'call':51,187,196,216,245,257,287,300,320,348,412,446,499,538,549,552,563,693,697,702,706,711,716,722,728,732,736,740,744,748,823,828,835,841,852,863,875,880,902,919,982,1054,1061,1067,1078,1089,1108,1135,1154,1166,1215,1222,1243,1262,1288,1298,1355,1362,1368,1379,1390,1409,1435,1445,1504,1511,1517,1528,1539,1558,1584,1594,1655,1662,1668,1679,1690,1709,1735,1745,1811,1818,1824,1835,1846,1865,1891,1901,1968,1979,1998,2011,2022,2039,2062,2116,2127,2146,2159,2170,2187,2210,2264,2275,2294,2307,2318,2335,2358,2404,2411,2417,2428,2439,2458,2533,2540,2546,2557,2568,2587,2653,2660,2666,2677,2688,2707 'call.conversation.ended':771 'call.conversation_insights.generated':1023 'call.dtmf.received':1184 'call.machine.detection.ended':1324 'call.machine.greeting.ended':1473 'call.machine.premium.detection.ended':1624 'call.machine.premium.greeting.ended':1780 'call.refer.completed':1932 'call.refer.failed':2080 'call.refer.started':2228 'callconversationend':692,754 'callconversationinsightsgener':696,1006 'calldtmfreceiv':701,1167 'calle':940 'caller':932 'callmachinedetectionend':705,1307 'callmachinegreetingend':710,1456 'callmachinepremiumdetectionend':715,1607 'callmachinepremiumgreetingend':721,1763 'callrefercomplet':727,1915 'callreferfail':731,2063 'callreferstart':735,2211 'callsiprecfail':739,2359 'callsiprecstart':743,2485 'callsiprecstop':747,2605 'caus':2477,2726 'check':90,109,133,157 'client':19,40,205,238,241,250,255,260,307,353,417,451,504 'client.calls.actions.join':213 'client.calls.actions.send':318 'client.calls.actions.start':387,477 'client.calls.actions.stop':425,512 'client.calls.actions.switch':560 'client.calls.actions.update':254 'client.messages.send':76 'client.new':21 'client.webhooks.unwrap':632,687 'code':72,142 'command':182,208,297,310,420,454,507,833,892,1059,1125,1220,1279,1360,1426,1509,1575,1660,1726,1816,1882,2030,2178,2326,2409,2475,2538,2604,2658,2724 'common':140 'complet':730 'config':473 'configur':336,667 'connect':91,847,904,1073,1137,1374,1523,1674,1830,2017,2165,2313,2423,2552,2672 'connector':339,356 'control':197,217,246,258,301,321,349,413,447,500,553,564,825,836,842,1051,1062,1068,1212,1223,1352,1363,1369,1501,1512,1518,1652,1663,1669,1808,1819,1825,1960,1966,2012,2108,2114,2160,2256,2262,2308,2401,2412,2418,2530,2541,2547,2650,2661,2667 'convers':170,179,193,201,219,232,694,698,912,926,956,969 'correl':1095,1115,1249,1269,1396,1416,1545,1565,1696,1716,1852,1872,1985,2005,2133,2153,2281,2301,2445,2465,2574,2594,2694,2714 'creat':808 'custom':361 'data.created':798 'data.event':768,1020,1181,1321,1470,1621,1777,1929,2077,2225,2370,2499,2619 'data.id':778,1030,1191,1331,1480,1631,1787,1939,2087,2235,2380,2509,2629 'data.occurred':785,1037,1198,1338,1487,1638,1794,1946,2094,2242,2387,2516,2636 'data.payload.assistant':812 'data.payload.call':824,853,865,1050,1079,1098,1211,1233,1252,1351,1380,1399,1500,1529,1548,1651,1680,1699,1807,1836,1855,1959,1969,1988,2107,2117,2136,2255,2265,2284,2400,2429,2448,2529,2558,2577,2649,2678,2697 'data.payload.calling':893,1126 'data.payload.client':882,1118,1272,1419,1568,1719,1875,2023,2171,2319,2468,2597,2717 'data.payload.connection':838,1064,1225,1365,1514,1665,1821,2008,2156,2304,2414,2543,2663 'data.payload.conversation':905 'data.payload.digit':1299 'data.payload.duration':920 'data.payload.failure':2476 'data.payload.from':929,1280,1427,1576,1727,1883,2031,2179,2327 'data.payload.hangup':2725 'data.payload.insight':1138 'data.payload.llm':946 'data.payload.result':1446,1595,1746,1902 'data.payload.results':1155 'data.payload.sip':2040,2188,2336 'data.payload.stt':957 'data.payload.to':937,1289,1436,1585,1736,1892,2053,2201,2349 'data.payload.tts':970,983,997 'data.record':758,1010,1171,1311,1460,1611,1767,1919,2067,2215,2363,2489,2609 'date':788,801,1040,1201,1341,1490,1641,1797,1949,2097,2245,2390,2519,2639 'date-tim':787,800,1039,1200,1340,1489,1640,1796,1948,2096,2244,2389,2518,2638 'datetim':792,1044,1205,1345,1494,1645,1801,1953,2101,2249,2394,2523,2643 'deepfilternet':467 'default':31 'delay':116 'deliv':777,1029,1190,1330,1479,1630,1786,1938,2086,2234,2379,2508,2628 'denois':466 'descript':691,757,1009,1170,1310,1459,1610,1766,1918,2066,2214,2362,2488,2608 'destin':1291,1438,1587,1738,1894,2055,2203,2351 'detect':708,719,1454,1598,1755,1761,1905,1908 'differ':543 'digit':305,323,1304 'direct':457 'dtmf':269,271,276,319,703,1303 'durat':313,923 'e':121,636 'e.g':603 'e.message':126,641 'e.status':125,128 'e29b':392,430,483,518 'e29b-41d4-a716':391,429,482,517 'ed25519':580,587,617,622,680,683 'encod':887 'end':138,139,284,642,658,695,709,714,720,726,1599,1605,1913 'engin':464,472 'enum':372,378,458,465,760,770,896,1012,1022,1129,1173,1183,1313,1323,1447,1462,1472,1596,1613,1623,1747,1769,1779,1903,1921,1931,2069,2079,2217,2227,2365,2372,2491,2501,2611,2621 'env':24 'error':47,56,61,65,69,85,89,96,119,124,132,141,156 'event':631,645,653,662,690,761,775,784,796,806,1013,1027,1048,1097,1117,1174,1188,1209,1251,1271,1314,1328,1349,1398,1418,1463,1477,1498,1547,1567,1614,1628,1649,1698,1718,1770,1784,1805,1854,1874,1922,1936,1957,1987,2007,2046,2070,2084,2105,2135,2155,2194,2218,2232,2253,2283,2303,2342,2366,2377,2398,2447,2467,2492,2506,2527,2576,2596,2612,2626,2647,2696,2716 'event.data.event':654 'exampl':37 'exist':176 'expect':288,341,407 'exponenti':105,165 'fail':53,734,742,2484 'fax':1754 'field':135,158,753,755,1007,1168,1308,1457,1608,1764,1916,2064,2212,2360,2486,2606 'follow':660 'format':137,159 'former':845,1071,1372,1521,1672,1828,2015,2163,2311,2421,2550,2670 'found':153 'gem':12 'generat':700,916,1151,1163 'greet':713,725,1604,1912 'group':877,915,1139,1149 'gru1ogrkyq':396,434,487,522 'halt':637 'handl':48,68 'handler':602 'header':113,362,592,613,634,681 'heard':280 'hello':82 'http':619,627 'human':1448,1748,1750 'id':198,202,209,218,220,224,233,247,259,302,311,322,350,414,421,448,455,501,508,554,565,813,826,829,839,844,848,855,857,867,869,906,908,985,989,999,1002,1052,1055,1065,1070,1074,1081,1083,1100,1102,1140,1142,1213,1216,1226,1235,1237,1254,1256,1353,1356,1366,1371,1375,1382,1384,1401,1403,1502,1505,1515,1520,1524,1531,1533,1550,1552,1653,1656,1666,1671,1675,1682,1684,1701,1703,1809,1812,1822,1827,1831,1838,1840,1857,1859,1961,1964,1971,1973,1990,1992,2009,2014,2018,2109,2112,2119,2121,2138,2140,2157,2162,2166,2257,2260,2267,2269,2286,2288,2305,2310,2314,2402,2405,2415,2420,2424,2431,2433,2450,2452,2531,2534,2544,2549,2553,2560,2562,2579,2581,2651,2654,2664,2669,2673,2680,2682,2699,2701 'identifi':762,781,816,936,1014,1032,1175,1193,1228,1315,1333,1464,1482,1615,1633,1771,1789,1923,1941,2071,2089,2219,2237,2367,2382,2493,2511,2613,2631 'inbound':379,459 'includ':359,583,672 'initi':43 'insight':699,914,1148,1160 'instal':10,13 'insuffici':148 'int32':315 'integ':369,922,2043,2191,2339 'invalid':144,639 'involv':820 'iso':790,1042,1203,1343,1492,1643,1799,1951,2099,2247,2392,2521,2641 'issu':832,1058,1219,1359,1508,1659,1815,2408,2537,2657 'join':167 'key':23,27,146 'krisp':468 'languag':951 'larg':950 'leg':188,275,854,864,881,1080,1234,1381,1530,1681,1837,1970,2118,2266,2430,2559,2679 'limit':58,100,162 'machin':707,712,717,723,1449,1453,1603,1752,1760,1911 'metadata':360 'milli':314 'mode':545 'model':947,952,958,965,984,988 'name':357 'network':55,88 'nois':440,462,470,478,493,513 'notifi':2041,2045,2189,2193,2337,2341 'number':934,942,1282,1292,1429,1439,1578,1588,1729,1739,1885,1895,2033,2056,2181,2204,2329,2352 'object':474,1157 'occur':797,1049,1210,1350,1499,1650,1806,1958,2106,2254,2399,2528,2648 'omit':35 'option':204,306,352,416,450,503 'outbound':381,460 'pars':648 'parti':894,903,1127,1136 'particip':173,203,223 'payload':611,633,650,752 'permiss':149 'place':1286,1433,1582,1733,1889,2037,2185,2333 'post':194,298,346,410,444,497,550,608 'premium':718,724,1758,1909 'product':71,597 'provid':971,978 'pstn':897,1130 'put':87,122,130,229,243,263,325,397,435,488,523,568,651 'q850':2479,2728 'rate':57,99,161 'ratelimiterror':97 'raw':606 'reason':2480,2729 'receiv':652,704,889,1122,1276,1302,1423,1572,1723,1879,2027,2175,2323,2472,2601,2721 'refer':729,733,737,2051,2199,2347 'relat':879 'request':582 'request.body.read':612 'request.env':618,626 'requir':17,134,200,249,304,556 'rescu':83,94,117,635 'resid':1749 'resourc':151,767,1019,1036,1180,1197,1232,1320,1337,1469,1486,1620,1637,1776,1793,1928,1945,2076,2093,2224,2241,2369,2386,2498,2515,2618,2635 'respons':212,230,253,264,317,326,386,398,424,436,476,489,511,524,559,569,2042,2190,2338 'result':75,235,266,328,400,438,491,526,571,1161,1455,1606,1762,1914 'retri':93,103,111,163 'retry-aft':110 'return':231,265,327,399,437,490,525,570 'role':227,530,534,557,562,566 'rubi':5,9,16,73,211,252,316,385,423,475,510,558,598 'run':191 'sec':368,921 'second':928 'secur':364 'send':268,270 'sent':664 'session':334,366,406,866,876,1099,1109,1253,1263,1400,1410,1549,1559,1700,1710,1856,1866,1989,1999,2137,2147,2285,2295,2449,2459,2483,2578,2588,2698,2708,2733 'setup':15 'shown':45 'sign':577 'signatur':586,595,616,621,640,643,679,684 'silenc':1753 'sinatra':604 'sip':370,898,944,1131,1284,1294,1431,1441,1580,1590,1731,1741,1887,1897,2035,2044,2058,2183,2192,2206,2331,2340,2354 'siprec':330,333,338,376,388,402,405,426,741,745,749,2482,2732 'siprec.failed':345,2373 'siprec.started':343,2502 'siprec.stopped':344,409,2622 'skill' 'skill-telnyx-voice-advanced-ruby' 'sleep':107 'source-team-telnyx' 'speech':962,977,995 'speech-to-text':961 'srs':340 'start':331,332,442,738,746 'state':206,239,242,251,256,261,308,354,418,452,505,883,888,1119,1121,1273,1275,1420,1422,1569,1571,1720,1722,1876,1878,2024,2026,2172,2174,2320,2322,2469,2471,2598,2600,2718,2720 'status':656,2047,2195,2343 'stop':403,404,495,750,2735 'string':207,210,236,267,309,312,329,355,358,401,419,422,439,453,456,492,506,509,527,572,814,827,840,856,868,884,907,930,938,948,959,972,986,1000,1053,1066,1082,1101,1120,1141,1214,1227,1236,1255,1274,1281,1290,1300,1354,1367,1383,1402,1421,1428,1437,1503,1516,1532,1551,1570,1577,1586,1654,1667,1683,1702,1721,1728,1737,1810,1823,1839,1858,1877,1884,1893,1962,1972,1991,2010,2025,2032,2054,2110,2120,2139,2158,2173,2180,2202,2258,2268,2287,2306,2321,2328,2350,2403,2416,2432,2451,2470,2478,2532,2545,2561,2580,2599,2652,2665,2681,2700,2719,2727 'supervisor':529,533,544,561 'suppress':441,463,471,479,494,514 'sure':1451,1601,1757 'switch':528,531,541 'symbol':1306 'synthesi':996 'system':811 'tcp':374 'telnyx':2,6,14,18,20,25,84,95,118,576,585,590,615,620,624,628,674,678,846,1072,1373,1522,1673,1829,2016,2164,2312,2422,2551,2671 'telnyx-signature-ed25519':584,614,677 'telnyx-timestamp':589,623,673 'telnyx-voice-advanced-rubi':1 'text':81,964,975,993 'text-to-speech':974,992 'time':789,802,1041,1202,1342,1491,1642,1798,1950,2098,2246,2391,2520,2640 'timeout':367 'timestamp':591,625,629,675,803 'tls':375 'tone':272,277 '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' 'track':377,380,382,384,2049,2197,2345 'transport':371 'tts':1005 'type':655,756,759,764,769,773,895,900,1008,1011,1016,1021,1025,1034,1128,1133,1169,1172,1177,1182,1186,1195,1230,1309,1312,1317,1322,1326,1335,1458,1461,1466,1471,1475,1484,1609,1612,1617,1622,1626,1635,1765,1768,1773,1778,1782,1791,1917,1920,1925,1930,1934,1943,2065,2068,2073,2078,2082,2091,2213,2216,2221,2226,2230,2239,2361,2364,2371,2375,2384,2487,2490,2495,2500,2504,2513,2607,2610,2615,2620,2624,2633 'udp':373 'uniqu':780,815,860,872,909,1086,1105,1145,1240,1259,1387,1406,1536,1555,1687,1706,1843,1862,1963,1976,1995,2111,2124,2143,2259,2272,2291,2436,2455,2565,2584,2685,2704 'updat':237,240 'uri':1285,1295,1432,1442,1581,1591,1732,1742,1888,1898,2036,2059,2184,2207,2332,2355 'url':669 'use':180,605,686,830,849,953,966,979,990,1003,1056,1075,1093,1113,1217,1247,1267,1357,1376,1394,1414,1506,1525,1543,1563,1657,1676,1694,1714,1813,1832,1850,1870,1983,2003,2019,2131,2151,2167,2279,2299,2315,2406,2425,2443,2463,2535,2554,2572,2592,2655,2674,2692,2712 'user':228 'uuid':234,779,1031,1192,1332,1481,1632,1788,1940,2088,2236,2381,2510,2630 'v3':221,225,389,427,480,515 'valid':60,131,155,644 'verif':575,685 'verifi':594,689 'via':834,1060,1221,1361,1510,1661,1817,2410,2539,2659 'voic':3,7,998,1001 'wait':101 'webhook':289,293,342,408,573,574,578,601,649,661,668,671,751,1096,1116,1250,1270,1397,1417,1546,1566,1697,1717,1853,1873,1986,2006,2134,2154,2282,2302,2446,2466,2575,2595,2695,2715","prices":[{"id":"b7b7599d-0531-47b6-9ecd-7173d7d07d25","listingId":"5943fb0a-5a4b-43fd-a70b-ae1d67b7719e","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:17.012Z"}],"sources":[{"listingId":"5943fb0a-5a4b-43fd-a70b-ae1d67b7719e","source":"github","sourceId":"team-telnyx/ai/telnyx-voice-advanced-ruby","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-advanced-ruby","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:17.012Z","lastSeenAt":"2026-04-22T00:54:51.082Z"}],"details":{"listingId":"5943fb0a-5a4b-43fd-a70b-ae1d67b7719e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-voice-advanced-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":"aadcb587380cba37164d0354bc5d5c75b06e3af4","skill_md_path":"skills/telnyx-voice-advanced-ruby/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-advanced-ruby"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-voice-advanced-ruby","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-voice-advanced-ruby"},"updatedAt":"2026-04-22T00:54:51.082Z"}}