Loading...
Loading...
Configure voicemail, voice channels, and emergency (E911) services for your phone numbers. This skill provides JavaScript SDK examples.
npx skill4agent add team-telnyx/skills telnyx-numbers-services-javascriptnpm install telnyximport Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});clienttry {
const result = await client.messages.send({ to: '+13125550001', from: '+13125550002', text: 'Hello' });
} catch (err) {
if (err instanceof Telnyx.APIConnectionError) {
console.error('Network error — check connectivity and retry');
} else if (err instanceof Telnyx.RateLimitError) {
// 429: rate limited — wait and retry with exponential backoff
const retryAfter = err.headers?.['retry-after'] || 1;
await new Promise(r => setTimeout(r, retryAfter * 1000));
} else if (err instanceof Telnyx.APIError) {
console.error(`API error ${err.status}: ${err.message}`);
if (err.status === 422) {
console.error('Validation error — check required fields and formats');
}
}
}401403404422429for await (const item of result) { ... }GET /channel_zones// Automatically fetches more pages as needed.
for await (const channelZoneListResponse of client.channelZones.list()) {
console.log(channelZoneListResponse.id);
}channelscountriescreated_atidnamerecord_typeupdated_atPUT /channel_zones/{channel_zone_id}channelsconst channelZone = await client.channelZones.update('channel_zone_id', { channels: 0 });
console.log(channelZone.id);channelscountriescreated_atidnamerecord_typeupdated_atGET /dynamic_emergency_addresses// Automatically fetches more pages as needed.
for await (const dynamicEmergencyAddress of client.dynamicEmergencyAddresses.list()) {
console.log(dynamicEmergencyAddress.id);
}administrative_areacountry_codecreated_atextended_addresshouse_numberhouse_suffixidlocalitypostal_coderecord_typesip_geolocation_idstatusstreet_namestreet_post_directionalstreet_pre_directionalstreet_suffixupdated_atPOST /dynamic_emergency_addresseshouse_numberstreet_namelocalityadministrative_areapostal_codecountry_codecreated_atextended_addresshouse_suffixidrecord_typesip_geolocation_idstatusstreet_post_directionalstreet_pre_directionalstreet_suffixupdated_atconst dynamicEmergencyAddress = await client.dynamicEmergencyAddresses.create({
administrative_area: 'TX',
country_code: 'US',
house_number: '600',
locality: 'Austin',
postal_code: '78701',
street_name: 'Congress',
});
console.log(dynamicEmergencyAddress.data);administrative_areacountry_codecreated_atextended_addresshouse_numberhouse_suffixidlocalitypostal_coderecord_typesip_geolocation_idstatusstreet_namestreet_post_directionalstreet_pre_directionalstreet_suffixupdated_atGET /dynamic_emergency_addresses/{id}const dynamicEmergencyAddress = await client.dynamicEmergencyAddresses.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(dynamicEmergencyAddress.data);administrative_areacountry_codecreated_atextended_addresshouse_numberhouse_suffixidlocalitypostal_coderecord_typesip_geolocation_idstatusstreet_namestreet_post_directionalstreet_pre_directionalstreet_suffixupdated_atDELETE /dynamic_emergency_addresses/{id}const dynamicEmergencyAddress = await client.dynamicEmergencyAddresses.delete(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(dynamicEmergencyAddress.data);administrative_areacountry_codecreated_atextended_addresshouse_numberhouse_suffixidlocalitypostal_coderecord_typesip_geolocation_idstatusstreet_namestreet_post_directionalstreet_pre_directionalstreet_suffixupdated_atGET /dynamic_emergency_endpoints// Automatically fetches more pages as needed.
for await (const dynamicEmergencyEndpoint of client.dynamicEmergencyEndpoints.list()) {
console.log(dynamicEmergencyEndpoint.dynamic_emergency_address_id);
}callback_numbercaller_namecreated_atdynamic_emergency_address_ididrecord_typesip_from_idstatusupdated_atPOST /dynamic_emergency_endpointsdynamic_emergency_address_idcallback_numbercaller_namecreated_atidrecord_typesip_from_idstatusupdated_atconst dynamicEmergencyEndpoint = await client.dynamicEmergencyEndpoints.create({
callback_number: '+13125550000',
caller_name: 'Jane Doe Desk Phone',
dynamic_emergency_address_id: '0ccc7b54-4df3-4bca-a65a-3da1ecc777f0',
});
console.log(dynamicEmergencyEndpoint.data);callback_numbercaller_namecreated_atdynamic_emergency_address_ididrecord_typesip_from_idstatusupdated_atGET /dynamic_emergency_endpoints/{id}const dynamicEmergencyEndpoint = await client.dynamicEmergencyEndpoints.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(dynamicEmergencyEndpoint.data);callback_numbercaller_namecreated_atdynamic_emergency_address_ididrecord_typesip_from_idstatusupdated_atDELETE /dynamic_emergency_endpoints/{id}const dynamicEmergencyEndpoint = await client.dynamicEmergencyEndpoints.delete(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(dynamicEmergencyEndpoint.data);callback_numbercaller_namecreated_atdynamic_emergency_address_ididrecord_typesip_from_idstatusupdated_atGET /inbound_channelsconst inboundChannels = await client.inboundChannels.list();
console.log(inboundChannels.data);channelsrecord_typePATCH /inbound_channelschannelsconst inboundChannel = await client.inboundChannels.update({ channels: 7 });
console.log(inboundChannel.data);channelsrecord_typeGET /listconst response = await client.list.retrieveAll();
console.log(response.data);number_of_channelsnumberszone_idzone_nameGET /list/{channel_zone_id}const response = await client.list.retrieveByZone('channel_zone_id');
console.log(response.data);number_of_channelsnumberszone_idzone_nameGET /phone_numbers/{phone_number_id}/voicemailconst voicemail = await client.phoneNumbers.voicemail.retrieve('123455678900');
console.log(voicemail.data);enabledpinPOST /phone_numbers/{phone_number_id}/voicemailenabledpinconst voicemail = await client.phoneNumbers.voicemail.create('123455678900');
console.log(voicemail.data);enabledpinPATCH /phone_numbers/{phone_number_id}/voicemailenabledpinconst voicemail = await client.phoneNumbers.voicemail.update('123455678900');
console.log(voicemail.data);enabledpin