{"id":"7009dfb0-c789-4cb5-acc9-dfe90e29f093","shortId":"ugGFEg","kind":"skill","title":"telnyx-voice-gather-javascript","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Voice Gather - JavaScript\n\n## Installation\n\n```bash\nnpm install telnyx\n```\n\n## Setup\n\n```javascript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n  apiKey: process.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```javascript\ntry {\n  const result = await client.messages.send({ to: '+13125550001', from: '+13125550002', text: 'Hello' });\n} catch (err) {\n  if (err instanceof Telnyx.APIConnectionError) {\n    console.error('Network error — check connectivity and retry');\n  } else if (err instanceof Telnyx.RateLimitError) {\n    // 429: rate limited — wait and retry with exponential backoff\n    const retryAfter = err.headers?.['retry-after'] || 1;\n    await new Promise(r => setTimeout(r, retryAfter * 1000));\n  } else if (err instanceof Telnyx.APIError) {\n    console.error(`API error ${err.status}: ${err.message}`);\n    if (err.status === 422) {\n      console.error('Validation error — check required fields and formats');\n    }\n  }\n}\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## Add messages to AI Assistant\n\nAdd messages to the conversation started by an AI assistant on the call.\n\n`POST /calls/{call_control_id}/actions/ai_assistant_add_messages`\n\nOptional: `client_state` (string), `command_id` (string), `messages` (array[object])\n\n```javascript\nconst response = await client.calls.actions.addAIAssistantMessages('v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ');\n\nconsole.log(response.data);\n```\n\nReturns: `result` (string)\n\n## Start AI Assistant\n\nStart an AI assistant on the call. **Expected Webhooks:**\n\n- `call.conversation.ended`\n- `call.conversation_insights.generated`\n\n`POST /calls/{call_control_id}/actions/ai_assistant_start`\n\nOptional: `assistant` (object), `client_state` (string), `command_id` (string), `greeting` (string), `interruption_settings` (object), `message_history` (array[object]), `participants` (array[object]), `send_message_history_updates` (boolean), `transcription` (object), `voice` (string), `voice_settings` (object)\n\n```javascript\nconst response = await client.calls.actions.startAIAssistant('v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ');\n\nconsole.log(response.data);\n```\n\nReturns: `conversation_id` (uuid), `result` (string)\n\n## Stop AI Assistant\n\nStop an AI assistant on the call.\n\n`POST /calls/{call_control_id}/actions/ai_assistant_stop`\n\nOptional: `client_state` (string), `command_id` (string)\n\n```javascript\nconst response = await client.calls.actions.stopAIAssistant('v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ');\n\nconsole.log(response.data);\n```\n\nReturns: `result` (string)\n\n## Gather\n\nGather DTMF signals to build interactive menus. You can pass a list of valid digits. The `Answer` command must be issued before the `gather` command.\n\n`POST /calls/{call_control_id}/actions/gather`\n\nOptional: `client_state` (string), `command_id` (string), `gather_id` (string), `initial_timeout_millis` (int32), `inter_digit_timeout_millis` (int32), `maximum_digits` (int32), `minimum_digits` (int32), `terminating_digit` (string), `timeout_millis` (int32), `valid_digits` (string)\n\n```javascript\nconst response = await client.calls.actions.gather('v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ');\n\nconsole.log(response.data);\n```\n\nReturns: `result` (string)\n\n## Gather stop\n\nStop current gather. **Expected Webhooks:**\n\n- `call.gather.ended`\n\n`POST /calls/{call_control_id}/actions/gather_stop`\n\nOptional: `client_state` (string), `command_id` (string)\n\n```javascript\nconst response = await client.calls.actions.stopGather('v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ');\n\nconsole.log(response.data);\n```\n\nReturns: `result` (string)\n\n## Gather using AI\n\nGather parameters defined in the request payload using a voice assistant. You can pass parameters described as a JSON Schema object and the voice assistant will attempt to gather these informations.\n\n`POST /calls/{call_control_id}/actions/gather_using_ai` — Required: `parameters`\n\nOptional: `assistant` (object), `client_state` (string), `command_id` (string), `gather_ended_speech` (string), `greeting` (string), `interruption_settings` (object), `language` (object), `message_history` (array[object]), `send_message_history_updates` (boolean), `send_partial_results` (boolean), `transcription` (object), `user_response_timeout_ms` (integer), `voice` (string), `voice_settings` (object)\n\n```javascript\nconst response = await client.calls.actions.gatherUsingAI('call_control_id', {\n  parameters: {\n    properties: 'bar',\n    required: 'bar',\n    type: 'bar',\n  },\n});\n\nconsole.log(response.data);\n```\n\nReturns: `conversation_id` (uuid), `result` (string)\n\n## Gather using audio\n\nPlay an audio file on the call until the required DTMF signals are gathered to build interactive menus. You can pass a list of valid digits along with an 'invalid_audio_url', which will be played back at the beginning of each prompt. Playback will be interrupted when a DTMF signal is received.\n\n`POST /calls/{call_control_id}/actions/gather_using_audio`\n\nOptional: `audio_url` (string), `client_state` (string), `command_id` (string), `inter_digit_timeout_millis` (int32), `invalid_audio_url` (string), `invalid_media_name` (string), `maximum_digits` (int32), `maximum_tries` (int32), `media_name` (string), `minimum_digits` (int32), `terminating_digit` (string), `timeout_millis` (int32), `valid_digits` (string)\n\n```javascript\nconst response = await client.calls.actions.gatherUsingAudio('v3:550e8400-e29b-41d4-a716-446655440000_gRU1OGRkYQ');\n\nconsole.log(response.data);\n```\n\nReturns: `result` (string)\n\n## Gather using speak\n\nConvert text to speech and play it on the call until the required DTMF signals are gathered to build interactive menus. You can pass a list of valid digits along with an 'invalid_payload', which will be played back at the beginning of each prompt. Speech will be interrupted when a DTMF signal is received.\n\n`POST /calls/{call_control_id}/actions/gather_using_speak` — Required: `voice`, `payload`\n\nOptional: `client_state` (string), `command_id` (string), `inter_digit_timeout_millis` (int32), `invalid_payload` (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), `maximum_digits` (int32), `maximum_tries` (int32), `minimum_digits` (int32), `payload_type` (enum: text, ssml), `service_level` (enum: basic, premium), `terminating_digit` (string), `timeout_millis` (int32), `valid_digits` (string), `voice_settings` (object)\n\n```javascript\nconst response = await client.calls.actions.gatherUsingSpeak('call_control_id', {\n  payload: 'say this on call',\n  voice: 'male',\n});\n\nconsole.log(response.data);\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```javascript\n// In your webhook handler (e.g., Express — use raw body, not parsed JSON):\napp.post('/webhooks', express.raw({ type: 'application/json' }), async (req, res) => {\n  try {\n    const event = await client.webhooks.unwrap(req.body.toString(), {\n      headers: req.headers,\n    });\n    // Signature valid — event is the parsed webhook payload\n    console.log('Received event:', event.data.event_type);\n    res.status(200).send('OK');\n  } catch (err) {\n    console.error('Webhook verification failed:', err.message);\n    res.status(400).send('Invalid signature');\n  }\n});\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| `CallAIGatherEnded` | Call AI Gather Ended |\n| `CallAIGatherMessageHistoryUpdated` | Call AI Gather Message History Updated |\n| `CallAIGatherPartialResults` | Call AI Gather Partial Results |\n| `callGatherEnded` | Call Gather Ended |\n\n### Webhook payload fields\n\n**`CallAIGatherEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.ai_gather.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 | 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.message_history` | array[object] | The history of the messages exchanged during the AI gather |\n| `data.payload.result` | object | The result of the AI gather, its type depends of the `parameters` provided in the command |\n| `data.payload.status` | enum: valid, invalid | Reflects how command ended. |\n\n**`CallAIGatherMessageHistoryUpdated`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.ai_gather.message_history_updated | 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 | 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.message_history` | array[object] | The history of the messages exchanged during the AI gather |\n\n**`CallAIGatherPartialResults`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.ai_gather.partial_results | 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 | 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.message_history` | array[object] | The history of the messages exchanged during the AI gather |\n| `data.payload.partial_results` | object | The partial result of the AI gather, its type depends of the `parameters` provided in the command |\n\n**`callGatherEnded`**\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `data.record_type` | enum: event | Identifies the type of the resource. |\n| `data.event_type` | enum: call.gather.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.digits` | string | The received DTMF digit or symbol. |\n| `data.payload.status` | enum: valid, invalid, call_hangup, cancelled, cancelled_amd, timeout | Reflects how command ended. |","tags":["telnyx","voice","gather","javascript","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm"],"capabilities":["skill","source-team-telnyx","skill-telnyx-voice-gather-javascript","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-gather-javascript","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 (13,738 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.697Z","embedding":null,"createdAt":"2026-04-18T22:08:26.475Z","updatedAt":"2026-04-22T00:54:52.697Z","lastSeenAt":"2026-04-22T00:54:52.697Z","tsv":"'+13125550001':82 '+13125550002':84 '/actions/ai_assistant_add_messages':200 '/actions/ai_assistant_start':248 '/actions/ai_assistant_stop':318 '/actions/gather':375 '/actions/gather_stop':441 '/actions/gather_using_ai':506 '/actions/gather_using_audio':638 '/actions/gather_using_speak':764 '/calls':196,244,314,371,437,502,634,760 '/webhooks':961 '1':120 '1000':128 '200':990 '400':1001 '401':68,153 '403':157 '404':160 '41d4':220,291,335,419,458,692 '422':64,141,164 '429':61,105,170 '446655440000':222,293,337,421,460,694 '550e8400':217,288,332,416,455,689 '8601':1100,1276,1425,1593 'a716':221,292,336,420,459,693 'add':177,182 'ai':180,190,230,234,304,308,469,1040,1045,1052,1209,1217,1385,1534,1544 'along':606,733 'alreadi':44 'alway':69,942 'amd':1711 'answer':361 'api':28,52,135,155,1120,1296,1445,1613 'apikey':25 'app':1619 'app.post':960 'application/json':964 'arb':785 'array':209,265,268,531,1199,1375,1524 'assist':181,191,231,235,250,305,309,480,494,510 'assum':41 'async':965 'attempt':496 'au':800 'audio':579,582,610,640,655 'authent':66 'await':79,121,214,285,329,413,452,557,686,905,971 'back':616,742 'backoff':113,176 'bar':564,566,568 'bash':11 'basic':888 'begin':619,745 'bodi':956 'boolean':274,537,541 'br':855 'build':349,595,722 'ca':825 'call':53,194,197,238,245,312,315,372,438,503,559,586,635,713,761,907,914,1039,1044,1051,1057,1111,1118,1130,1141,1160,1186,1196,1287,1294,1306,1317,1336,1362,1372,1436,1443,1455,1466,1485,1511,1521,1604,1611,1617,1628,1639,1658,1684,1694,1707 'call.ai_gather.ended':1080 'call.ai_gather.message':1254 'call.ai_gather.partial':1404 'call.conversation.ended':241 'call.conversation_insights.generated':242 'call.gather.ended':435,1573 'callaigatherend':1038,1063 'callaigathermessagehistoryupd':1043,1237 'callaigatherpartialresult':1050,1387 'callgatherend':1056,1556 'cancel':1709,1710 'catch':87,993 'check':96,145,167 'client':22,42,202,252,320,377,443,512,643,769 'client.calls.actions.addaiassistantmessages':215 'client.calls.actions.gather':414 'client.calls.actions.gatherusingai':558 'client.calls.actions.gatherusingaudio':687 'client.calls.actions.gatherusingspeak':906 'client.calls.actions.startaiassistant':286 'client.calls.actions.stopaiassistant':330 'client.calls.actions.stopgather':453 'client.messages.send':80 'client.webhooks.unwrap':972,1033 'cmn':787 'cmn-cn':786 'cn':788 'code':74,152 'command':205,255,323,362,369,380,446,515,646,772,1116,1177,1228,1235,1292,1353,1441,1502,1555,1609,1675,1715 'common':150 'configur':1013 'connect':97,1125,1301,1450,1623 'console.error':93,134,142,995 'console.log':224,295,339,423,462,569,696,917,984 'const':21,77,114,212,283,327,411,450,555,684,903,969 'control':198,246,316,373,439,504,560,636,762,908,1108,1119,1284,1295,1433,1444,1601,1612,1618 'convers':186,298,572 'convert':704 'correl':1147,1167,1323,1343,1472,1492,1645,1665 'current':431 'cy':790 'cy-gb':789 'da':793 'da-dk':792 'data.event':1077,1251,1401,1570 'data.id':1087,1263,1412,1580 'data.occurred':1094,1270,1419,1587 'data.payload.call':1107,1131,1150,1283,1307,1326,1432,1456,1475,1600,1629,1648 'data.payload.client':1170,1346,1495,1668 'data.payload.connection':1121,1297,1446,1614 'data.payload.digits':1695 'data.payload.from':1178,1354,1503,1676 'data.payload.message':1197,1373,1522 'data.payload.partial':1536 'data.payload.result':1211 'data.payload.status':1229,1703 'data.payload.to':1187,1363,1512,1685 'data.record':1067,1241,1391,1560 'date':1097,1273,1422,1590 'date-tim':1096,1272,1421,1589 'datetim':1101,1277,1426,1594 'de':796,797 'de-d':795 'default':33 'defin':472 'deliv':1086,1262,1411,1579 'depend':1221,1548 'describ':485 'descript':1037,1066,1240,1390,1559 'destin':1189,1365,1514,1687 'digit':359,391,396,399,402,408,605,650,663,672,675,681,732,776,872,878,891,897,1700 'dk':794 'dtmf':346,590,629,717,755,1699 'e.g':952 'e29b':219,290,334,418,457,691 'e29b-41d4-a716':218,289,333,417,456,690 'ed25519':929,936,1026,1029 'els':100,129 'en':799,802,805,809,812 'en-au':798 'en-gb':801 'en-gb-wl':804 'en-in':808 'en-us':811 'end':519,1042,1059,1236,1716 'enum':784,882,887,1069,1079,1230,1243,1253,1393,1403,1562,1572,1704 'err':88,90,102,131,994 'err.headers':116 'err.message':138,999 'err.status':137,140 'error':49,58,63,67,71,95,136,144,151,166 'es':815,816,818,821 'es-':814 'es-mx':817 'es-us':820 'event':970,978,986,1008,1036,1070,1084,1105,1149,1169,1244,1260,1281,1325,1345,1394,1409,1430,1474,1494,1563,1577,1598,1647,1667 'event.data.event':987 'exampl':39 'exchang':1206,1382,1531 'expect':239,433 'exponenti':112,175 'express':953 'express.raw':962 'fail':55,998 'field':147,168,1062,1064,1238,1388,1557 'file':583 'follow':1006 'format':149,169 'former':1621 'found':163 'fr':824,827,828 'fr-ca':823 'fr-fr':826 'gather':4,8,344,345,368,383,428,432,467,470,498,518,577,593,701,720,1041,1046,1053,1058,1210,1218,1386,1535,1545 'gb':791,803,806 'greet':258,522 'gru1ogrkyq':223,294,338,422,461,695 'handl':50,70 'handler':951 'hangup':1708 'header':941,974,1027 'hello':86 'hi':830 'hi-in':829 'histori':264,272,530,535,1048,1198,1202,1255,1374,1378,1523,1527 'id':199,206,247,256,299,317,324,374,381,384,440,447,505,516,561,573,637,647,763,773,909,1109,1112,1122,1126,1133,1135,1152,1154,1285,1288,1298,1302,1309,1311,1328,1330,1434,1437,1447,1451,1458,1460,1477,1479,1602,1605,1615,1620,1624,1631,1633,1650,1652 'identifi':1071,1089,1245,1265,1395,1414,1564,1582 'import':17 'includ':932,1018 'inform':500 'initi':45,386 'instal':10,13 'instanceof':91,103,132 'insuffici':158 'int32':389,394,397,400,406,653,664,667,673,679,779,873,876,879,895 'integ':548 'inter':390,649,775 'interact':350,596,723 'interrupt':260,524,626,752 'invalid':154,609,654,658,736,780,1003,1232,1706 'is-i':832 'iso':1099,1275,1424,1592 'issu':365,1115,1291,1440,1608 'it-it':835 'ja':839 'ja-jp':838 'javascript':5,9,16,75,211,282,326,410,449,554,683,902,947 'jp':840 'json':488,959 'key':29,156 'ko':842 'ko-kr':841 'kr':843 'languag':527,783 'leg':1132,1308,1457,1630 'level':886 'limit':60,107,172 'list':356,602,729 'male':916 'maximum':395,662,665,871,874 'media':659,668 'menus':351,597,724 'messag':178,183,208,263,271,529,534,1047,1205,1381,1530 'milli':388,393,405,652,678,778,894 'minimum':398,671,877 'ms':547 'must':363 'mx':819 'name':660,669 'nb':845 'nb-no':844 'network':57,94 'new':23,122 'nl':848,849 'nl-nl':847 'npm':12 'number':1180,1190,1356,1366,1505,1515,1678,1688 'object':210,251,262,266,269,276,281,490,511,526,528,532,543,553,901,1200,1212,1376,1525,1538 'occur':1106,1282,1431,1599 'ok':992 'omit':37 'option':201,249,319,376,442,509,639,768 'paramet':471,484,508,562,1224,1551 'pars':958,981 'partial':539,1054,1540 'particip':267 'pass':354,483,600,727 'payload':476,737,767,781,880,910,983,1061 'permiss':159 'pl':851,852 'pl-pl':850 'place':1184,1360,1509,1682 'play':580,615,709,741 'playback':623 'post':195,243,313,370,436,501,633,759 'premium':889 'process.env':26 'product':73,946 'promis':123 'prompt':622,748 'properti':563 'provid':1225,1552 'pt':854,857,858 'pt-br':853 'pt-pt':856 'r':124,126 'rate':59,106,171 'raw':955 'receiv':632,758,985,1174,1350,1499,1672,1698 'reflect':1233,1713 'req':966 'req.body.tostring':973 'req.headers':975 'request':475,931 'requir':146,507,565,589,716,765 'res':967 'res.status':989,1000 'resourc':161,1076,1093,1250,1269,1400,1418,1569,1586 'respons':213,284,328,412,451,545,556,685,904 'response.data':225,296,340,424,463,570,697,918 'result':78,227,301,342,426,465,540,575,699,920,1055,1214,1405,1537,1541 'retri':99,110,118,173 'retry-aft':117 'retryaft':115,127 'return':226,297,341,425,464,571,698,919 'ro':860,861 'ro-ro':859 'ru':863,864 'ru-ru':862 'say':911 'schema':489 'se':867 'send':270,533,538,991,1002 'sent':1010 'servic':885 'session':1151,1161,1327,1337,1476,1486,1649,1659 'set':261,280,525,552,900 'settimeout':125 'setup':15 'shown':47 'sign':926 'signal':347,591,630,718,756 'signatur':935,944,976,1004,1025,1030 'sip':1182,1192,1358,1368,1507,1517,1680,1690 'skill' 'skill-telnyx-voice-gather-javascript' 'source-team-telnyx' 'speak':703 'speech':520,707,749 'ssml':884 'start':187,229,232 'state':203,253,321,378,444,513,644,770,1171,1173,1347,1349,1496,1498,1669,1671 'stop':303,306,429,430 'string':204,207,228,254,257,259,278,302,322,325,343,379,382,385,403,409,427,445,448,466,514,517,521,523,550,576,642,645,648,657,661,670,676,682,700,771,774,782,892,898,921,1110,1123,1134,1153,1172,1179,1188,1286,1299,1310,1329,1348,1355,1364,1435,1448,1459,1478,1497,1504,1513,1603,1616,1632,1651,1670,1677,1686,1696 'sv':866 'sv-se':865 'symbol':1702 'telnyx':2,6,14,18,20,24,27,925,934,939,1020,1024,1124,1300,1449,1622 'telnyx-signature-ed25519':933,1023 'telnyx-timestamp':938,1019 'telnyx-voice-gather-javascript':1 'telnyx.apiconnectionerror':92 'telnyx.apierror':133 'telnyx.ratelimiterror':104 'termin':401,674,890 'text':85,705,883 'time':1098,1274,1423,1591 'timeout':387,392,404,546,651,677,777,893,1712 'timestamp':940,1021 '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':869,870 'tr-tr':868 'transcript':275,542 'tri':76,666,875,968 'type':567,881,963,988,1065,1068,1073,1078,1082,1091,1220,1239,1242,1247,1252,1258,1267,1389,1392,1397,1402,1407,1416,1547,1558,1561,1566,1571,1575,1584 'uniqu':1138,1157,1314,1333,1463,1482,1636,1655 'updat':273,536,1049,1256 'uri':1183,1193,1359,1369,1508,1518,1681,1691 'url':611,641,656,1015 'us':813,822 'use':468,477,578,702,954,1032,1113,1127,1145,1165,1289,1303,1321,1341,1438,1452,1470,1490,1606,1625,1643,1663 'user':544 'uuid':300,574,1088,1264,1413,1581 'v3':216,287,331,415,454,688 'valid':62,143,165,358,407,604,680,731,896,977,1231,1705 'verif':924,997,1031 'verifi':943,1035 'via':1117,1293,1442,1610 'voic':3,7,277,279,479,493,549,551,766,899,915 'wait':108 'webhook':240,434,922,923,927,950,982,996,1007,1014,1017,1060,1148,1168,1324,1344,1473,1493,1646,1666 'wls':807","prices":[{"id":"e3de1493-889e-409d-8764-142f5abb86b0","listingId":"7009dfb0-c789-4cb5-acc9-dfe90e29f093","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:26.475Z"}],"sources":[{"listingId":"7009dfb0-c789-4cb5-acc9-dfe90e29f093","source":"github","sourceId":"team-telnyx/ai/telnyx-voice-gather-javascript","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-gather-javascript","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:26.475Z","lastSeenAt":"2026-04-22T00:54:52.697Z"}],"details":{"listingId":"7009dfb0-c789-4cb5-acc9-dfe90e29f093","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-voice-gather-javascript","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":"36187a045eda6164ae6ae31dcb6ebe2d01e5157d","skill_md_path":"skills/telnyx-voice-gather-javascript/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-gather-javascript"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-voice-gather-javascript","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-voice-gather-javascript"},"updatedAt":"2026-04-22T00:54:52.697Z"}}