{"id":"e8bed846-2b5b-493c-8085-ea3fa35e6121","shortId":"9zJcPc","kind":"skill","title":"telnyx-voice-gather-go","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Voice Gather - Go\n\n## Installation\n\n```bash\ngo get github.com/team-telnyx/telnyx-go\n```\n\n## Setup\n\n```go\nimport (\n  \"context\"\n  \"fmt\"\n  \"os\"\n\n  \"github.com/team-telnyx/telnyx-go\"\n  \"github.com/team-telnyx/telnyx-go/option\"\n)\n\nclient := telnyx.NewClient(\n  option.WithAPIKey(os.Getenv(\"TELNYX_API_KEY\")),\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```go\nimport \"errors\"\n\nresult, err := client.Messages.Send(ctx, params)\nif err != nil {\n  var apiErr *telnyx.Error\n  if errors.As(err, &apiErr) {\n    switch apiErr.StatusCode {\n    case 422:\n      fmt.Println(\"Validation error — check required fields and formats\")\n    case 429:\n      // Rate limited — wait and retry with exponential backoff\n      fmt.Println(\"Rate limited, retrying...\")\n    default:\n      fmt.Printf(\"API error %d: %s\\n\", apiErr.StatusCode, apiErr.Error())\n    }\n  } else {\n    fmt.Println(\"Network error — check connectivity and retry\")\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```go\n\tresponse, err := client.Calls.Actions.AddAIAssistantMessages(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionAddAIAssistantMessagesParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Calls.Actions.StartAIAssistant(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStartAIAssistantParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Calls.Actions.StopAIAssistant(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStopAIAssistantParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Calls.Actions.Gather(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionGatherParams{\n\t\tMinimumDigits: 1,\n\t\tMaximumDigits: 4,\n\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Calls.Actions.StopGather(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionStopGatherParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Calls.Actions.GatherUsingAI(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionGatherUsingAIParams{\n\t\t\tParameters: map[string]any{\n\t\t\t\t\"properties\": \"bar\",\n\t\t\t\t\"required\":   \"bar\",\n\t\t\t\t\"type\":       \"bar\",\n\t\t\t},\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Calls.Actions.GatherUsingAudio(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionGatherUsingAudioParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Calls.Actions.GatherUsingSpeak(\n\t\tcontext.Background(),\n\t\t\"call_control_id\",\n\t\ttelnyx.CallActionGatherUsingSpeakParams{\n\t\t\tPayload: \"say this on call\",\n\t\t\tVoice:   \"male\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n// In your webhook handler:\nfunc handleWebhook(w http.ResponseWriter, r *http.Request) {\n  body, _ := io.ReadAll(r.Body)\n  event, err := client.Webhooks.Unwrap(body, r.Header)\n  if err != nil {\n    http.Error(w, \"Invalid signature\", http.StatusBadRequest)\n    return\n  }\n  // Signature valid — event is the parsed webhook payload\n  fmt.Println(\"Received event:\", event.Data.EventType)\n  w.WriteHeader(http.StatusOK)\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","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-voice-gather-go","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-go","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 (14,168 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.521Z","embedding":null,"createdAt":"2026-04-18T22:08:24.922Z","updatedAt":"2026-04-22T00:54:52.521Z","lastSeenAt":"2026-04-22T00:54:52.521Z","tsv":"'/actions/ai_assistant_add_messages':184 '/actions/ai_assistant_start':235 '/actions/ai_assistant_stop':308 '/actions/gather':368 '/actions/gather_stop':441 '/actions/gather_using_ai':509 '/actions/gather_using_audio':652 '/actions/gather_using_speak':781 '/calls':180,231,304,364,437,505,648,777 '/team-telnyx/telnyx-go':16,25 '/team-telnyx/telnyx-go/option':28 '1':413 '4':415 '401':66,137 '403':141 '404':144 '422':62,94,148 '429':59,104,154 '8601':1109,1285,1434,1602 'add':161,166 'ai':164,174,217,221,294,298,472,1049,1054,1061,1218,1226,1394,1543,1553 'along':620,750 'alreadi':42 'alway':67,967 'amd':1720 'answer':354 'api':34,50,119,139,1129,1305,1454,1622 'apierr':85,90 'apierr.error':125 'apierr.statuscode':92,124 'app':1628 'arb':802 'array':193,252,255,534,1208,1384,1533 'assist':165,175,218,222,237,295,299,483,497,513 'assum':39 'attempt':499 'au':817 'audio':593,596,624,654,669 'authent':64 'back':630,759 'backoff':112,160 'bar':571,573,575 'bash':11 'basic':905 'begin':633,762 'bodi':983,989 'boolean':261,540,544 'br':872 'build':342,609,739 'ca':842 'call':51,178,181,200,225,232,274,302,305,321,365,408,438,454,506,562,600,649,702,730,778,924,932,1048,1053,1060,1066,1120,1127,1139,1150,1169,1195,1205,1296,1303,1315,1326,1345,1371,1381,1445,1452,1464,1475,1494,1520,1530,1613,1620,1626,1637,1648,1667,1693,1703,1716 'call.ai_gather.ended':1089 'call.ai_gather.message':1263 'call.ai_gather.partial':1413 'call.conversation.ended':228 'call.conversation_insights.generated':229 'call.gather.ended':435,1582 'callaigatherend':1047,1072 'callaigathermessagehistoryupd':1052,1246 'callaigatherpartialresult':1059,1396 'callgatherend':1065,1565 'cancel':1718,1719 'case':93,103 'check':98,130,151 'client':29,40,186,239,310,370,443,515,657,786 'client.calls.actions.addaiassistantmessages':198 'client.calls.actions.gather':406 'client.calls.actions.gatherusingai':560 'client.calls.actions.gatherusingaudio':700 'client.calls.actions.gatherusingspeak':922 'client.calls.actions.startaiassistant':272 'client.calls.actions.stopaiassistant':319 'client.calls.actions.stopgather':452 'client.messages.send':78 'client.webhooks.unwrap':988,1042 'cmn':804 'cmn-cn':803 'cn':805 'code':72,136 'command':189,242,313,355,362,373,446,518,660,789,1125,1186,1237,1244,1301,1362,1450,1511,1564,1618,1684,1724 'common':134 'configur':1022 'connect':131,1134,1310,1459,1632 'context':20 'context.background':199,273,320,407,453,561,701,923 'control':182,201,233,275,306,322,366,409,439,455,507,563,650,703,779,925,1117,1128,1293,1304,1442,1453,1610,1621,1627 'convers':170,288,586 'convert':721 'correl':1156,1176,1332,1352,1481,1501,1654,1674 'ctx':79 'current':431 'cy':807 'cy-gb':806 'd':121 'da':810 'da-dk':809 'data.event':1086,1260,1410,1579 'data.id':1096,1272,1421,1589 'data.occurred':1103,1279,1428,1596 'data.payload.call':1116,1140,1159,1292,1316,1335,1441,1465,1484,1609,1638,1657 'data.payload.client':1179,1355,1504,1677 'data.payload.connection':1130,1306,1455,1623 'data.payload.digits':1704 'data.payload.from':1187,1363,1512,1685 'data.payload.message':1206,1382,1531 'data.payload.partial':1545 'data.payload.result':1220 'data.payload.status':1238,1712 'data.payload.to':1196,1372,1521,1694 'data.record':1076,1250,1400,1569 'date':1106,1282,1431,1599 'date-tim':1105,1281,1430,1598 'datetim':1110,1286,1435,1603 'de':813,814 'de-d':812 'default':117 'defin':475 'deliv':1095,1271,1420,1588 'depend':1230,1557 'describ':488 'descript':1046,1075,1249,1399,1568 'destin':1198,1374,1523,1696 'digit':352,384,389,392,395,401,619,664,677,686,689,695,749,793,889,895,908,914,1709 'dk':811 'dtmf':339,604,643,734,772,1708 'ed25519':954,961,1035,1038 'els':126 'en':816,819,822,826,829 'en-au':815 'en-gb':818 'en-gb-wl':821 'en-in':825 'en-us':828 'end':522,1051,1068,1245,1725 'enum':801,899,904,1078,1088,1239,1252,1262,1402,1412,1571,1581,1713 'err':77,82,89,197,205,208,271,279,282,318,326,329,405,417,420,451,459,462,559,577,580,699,707,710,921,936,939,987,992 'error':47,56,61,65,69,75,97,120,129,135,150 'errors.as':88 'es':832,833,835,838 'es-':831 'es-mx':834 'es-us':837 'event':986,1002,1010,1017,1045,1079,1093,1114,1158,1178,1253,1269,1290,1334,1354,1403,1418,1439,1483,1503,1572,1586,1607,1656,1676 'event.data.eventtype':1011 'exampl':37 'exchang':1215,1391,1540 'expect':226,433 'exponenti':111,159 'fail':53 'field':100,152,1071,1073,1247,1397,1566 'file':597 'fmt':21 'fmt.printf':118,209,283,330,421,463,581,711,940 'fmt.println':95,113,127,1008 'follow':1015 'format':102,153 'former':1630 'found':147 'fr':841,844,845 'fr-ca':840 'fr-fr':843 'func':977 'gather':4,8,337,338,361,376,428,432,470,473,501,521,591,607,718,737,1050,1055,1062,1067,1219,1227,1395,1544,1554 'gb':808,820,823 'get':13 'github.com':15,24,27 'github.com/team-telnyx/telnyx-go':14,23 'github.com/team-telnyx/telnyx-go/option':26 'go':5,9,12,18,73,195,269,316,403,449,557,697,919,972 'greet':245,525 'handl':48,68 'handler':976 'handlewebhook':978 'hangup':1717 'header':966,1036 'hi':847 'hi-in':846 'histori':251,259,533,538,1057,1207,1211,1264,1383,1387,1532,1536 'http.error':994 'http.request':982 'http.responsewriter':980 'http.statusbadrequest':998 'http.statusok':1013 'id':183,190,202,234,243,276,289,307,314,323,367,374,377,410,440,447,456,508,519,564,587,651,661,704,780,790,926,1118,1121,1131,1135,1142,1144,1161,1163,1294,1297,1307,1311,1318,1320,1337,1339,1443,1446,1456,1460,1467,1469,1486,1488,1611,1614,1624,1629,1633,1640,1642,1659,1661 'identifi':1080,1098,1254,1274,1404,1423,1573,1591 'import':19,74 'includ':957,1027 'inform':503 'initi':43,379 'instal':10 'insuffici':142 'int32':382,387,390,393,399,667,678,681,687,693,796,890,893,896,912 'integ':551 'inter':383,663,792 'interact':343,610,740 'interrupt':247,527,640,769 'invalid':138,623,668,672,753,797,996,1241,1715 'io.readall':984 'is-i':849 'iso':1108,1284,1433,1601 'issu':358,1124,1300,1449,1617 'it-it':852 'ja':856 'ja-jp':855 'jp':857 'json':491 'key':35,140 'ko':859 'ko-kr':858 'kr':860 'languag':530,800 'leg':1141,1317,1466,1639 'level':903 'limit':58,106,115,156 'list':349,616,746 'log.fatal':207,281,328,419,461,579,709,938 'male':934 'map':567 'maximum':388,676,679,888,891 'maximumdigit':414 'media':673,682 'menus':344,611,741 'messag':162,167,192,250,258,532,537,1056,1214,1390,1539 'milli':381,386,398,666,692,795,911 'minimum':391,685,894 'minimumdigit':412 'ms':550 'must':356 'mx':836 'n':123,211,285,332,423,465,583,713,942 'name':674,683 'nb':862 'nb-no':861 'network':55,128 'nil':83,206,280,327,418,460,578,708,937,993 'nl':865,866 'nl-nl':864 'number':1189,1199,1365,1375,1514,1524,1687,1697 'object':194,238,249,253,256,263,268,493,514,529,531,535,546,556,918,1209,1221,1385,1534,1547 'occur':1115,1291,1440,1608 'option':185,236,309,369,442,512,653,785 'option.withapikey':31 'os':22 'os.getenv':32 'param':80 'paramet':474,487,511,566,1233,1560 'pars':1005 'partial':542,1063,1549 'particip':254 'pass':347,486,614,744 'payload':479,754,784,798,897,928,1007,1070 'permiss':143 'pl':868,869 'pl-pl':867 'place':1193,1369,1518,1691 'play':594,629,726,758 'playback':637 'post':179,230,303,363,436,504,647,776 'premium':906 'product':71,971 'prompt':636,765 'properti':570 'provid':1234,1561 'pt':871,874,875 'pt-br':870 'pt-pt':873 'r':981 'r.body':985 'r.header':990 'rate':57,105,114,155 'receiv':646,775,1009,1183,1359,1508,1681,1707 'reflect':1242,1722 'request':478,956 'requir':99,510,572,603,733,782 'resourc':145,1085,1102,1259,1278,1409,1427,1578,1595 'respons':196,270,317,404,450,548,558,698,920 'response.data':212,286,333,424,466,584,714,943 'result':76,214,291,335,426,468,543,589,716,945,1064,1223,1414,1546,1550 'retri':109,116,133,157 'return':213,287,334,425,467,585,715,944,999 'ro':877,878 'ro-ro':876 'ru':880,881 'ru-ru':879 'say':929 'schema':492 'se':884 'send':257,536,541 'sent':1019 'servic':902 'session':1160,1170,1336,1346,1485,1495,1658,1668 'set':248,267,528,555,917 'setup':17 'shown':45 'sign':951 'signal':340,605,644,735,773 'signatur':960,969,997,1000,1034,1039 'sip':1191,1201,1367,1377,1516,1526,1689,1699 'skill' 'skill-telnyx-voice-gather-go' 'source-team-telnyx' 'speak':720 'speech':523,724,766 'ssml':901 'start':171,216,219 'state':187,240,311,371,444,516,658,787,1180,1182,1356,1358,1505,1507,1678,1680 'stop':293,296,429,430 'string':188,191,215,241,244,246,265,292,312,315,336,372,375,378,396,402,427,445,448,469,517,520,524,526,553,568,590,656,659,662,671,675,684,690,696,717,788,791,799,909,915,946,1119,1132,1143,1162,1181,1188,1197,1295,1308,1319,1338,1357,1364,1373,1444,1457,1468,1487,1506,1513,1522,1612,1625,1641,1660,1679,1686,1695,1705 'sv':883 'sv-se':882 'switch':91 'symbol':1711 'telnyx':2,6,33,950,959,964,1029,1033,1133,1309,1458,1631 'telnyx-signature-ed25519':958,1032 'telnyx-timestamp':963,1028 'telnyx-voice-gather-go':1 'telnyx.callactionaddaiassistantmessagesparams':203 'telnyx.callactiongatherparams':411 'telnyx.callactiongatherusingaiparams':565 'telnyx.callactiongatherusingaudioparams':705 'telnyx.callactiongatherusingspeakparams':927 'telnyx.callactionstartaiassistantparams':277 'telnyx.callactionstopaiassistantparams':324 'telnyx.callactionstopgatherparams':457 'telnyx.error':86 'telnyx.newclient':30 'termin':394,688,907 'text':722,900 'time':1107,1283,1432,1600 'timeout':380,385,397,549,665,691,794,910,1721 'timestamp':965,1030 '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':886,887 'tr-tr':885 'transcript':262,545 'tri':680,892 'type':574,898,1074,1077,1082,1087,1091,1100,1229,1248,1251,1256,1261,1267,1276,1398,1401,1406,1411,1416,1425,1556,1567,1570,1575,1580,1584,1593 'uniqu':1147,1166,1323,1342,1472,1491,1645,1664 'updat':260,539,1058,1265 'uri':1192,1202,1368,1378,1517,1527,1690,1700 'url':625,655,670,1024 'us':830,839 'use':471,480,592,719,1041,1122,1136,1154,1174,1298,1312,1330,1350,1447,1461,1479,1499,1615,1634,1652,1672 'user':547 'uuid':290,588,1097,1273,1422,1590 'v':210,284,331,422,464,582,712,941 'valid':60,96,149,351,400,618,694,748,913,1001,1240,1714 'var':84 'verif':949,1040 'verifi':968,1044 'via':1126,1302,1451,1619 'voic':3,7,264,266,482,496,552,554,783,916,933 'w':979,995 'w.writeheader':1012 'wait':107 'webhook':227,434,947,948,952,975,1006,1016,1023,1026,1069,1157,1177,1333,1353,1482,1502,1655,1675 'wls':824","prices":[{"id":"65528cf4-d319-45d7-addb-0c9aa9e3eae1","listingId":"e8bed846-2b5b-493c-8085-ea3fa35e6121","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:24.922Z"}],"sources":[{"listingId":"e8bed846-2b5b-493c-8085-ea3fa35e6121","source":"github","sourceId":"team-telnyx/ai/telnyx-voice-gather-go","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-gather-go","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:24.922Z","lastSeenAt":"2026-04-22T00:54:52.521Z"}],"details":{"listingId":"e8bed846-2b5b-493c-8085-ea3fa35e6121","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-voice-gather-go","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":"6d03bd636f07db1d1d0da7882f917aaebc944d31","skill_md_path":"skills/telnyx-voice-gather-go/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-voice-gather-go"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-voice-gather-go","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-voice-gather-go"},"updatedAt":"2026-04-22T00:54:52.521Z"}}