<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Packet Exchange</title>
    <description>The latest articles on DEV Community by Packet Exchange (@packetexchange_dev).</description>
    <link>https://dev.to/packetexchange_dev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4243238%2F73f90062-2457-483e-b371-fc48c0d90265.jpg</url>
      <title>DEV Community: Packet Exchange</title>
      <link>https://dev.to/packetexchange_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/packetexchange_dev"/>
    <language>en</language>
    <item>
      <title>I stopped juggling five telecom dashboards. One API key for SMS, voice, numbers and voice agents.</title>
      <dc:creator>Packet Exchange</dc:creator>
      <pubDate>Fri, 13 Nov 2026 16:23:10 +0000</pubDate>
      <link>https://dev.to/packetexchange_dev/i-stopped-juggling-five-telecom-dashboards-one-api-key-for-sms-voice-numbers-and-voice-agents-10a1</link>
      <guid>https://dev.to/packetexchange_dev/i-stopped-juggling-five-telecom-dashboards-one-api-key-for-sms-voice-numbers-and-voice-agents-10a1</guid>
      <description>&lt;p&gt;Disclosure: this is about Packet Exchange, which I work on.&lt;/p&gt;

&lt;p&gt;Most apps that talk to phones end up with a pile of accounts: one for SMS, one for numbers, one for voice, one for OTP, and now one for AI voice agents. Each has its own keys, its own billing and its own idea of what a "message" is.&lt;/p&gt;

&lt;p&gt;What one key changes in practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One set of credentials&lt;/strong&gt; to rotate and keep out of your repo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One place to look&lt;/strong&gt; when a customer says "I never got the text" or "the call dropped".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One bill&lt;/strong&gt; instead of five small ones nobody owns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice agents that use the same numbers&lt;/strong&gt; as your SMS and calls, so a customer who texts you can be called back from the same number.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We also built a telecom AI on top of our data library. Ask it the questions that normally mean a week of forum digging: which route works for a country, why a number is being flagged, what delivery looks like where.&lt;/p&gt;

&lt;p&gt;Try it with a free account: &lt;a href="https://packetexchange.io/register?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=one_api_key" rel="noopener noreferrer"&gt;https://packetexchange.io/register?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=one_api_key&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How many telecom accounts does your stack have right now?&lt;/p&gt;

</description>
      <category>api</category>
      <category>devops</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
    <item>
      <title>OTP by SMS: the checklist I wish I had before launch day</title>
      <dc:creator>Packet Exchange</dc:creator>
      <pubDate>Fri, 13 Nov 2026 16:14:10 +0000</pubDate>
      <link>https://dev.to/packetexchange_dev/otp-by-sms-the-checklist-i-wish-i-had-before-launch-day-k8d</link>
      <guid>https://dev.to/packetexchange_dev/otp-by-sms-the-checklist-i-wish-i-had-before-launch-day-k8d</guid>
      <description>&lt;p&gt;Disclosure: I work on Packet Exchange. The checklist works whatever provider you pick.&lt;/p&gt;

&lt;p&gt;SMS one-time codes look simple: generate six digits, send a text, compare. Then real users arrive.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Expire codes fast.&lt;/strong&gt; A few minutes is plenty. Old codes are a gift to anyone guessing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limit attempts per code and per number.&lt;/strong&gt; Without a cap, a script will walk through every six digit code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limit sends per number and per IP.&lt;/strong&gt; Otherwise someone uses your signup form to send thousands of paid texts to premium numbers (SMS pumping). This one costs real money.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store a hash, not the code.&lt;/strong&gt; Same reasoning as passwords.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make resend wait.&lt;/strong&gt; A short countdown before resend cuts duplicate sends and support tickets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan for texts that never arrive.&lt;/strong&gt; Some countries and carriers filter messages. Offer a voice call fallback that reads the code out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log delivery status, not just "sent".&lt;/strong&gt; Sent means it left you. Delivered means it reached the phone. Watch the gap between the two per country.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep the message short and branded.&lt;/strong&gt; "Your Acme code is 482913" beats a paragraph, and carriers trust it more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where Packet Exchange fits
&lt;/h2&gt;

&lt;p&gt;Verification, SMS and voice fallback come from one API key, so the code path and the fallback do not live in two dashboards. Free account: &lt;a href="https://packetexchange.io/register?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=otp_checklist" rel="noopener noreferrer"&gt;https://packetexchange.io/register?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=otp_checklist&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which of these bit you in production?&lt;/p&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>api</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Your voice agent works on localhost. Here is what breaks when it meets a real phone line.</title>
      <dc:creator>Packet Exchange</dc:creator>
      <pubDate>Fri, 13 Nov 2026 16:13:41 +0000</pubDate>
      <link>https://dev.to/packetexchange_dev/your-voice-agent-works-on-localhost-here-is-what-breaks-when-it-meets-a-real-phone-line-41a2</link>
      <guid>https://dev.to/packetexchange_dev/your-voice-agent-works-on-localhost-here-is-what-breaks-when-it-meets-a-real-phone-line-41a2</guid>
      <description>&lt;p&gt;Disclosure up front: I work on Packet Exchange, a telecom API. This post is mostly the stuff we see go wrong, whoever you build with.&lt;/p&gt;

&lt;p&gt;Getting a voice agent to talk in a browser takes an afternoon. Getting it to answer a real phone number takes a week, and almost none of that week is AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Latency you never saw in the demo
&lt;/h2&gt;

&lt;p&gt;In the browser your audio goes straight to your model. On a phone line it goes caller, carrier, your telecom provider, your server, the model, and back. Measure the full round trip from a real handset, not from your laptop. If the agent waits too long before speaking, callers talk over it and the conversation falls apart.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Barge-in
&lt;/h2&gt;

&lt;p&gt;People interrupt. Your agent needs to stop speaking the moment the caller does, or it sounds like a recording. Test this on a real call with someone who interrupts on purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Numbers are not just numbers
&lt;/h2&gt;

&lt;p&gt;The number your agent calls from decides whether the call is answered. Local numbers get picked up more than unknown ones. Numbers that make lots of short calls get labelled as spam by the carriers. Plan which numbers you use before you scale, not after.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Silence and dead air
&lt;/h2&gt;

&lt;p&gt;Phone lines have silence detection, voicemail and hold music. Your agent has to know the difference between a person thinking and a voicemail greeting, or it will happily pitch an answering machine for two minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Logs you can actually read
&lt;/h2&gt;

&lt;p&gt;When a call goes wrong you need the call record and the transcript side by side. Set that up on day one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Packet Exchange fits
&lt;/h2&gt;

&lt;p&gt;We give you the phone side in one place: numbers, voice calls, SMS and AI voice agents behind one API key, so the agent and the line are not two separate projects. If you want to try it, there is a free account here: &lt;a href="https://packetexchange.io/register?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=voice_agent_phone_line" rel="noopener noreferrer"&gt;https://packetexchange.io/register?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=voice_agent_phone_line&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What broke first when you moved your agent onto a real number?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>voice</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
