<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Blogul SMSTunnel</title>
    <link>https://smstunnel.io/ro/blog/</link>
    <description>Ghiduri pentru mesaje trimise din software-ul tău, prin telefonul tău Android, de pe numărul tău.</description>
    <language>ro</language>
    <lastBuildDate>Mon, 09 Nov 2026 09:00:00 GMT</lastBuildDate>
    <atom:link href="https://smstunnel.io/ro/blog/rss.xml" rel="self" type="application/rss+xml" />
    <image>
      <url>https://smstunnel.io/android-chrome-192x192.png</url>
      <title>Blogul SMSTunnel</title>
      <link>https://smstunnel.io/ro/blog/</link>
    </image>
    <item>
      <title>Aplicația desktop SMSTunnel e aici: mesajele tale pe computer</title>
      <link>https://smstunnel.io/ro/blog/aplicatia-desktop/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/aplicatia-desktop/</guid>
      <pubDate>Tue, 03 Nov 2026 09:30:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>Aplicația desktop</category>
      <category>Windows</category>
      <category>Linux</category>
      <category>Confidențialitate</category>
      <description>Aplicația SMSTunnel gratuită pentru Windows și Linux: scrii și citești mesajele pe computer, iar telefonul tău Android le trimite de pe numărul tău.</description>
      <content:encoded><![CDATA[<p>SMSTunnel pentru Windows și Linux e gata și e gratuit. Îți aduce mesajele pe computer: le citești și le scrii de la tastatură, iar telefonul tău Android trimite fiecare mesaj de pe numărul tău. Cu sincronizarea pornită în aplicația de pe telefon, mesajele primite de telefon apar și pe computer, fiecare cu o notificare.</p>
<p>Până acum, mesajele de pe computer le scriai în <a href="https://dashboard.smstunnel.io/">dashboard</a>, într-un tab din browser. Aplicația desktop face același lucru, dar ca o aplicație adevărată: stă în zona de notificare, poate porni odată cu computerul și te anunță când sosește un mesaj.</p>
<p><img src="https://smstunnel.io/desktop/screenshot-ro-light.webp" alt="Aplicația desktop SMSTunnel: conversațiile în stânga, cu telefoanele tale și starea lor dedesubt, iar în dreapta o conversație cu mesaje trimise și primite" loading="lazy" decoding="async" width="1280" height="800"></p>
<h2 id="ce-face-aplicația-desktop">Ce face aplicația desktop</h2>
<ul>
<li><strong>Conversațiile tale, după număr.</strong> Cu căutare, marcaj pentru mesajele necitite și starea fiecărui mesaj: trimis, livrat sau netrimis.</li>
<li><strong>Scrii, iar telefonul tău trimite.</strong> Scrii pe computer, iar telefonul tău trimite mesajul de pe numărul tău, așa că oamenii văd un număr cunoscut și îți pot răspunde. Fiecare mesaj merge la un singur număr.</li>
<li><strong>Notificări.</strong> Cu sincronizarea pornită în aplicația de pe telefon, fiecare mesaj primit de telefon apare ca notificare, cu textul lui sau doar „Mesaj nou”.</li>
<li><strong>Zona de notificare.</strong> Închizi fereastra, iar SMSTunnel rămâne pornit, ca mesajele noi să apară în continuare. Poate porni odată cu computerul.</li>
<li><strong>Toate telefoanele tale.</strong> Vezi care sunt conectate și alegi care trimite. Pe un telefon cu două SIM-uri, răspunsul pleacă de pe SIM-ul care a primit mesajul.</li>
<li><strong>Actualizări.</strong> Se actualizează singur și instalează numai actualizări semnate de SMSTunnel.</li>
<li><strong>Luminos sau întunecat, în română sau în engleză,</strong> ca pe computerul tău.</li>
</ul>
<h2 id="cum-începi">Cum începi</h2>
<ol>
<li>Instalează aplicația SMSTunnel pe telefonul tău Android din <a href="https://play.google.com/store/apps/details?id=io.smstunnel.app">Google Play</a> și intră cu contul tău SMSTunnel. Ține telefonul online, cu aplicația pornită: telefonul e cel care trimite mesajele.</li>
<li><a href="https://smstunnel.io/ro/desktop/">Descarcă aplicația desktop</a> pentru Windows (10 sau 11, pe 64 de biți) sau Linux (AppImage, .deb sau .rpm) și instaleaz-o.</li>
<li>Deschide-o și intră cu același cont SMSTunnel. Telefonul tău apare singur.</li>
<li>Ca să vezi și mesajele primite de telefon, pornește în aplicația de pe telefon <strong>Setări › Mesaje primite › Sincronizează mesajele primite</strong>.</li>
</ol>
<p>Dacă intri cu Google sau Facebook, setează mai întâi o parolă în dashboard, la Account › Security, apoi intră pe computer cu emailul.</p>
<p>Pe Windows, cel mai simplu e din <a href="https://apps.microsoft.com/detail/9n4bmhrw6t7s">Microsoft Store</a>: SMSTunnel se instalează fără niciun avertisment, iar Microsoft Store îl ține la zi. Dacă folosești instalatorul de pe pagina de descărcare, prima dată când îl deschizi Windows poate spune că a protejat computerul: acel instalator nu e semnat încă cu un certificat de semnare a codului. Apasă <strong>Mai multe informații</strong> (More info), apoi <strong>Rulați oricum</strong> (Run anyway). <a href="https://smstunnel.io/ro/desktop/#windows">Pagina de descărcare</a> are detaliile și sumele de control cu care verifici fișierul descărcat.</p>
<h2 id="mesajele-tale-și-confidențialitatea">Mesajele tale și confidențialitatea</h2>
<p>Iată cum circulă azi mesajele, în aplicația desktop ca și în dashboard:</p>
<ul>
<li><strong>Mesajele pe care le scrii</strong> ajung prin contul tău SMSTunnel la telefon, iar telefonul le trimite.</li>
<li><strong>Mesajele primite de telefon</strong> ajung pe computer numai cât timp sincronizarea e pornită în aplicația de pe telefon. Se sincronizează doar mesajele care sosesc după ce o pornești, iar mesajele existente din telefon nu sunt citite niciodată.</li>
<li><strong>În contul tău,</strong> mesajele sunt păstrate în formă lizibilă, ca dashboard-ul și aplicația desktop să le poată afișa. Nu sunt criptate end-to-end.</li>
<li><strong>O excepție:</strong> lacătul de lângă caseta de text, „Criptează pentru telefonul meu”, criptează mesajul pe computer, așa că doar telefonul tău îl poate citi. smstunnel.io vede în continuare numărul și ora.</li>
<li><strong>Pe computer,</strong> aplicația nu păstrează mesaje. Intrarea în cont rămâne în depozitul de parole al sistemului (Windows Credential Manager sau portofelul de chei din Linux), parola nu e păstrată niciodată, iar aplicația nu are reclame, statistici sau urmărire.</li>
</ul>
<h3 id="în-curând-mesaje-private-end-to-end">În curând: mesaje private end-to-end</h3>
<p>Pregătim mesaje private end-to-end pentru aplicația desktop, în toate planurile. Mesajele tale vor putea fi citite doar pe telefon și pe computerele tale: smstunnel.io va păstra doar copii criptate, pe care nu le poate citi. Scriem aici când sunt gata.</p>
<p>Criptarea privește drumul prin SMSTunnel. Înainte să ajungă la telefonul tău și după ce telefonul îl trimite, un mesaj circulă prin rețeaua mobilă ca orice alt SMS.</p>
<p>Mesajele trimise de software-ul tău au deja propria opțiune: criptarea end-to-end, inclusă în toate planurile, prin care software-ul tău criptează fiecare mesaj pentru telefonul tău, iar SMSTunnel nu-l poate citi. Vezi <a href="https://smstunnel.io/ro/blog/sms-criptat-end-to-end/">articolul despre SMS-urile criptate end-to-end</a>.</p>
<h2 id="dashboard-ul-și-când-îl-alegi">Dashboard-ul și când îl alegi</h2>
<p>Dashboard-ul merge în orice browser și nu cere nimic instalat, inclusiv pe Mac, până apare versiunea pentru macOS. Aplicația desktop adaugă notificările, zona de notificare și pornirea odată cu computerul. Amândouă arată același cont și aceleași mesaje, așa că folosești ce ai la îndemână.</p>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="aplicația-desktop-e-gratuită">Aplicația desktop e gratuită?</h3>
<p>Da, pe Windows și pe Linux. Planul tău SMSTunnel stabilește câte mesaje poți trimite pe zi, iar operatorul tău mobil taxează fiecare mesaj ca pe orice SMS trimis de pe telefon.</p>
<h3 id="pe-ce-sisteme-merge">Pe ce sisteme merge?</h3>
<p>Pe Windows 10 și 11 (64 de biți), din Microsoft Store sau cu instalatorul de pe pagina de descărcare, și pe Linux de 64 de biți: un AppImage, un .deb pentru Ubuntu, Debian și Mint și un .rpm pentru Fedora și openSUSE. Versiunea pentru macOS vine mai târziu.</p>
<h3 id="poate-smstunnel-să-citească-mesajele-pe-care-le-primesc">Poate SMSTunnel să citească mesajele pe care le primesc?</h3>
<p>Mesajele sincronizate sunt păstrate în contul tău în formă lizibilă, ca dashboard-ul și aplicația să le poată afișa; încă nu sunt criptate end-to-end. Echipa noastră nu se uită la mesajele tale decât atunci când e nevoie ca să răspundă unei cereri de asistență trimise de tine sau ca să investigheze un abuz. Mesajele private end-to-end pentru aplicația desktop, pe care smstunnel.io nu le va putea citi, vin în curând, în toate planurile.</p>
<h3 id="mai-am-nevoie-de-telefon">Mai am nevoie de telefon?</h3>
<p>Da. Aplicația desktop citește și trimite mesaje prin telefonul tău, iar fiecare mesaj pleacă de pe numărul tău. Telefonul trebuie să fie online, cu aplicația SMSTunnel pornită; dacă e offline, mesajul așteaptă și pleacă atunci când telefonul revine, timp de cel mult 3 zile.</p>]]></content:encoded>
    </item>
    <item>
      <title>O aplicație, mulți clienți: fiecare trimite SMS de pe numărul lui</title>
      <link>https://smstunnel.io/ro/blog/sms-de-pe-numarul-fiecarui-client/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/sms-de-pe-numarul-fiecarui-client/</guid>
      <pubDate>Tue, 03 Nov 2026 09:00:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>Enterprise</category>
      <category>SDK</category>
      <description>Pe planul Enterprise, fiecare firmă care folosește aplicația ta își conectează telefonul prin cod QR, iar mesajele către clienții ei pleacă de pe numărul ei.</description>
      <content:encoded><![CDATA[<p>Ai o aplicație folosită de multe firme: un program de facturare, un sistem de programări, o platformă pentru școli sau cabinete medicale. Fiecare firmă are clienții ei, iar când aplicația ta le trimite un SMS, mesajul ar trebui să vină de la firma respectivă. Nu de la un număr închiriat pe care nu-l recunoaște nimeni și nici de la firma ta.</p>
<p>Să luăm un program de facturare folosit de câteva sute de firme mici. Când una dintre ele emite o factură, clientul ei primește un mesaj: „Dental Plus: Factura nr. DP-2087 a fost emisă. Total: 1.249,50 lei.” Cu planul Enterprise al SMSTunnel, mesajul pleacă de pe telefonul Android al firmei Dental Plus, de pe numărul ei. Clientul știe cine îi scrie, iar dacă răspunde sau sună înapoi, ajunge la Dental Plus, nu la tine.</p>
<p>În ghidul de mai jos vezi tot fluxul: aplicația ta conectează telefonul fiecărui client printr-un cod QR, primește singură cheia acelui client și îi predă mesajele telefonului lui. Găsești codul cu SDK-ul pentru Node.js, ce îți arată dashboard-ul, un exemplu real și o comparație corectă cu soluțiile folosite de obicei.</p>
<h2 id="de-ce-contează-numărul-fiecărui-client">De ce contează numărul fiecărui client</h2>
<ul>
<li><strong>Oamenii recunosc numărul.</strong> Un mesaj de la firma cu care lucrează zilnic e citit ca un mesaj de la firma aceea, pentru că exact asta este.</li>
<li><strong>Răspunsurile ajung unde trebuie.</strong> Când un client răspunde, mesajul ajunge pe telefonul firmei. Nu ajungi tu să răspunzi în locul clienților tăi.</li>
<li><strong>Fiecare firmă folosește SIM-ul și abonamentul ei.</strong> SMSTunnel nu ia bani pe mesaj, așa că mesajele trimise de telefonul unei firme intră pe abonamentul ei, la tarifele operatorului ei.</li>
<li><strong>Nu închiriezi și nu înregistrezi numere.</strong> Firmele au deja un telefon și un număr. Aplicația ta doar le conectează.</li>
</ul>
<h2 id="cum-funcționează-pe-planul-enterprise">Cum funcționează pe planul Enterprise</h2>
<p>Sunt cinci pași, iar clientul tău participă la unul singur:</p>
<ol>
<li><strong>Creezi o aplicație Enterprise</strong> în dashboard-ul SMSTunnel și primești cheia ei. Cheia are permisiunea <code>enterprise:saas</code>, cea care conectează clienți; celelalte chei primesc 403.</li>
<li><strong>Serverul tău pornește conectarea unui client</strong> cu <code>activateEnterpriseClient()</code>: numele clientului, id-ul lui din sistemul tău (<code>externalId</code>) și o adresă de callback. SMSTunnel îi face clientului un cont (sau îl refolosește pe cel existent) și îți întoarce un cod QR și cheia API a clientului.</li>
<li><strong>Clientul scanează codul QR.</strong> Instalează aplicația SMSTunnel din Google Play pe telefonul lui Android, deschide <strong>Conexiuni</strong>, apasă <strong>Conectează cu cod QR</strong> și scanează codul afișat de aplicația ta.</li>
<li><strong>SMSTunnel îți apelează adresa de callback</strong> cu evenimentul <code>pairing_completed</code>, tokenul din codul QR și cheia clientului.</li>
<li><strong>Aplicația ta trimite mesajele clientului cu cheia lui.</strong> Fiecare mesaj ajunge la telefonul lui, care îl trimite de pe numărul lui. Cu <code>getEnterpriseClient(externalId)</code> afli oricând dacă telefonul e conectat și online.</li>
</ol>
<p>Clientul tău nu copiază nicio cheie API și nu intră în dashboard-ul SMSTunnel: instalează aplicația și scanează un cod.</p>
<h2 id="pas-cu-pas-cu-sdk-ul-pentru-nodejs">Pas cu pas, cu SDK-ul pentru Node.js</h2>
<p>Funcțiile pentru Enterprise sunt în SDK-ul oficial, <a href="https://www.npmjs.com/package/@narcisbodea/smstunnel-sdk"><code>@narcisbodea/smstunnel-sdk</code></a>, atât în clientul simplu pentru Node.js, cât și în modulul pentru NestJS.</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">npm</span><span style="color:#9ECBFF"> install</span><span style="color:#9ECBFF"> @narcisbodea/smstunnel-sdk</span></span></code></pre>
<h3 id="1-creezi-aplicația-enterprise">1. Creezi aplicația Enterprise</h3>
<p>Pe planul Enterprise, dashboard-ul are o secțiune în plus, <strong>Company</strong>. La <strong>Company → Apps</strong> alegi <strong>Add an app</strong>: câte o aplicație pentru fiecare produs al tău care are clienți. Copiezi cheia și o ții într-o variabilă de mediu pe server, niciodată în cod care rulează în browser sau într-o aplicație mobilă.</p>
<h3 id="2-pornești-conectarea-unui-client">2. Pornești conectarea unui client</h3>
<p>Când un client activează mesajele în aplicația ta, serverul îi cere SMSTunnel codul QR pentru el:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { SmsTunnelNodeClient } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> '@narcisbodea/smstunnel-sdk/node'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D">// Cheia aplicației tale Enterprise (Company → Apps).</span></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> company</span><span style="color:#F97583"> =</span><span style="color:#F97583"> new</span><span style="color:#B392F0"> SmsTunnelNodeClient</span><span style="color:#E1E4E8">({ apiKey: process.env.</span><span style="color:#79B8FF">SMSTUNNEL_ENTERPRISE_API_KEY</span><span style="color:#F97583">!</span><span style="color:#E1E4E8"> });</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> activation</span><span style="color:#F97583"> =</span><span style="color:#F97583"> await</span><span style="color:#E1E4E8"> company.</span><span style="color:#B392F0">activateEnterpriseClient</span><span style="color:#E1E4E8">({</span></span>
<span class="line"><span style="color:#E1E4E8">  clientName: </span><span style="color:#9ECBFF">'Dental Plus SRL'</span><span style="color:#E1E4E8">,                                </span><span style="color:#6A737D">// apare în aplicație și în dashboard</span></span>
<span class="line"><span style="color:#E1E4E8">  externalId: </span><span style="color:#9ECBFF">'firma-42'</span><span style="color:#E1E4E8">,                                       </span><span style="color:#6A737D">// id-ul clientului în sistemul tău</span></span>
<span class="line"><span style="color:#E1E4E8">  callbackUrl: </span><span style="color:#9ECBFF">'https://facturare.example.ro/smstunnel/callback'</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">});</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D">// Le păstrezi în baza ta de date, lângă client:</span></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> clientKey</span><span style="color:#F97583"> =</span><span style="color:#E1E4E8"> activation.apiKey.key;      </span><span style="color:#6A737D">// trimite mesaje după ce telefonul s-a conectat</span></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> pairingToken</span><span style="color:#F97583"> =</span><span style="color:#E1E4E8"> activation.pairingToken; </span><span style="color:#6A737D">// tokenul pe care îl va aduce callback-ul</span></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> qrData</span><span style="color:#F97583"> =</span><span style="color:#E1E4E8"> activation.activation.qrData;  </span><span style="color:#6A737D">// îl afișezi ca cod QR</span></span></code></pre>
<p>Cheia clientului e secretă, ca orice cheie API: o ții doar pe server.</p>
<h3 id="3-afișezi-codul-qr">3. Afișezi codul QR</h3>
<p>Desenezi <code>qrData</code> cu orice bibliotecă de coduri QR, pe pagina din care clientul activează mesajele. El îl scanează cu aplicația SMSTunnel, iar aplicația îi arată numele trimis de tine, ca să știe ce conectează.</p>
<h3 id="4-primești-confirmarea">4. Primești confirmarea</h3>
<p>Când telefonul se conectează, SMSTunnel trimite <code>pairing_completed</code> la <code>callbackUrl</code>, care trebuie să fie o adresă https pe un server public. Accepți confirmarea doar dacă tokenul ei e unul primit de tine la pasul 2:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E1E4E8">app.</span><span style="color:#B392F0">post</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'/smstunnel/callback'</span><span style="color:#E1E4E8">, express.</span><span style="color:#B392F0">json</span><span style="color:#E1E4E8">(), </span><span style="color:#F97583">async</span><span style="color:#E1E4E8"> (</span><span style="color:#FFAB70">req</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">res</span><span style="color:#E1E4E8">) </span><span style="color:#F97583">=></span><span style="color:#E1E4E8"> {</span></span>
<span class="line"><span style="color:#F97583">  const</span><span style="color:#E1E4E8"> { </span><span style="color:#79B8FF">event</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">token</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">apiKey</span><span style="color:#E1E4E8"> } </span><span style="color:#F97583">=</span><span style="color:#E1E4E8"> req.body;</span></span>
<span class="line"><span style="color:#F97583">  const</span><span style="color:#79B8FF"> firma</span><span style="color:#F97583"> =</span><span style="color:#F97583"> await</span><span style="color:#E1E4E8"> db.firme.</span><span style="color:#B392F0">findOne</span><span style="color:#E1E4E8">({ smstunnelPairingToken: token }); </span><span style="color:#6A737D">// baza ta de date</span></span>
<span class="line"><span style="color:#F97583">  if</span><span style="color:#E1E4E8"> (event </span><span style="color:#F97583">!==</span><span style="color:#9ECBFF"> 'pairing_completed'</span><span style="color:#F97583"> ||</span><span style="color:#F97583"> !</span><span style="color:#E1E4E8">firma) </span><span style="color:#F97583">return</span><span style="color:#E1E4E8"> res.</span><span style="color:#B392F0">sendStatus</span><span style="color:#E1E4E8">(</span><span style="color:#79B8FF">404</span><span style="color:#E1E4E8">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">  await</span><span style="color:#E1E4E8"> db.firme.</span><span style="color:#B392F0">update</span><span style="color:#E1E4E8">(firma.id, { smstunnelKey: apiKey, smsActiv: </span><span style="color:#79B8FF">true</span><span style="color:#E1E4E8"> });</span></span>
<span class="line"><span style="color:#E1E4E8">  res.</span><span style="color:#B392F0">sendStatus</span><span style="color:#E1E4E8">(</span><span style="color:#79B8FF">200</span><span style="color:#E1E4E8">);</span></span>
<span class="line"><span style="color:#E1E4E8">});</span></span></code></pre>
<h3 id="5-trimiți-mesajele-de-pe-telefonul-clientului">5. Trimiți mesajele de pe telefonul clientului</h3>
<p>Mesajele fiecărei firme pleacă printr-un client SDK creat cu cheia ei. Un mesaj merge la un singur număr:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { SmsTunnelNodeClient, SmsTunnelApiError } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> '@narcisbodea/smstunnel-sdk/node'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">async</span><span style="color:#F97583"> function</span><span style="color:#B392F0"> anuntaFacturaEmisa</span><span style="color:#E1E4E8">(</span><span style="color:#FFAB70">firma</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">factura</span><span style="color:#E1E4E8">) {</span></span>
<span class="line"><span style="color:#F97583">  const</span><span style="color:#79B8FF"> sms</span><span style="color:#F97583"> =</span><span style="color:#F97583"> new</span><span style="color:#B392F0"> SmsTunnelNodeClient</span><span style="color:#E1E4E8">({ apiKey: firma.smstunnelKey });</span></span>
<span class="line"><span style="color:#F97583">  try</span><span style="color:#E1E4E8"> {</span></span>
<span class="line"><span style="color:#F97583">    await</span><span style="color:#E1E4E8"> sms.</span><span style="color:#B392F0">sendSms</span><span style="color:#E1E4E8">(</span></span>
<span class="line"><span style="color:#E1E4E8">      factura.telefonClient, </span><span style="color:#6A737D">// format internațional, de exemplu +40712345678</span></span>
<span class="line"><span style="color:#9ECBFF">      `${</span><span style="color:#E1E4E8">firma</span><span style="color:#9ECBFF">.</span><span style="color:#E1E4E8">nume</span><span style="color:#9ECBFF">}: Factura nr. ${</span><span style="color:#E1E4E8">factura</span><span style="color:#9ECBFF">.</span><span style="color:#E1E4E8">numar</span><span style="color:#9ECBFF">} a fost emisă. Total: ${</span><span style="color:#E1E4E8">factura</span><span style="color:#9ECBFF">.</span><span style="color:#E1E4E8">total</span><span style="color:#9ECBFF">} lei.`</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">    );</span></span>
<span class="line"><span style="color:#E1E4E8">  } </span><span style="color:#F97583">catch</span><span style="color:#E1E4E8"> (error) {</span></span>
<span class="line"><span style="color:#F97583">    if</span><span style="color:#E1E4E8"> (error </span><span style="color:#F97583">instanceof</span><span style="color:#B392F0"> SmsTunnelApiError</span><span style="color:#E1E4E8">) console.</span><span style="color:#B392F0">error</span><span style="color:#E1E4E8">(error.status, error.message);</span></span>
<span class="line"><span style="color:#F97583">    else</span><span style="color:#F97583"> throw</span><span style="color:#E1E4E8"> error;</span></span>
<span class="line"><span style="color:#E1E4E8">  }</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<h3 id="6-verifici-dacă-telefonul-clientului-e-conectat-și-online">6. Verifici dacă telefonul clientului e conectat și online</h3>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#F97583">const</span><span style="color:#E1E4E8"> { </span><span style="color:#79B8FF">activation</span><span style="color:#E1E4E8"> } </span><span style="color:#F97583">=</span><span style="color:#F97583"> await</span><span style="color:#E1E4E8"> company.</span><span style="color:#B392F0">getEnterpriseClient</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'firma-42'</span><span style="color:#E1E4E8">);</span></span>
<span class="line"><span style="color:#6A737D">// activation?.status: 'pending' | 'connected' | 'expired' | 'cancelled'</span></span>
<span class="line"><span style="color:#6A737D">// activation?.isOnline: dacă telefonul e online chiar acum</span></span></code></pre>
<p>Arată starea asta lângă client, în aplicația ta, ca firma să știe dacă mesajele merg înainte să se bazeze pe ele.</p>
<h3 id="cu-nestjs">Cu NestJS</h3>
<p>Dacă serverul tău e în NestJS, modulul din SDK are un mod Enterprise: îi dai cheia Enterprise și id-ul organizației curente, iar <code>SmsTunnelService</code> se ocupă de conectare și de trimitere pentru organizația respectivă.</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E1E4E8">SmsTunnelModule.</span><span style="color:#B392F0">forRootAsync</span><span style="color:#E1E4E8">({</span></span>
<span class="line"><span style="color:#B392F0">  useFactory</span><span style="color:#E1E4E8">: (</span><span style="color:#FFAB70">settingsModel</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">tenantService</span><span style="color:#E1E4E8">) </span><span style="color:#F97583">=></span><span style="color:#E1E4E8"> ({</span></span>
<span class="line"><span style="color:#E1E4E8">    storage: </span><span style="color:#F97583">new</span><span style="color:#B392F0"> MongoSmsTunnelStorage</span><span style="color:#E1E4E8">(settingsModel),</span></span>
<span class="line"><span style="color:#E1E4E8">    callbackBaseUrl: process.env.</span><span style="color:#79B8FF">CALLBACK_URL</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">    displayName: </span><span style="color:#9ECBFF">'Aplicația mea'</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">    enterpriseApiKey: process.env.</span><span style="color:#79B8FF">SMSTUNNEL_ENTERPRISE_API_KEY</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">    externalId: tenantService.</span><span style="color:#B392F0">getCurrentTenantId</span><span style="color:#E1E4E8">(),</span></span>
<span class="line"><span style="color:#E1E4E8">  }),</span></span>
<span class="line"><span style="color:#E1E4E8">  inject: [</span><span style="color:#B392F0">getModelToken</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'Settings'</span><span style="color:#E1E4E8">), TenantService],</span></span>
<span class="line"><span style="color:#E1E4E8">})</span></span></code></pre>
<p>Apoi <code>await smsTunnelService.getEnterpriseClientStatus()</code> îți spune dacă telefonul organizației s-a conectat și e online. Celelalte variante de stocare (Prisma, un fișier JSON) sunt în <a href="https://github.com/narcisbodea/smstunnel-sdk">README-ul SDK-ului</a>.</p>
<h2 id="ce-vezi-în-dashboard">Ce vezi în dashboard</h2>
<p>Secțiunea <strong>Company</strong> are cinci taburi: <strong>Overview</strong>, <strong>Clients</strong>, <strong>Phones</strong>, <strong>Apps</strong> și <strong>Invitations</strong>. Între clienți și telefoane relația e de tip mulți la mulți: un client poate conecta mai multe telefoane, iar un telefon poate trimite pentru mai mulți clienți. Așa poate trimite și o firmă care nu are un telefon al ei: la <strong>Phones</strong> poți împărți cu clienții tăi unul dintre telefoanele tale. Fiecare client și fiecare telefon are pagina lui, cu mesajele trimise în ultimele 30 de zile și cu cele care încă așteaptă un telefon.</p>
<p>Nici nu ai nevoie de cod pentru fiecare client. La <strong>Invitations</strong> creezi un cod QR pentru un client, i-l trimiți sau i-l arăți, iar el îl scanează în aplicația SMSTunnel și telefonul lui se leagă de contul firmei tale. O aplicație cu cheie proprie îți trebuie doar dacă software-ul tău conectează singur clienții.</p>
<h2 id="un-exemplu-real-câte-un-centru-în-fiecare-județ">Un exemplu real: câte un centru în fiecare județ</h2>
<p>Una dintre aplicațiile construite pe acest flux deservește o rețea publică din educație, cu câte un centru în fiecare județ. Aplicația are o singură cheie Enterprise în setări. Fiecare centru județean e un client, cu <code>externalId</code>-ul lui; cineva de la centru scanează o singură dată codul QR cu telefonul centrului, iar de atunci aplicația trimite mesajele acelui centru de pe numărul lui. Oamenii primesc mesaje de la centrul din județul lor, iar când sună înapoi, ajung tot acolo.</p>
<h2 id="ce-trebuie-să-știi-înainte-să-construiești">Ce trebuie să știi înainte să construiești</h2>
<ul>
<li><strong>Un destinatar pe mesaj.</strong> Fiecare apel trimite un mesaj, de până la 1600 de caractere, către un singur număr. Pentru mai mulți oameni faci câte un apel pentru fiecare.</li>
<li><strong>Trimite în ritmul potrivit.</strong> API-ul primește 30 de cereri de trimitere pe minut pentru fiecare cheie API, pe fiecare endpoint de trimitere (toate cheile unui cont, împreună, de trei ori mai mult). Dacă serverul tău trimite pentru mulți clienți deodată, pune mesajele la coadă și, la un 429, reîncearcă după timpul din antetul <code>Retry-After</code>.</li>
<li><strong>Un telefon poate fi offline.</strong> Dacă telefonul unui client e închis sau fără internet, mesajele lui așteaptă și pleacă atunci când revine, timp de cel mult 3 zile; după aceea sunt marcate ca eșuate.</li>
<li><strong>Poți reconecta fără grijă.</strong> Un nou apel <code>activateEnterpriseClient()</code> pentru același <code>externalId</code> înlocuiește activarea și cheia de dinainte, iar un telefon deja conectat rămâne conectat. Două apeluri suprapuse pentru același client pot primi 409, cu <code>code: 'CONCURRENT_ACTIVATION'</code> sau <code>'ALREADY_CONNECTED'</code>.</li>
<li><strong>Cu modulul NestJS, un cod QR nou începe o conectare nouă.</strong> Din SDK 2.2.0, <code>createPairingToken()</code> șterge cheia salvată a organizației până când telefonul ei scanează codul nou, deci mesajele ei se opresc între timp. Oferă un cod QR doar cât timp niciun telefon nu e conectat (îți spune <code>getEnterpriseClientStatus()</code>).</li>
<li><strong>Firmele rămân stăpâne pe telefoanele lor.</strong> Proprietarul unui telefon îl poate deconecta din aplicație sau din dashboard.</li>
<li><strong>Confidențialitate, dacă ai nevoie.</strong> Aplicația ta poate <a href="https://smstunnel.io/ro/blog/sms-criptat-end-to-end/">cripta fiecare mesaj end-to-end</a> pentru telefonul care îl trimite, iar planul Enterprise include și confidențialitatea maximă, în care și numărul e sigilat.</li>
</ul>
<h2 id="cum-se-compară-cu-alte-variante">Cum se compară cu alte variante</h2>
<p>Alte unelte care trimit SMS de pe un telefon Android, cum sunt httpSMS și textbee, sunt gândite în jurul unui singur cont, cu telefoanele lui. Din paginile noastre de comparație, verificate în noiembrie 2026:</p>
<ul>
<li><strong>httpSMS:</strong> cheile de telefon pun mai multe telefoane într-un singur cont, iar fiecare cheie se creează de mână în dashboard-ul lui. Vezi <a href="https://smstunnel.io/compare/httpsms/">SMSTunnel vs httpSMS</a>.</li>
<li><strong>textbee:</strong> telefoanele aparțin unui singur cont, 1, 5 sau 15, în funcție de plan, fără conturi pentru clienții tăi. Vezi <a href="https://smstunnel.io/compare/textbee/">SMSTunnel vs textbee</a>.</li>
</ul>
<p>Cu oricare dintre ele, soluția obișnuită pentru o aplicație cu mulți clienți e să ceri fiecărei firme să-și facă propriul cont, să-și conecteze telefonul acolo, să creeze o cheie API și s-o lipească în aplicația ta. Merge, dar fiecare firmă trebuie să înțeleagă ce e o cheie API, echipa ta de suport trebuie să explice asta mereu, iar telefoanele clienților nu le vezi niciodată într-un singur loc.</p>
<p>Furnizorii de API SMS, cum e <a href="https://smstunnel.io/compare/twilio/">Twilio</a>, rezolvă altă problemă: trimit de pe numere pe care le închiriezi de la ei. Asta se potrivește pentru volume mari și multe țări, dar mesajele nu pleacă de pe numerele clienților tăi.</p>
<h2 id="cât-costă">Cât costă</h2>
<p>Planul Enterprise costă 99 $ pe lună sau 990 $ pe an, fără taxe. Clienții din România primesc factura fiscală în lei, la cursul BNR, prin e-Factura. Planul nu are limită zilnică (trimiterea are o limită de ritm, ca să protejeze SIM-urile) și include coduri de autentificare fără limită zilnică, chei API separate pentru fiecare aplicație a ta, confidențialitate maximă și suport dedicat. SMSTunnel nu adaugă taxe pe mesaj: fiecare mesaj intră pe abonamentul telefonului care îl trimite. Toate planurile sunt pe <a href="https://smstunnel.io/ro/pricing/">pagina de prețuri</a>, iar <a href="https://smstunnel.io/ro/blog/cost-sms-sim-propriu-vs-api/">comparația de costuri</a> îți arată cât costă un SIM propriu față de un API SMS.</p>
<p>Vrei să încerci mai întâi partea de telefon? Orice plan, inclusiv cel Gratuit, îți permite să-ți conectezi propriul telefon și să trimiți din propriul software. Când vrei să conectezi și telefoanele clienților tăi, planul Enterprise adaugă secțiunea Company și funcțiile de mai sus, iar dacă vrei ajutor la conectarea propriilor sisteme, <a href="https://smstunnel.io/contact/">scrie-ne</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>SMS criptat end-to-end din software-ul tău: ce e criptat și ce nu</title>
      <link>https://smstunnel.io/ro/blog/sms-criptat-end-to-end/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/sms-criptat-end-to-end/</guid>
      <pubDate>Tue, 03 Nov 2026 08:50:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>Criptare</category>
      <category>Confidențialitate</category>
      <description>Software-ul tău criptează fiecare mesaj cu cheia publică a telefonului, iar SMSTunnel nu-l poate citi. Ce e criptat azi, ce nu și cum ascunzi și numărul.</description>
      <content:encoded><![CDATA[<p>Să zicem că ai un laborator de analize, iar aplicația voastră le trimite pacienților un SMS când sunt gata rezultatele: „Bună ziua, rezultatele analizelor dumneavoastră sunt gata. Le găsiți în contul de pe site.” Mesajul pleacă de pe serverul vostru, trece prin contul SMSTunnel și ajunge la telefonul Android al laboratorului, care îl trimite de pe numărul vostru. Criptarea end-to-end închide drumul acesta pentru oricine e la mijloc, inclusiv pentru noi: software-ul tău încuie mesajul cu cheia publică a telefonului înainte ca mesajul să plece de pe server, și doar telefonul îl poate descuia.</p>
<p>Criptarea e opțională și e inclusă în toate planurile, chiar și în cel Gratuit. Mai jos vezi cum funcționează, ce integrări o au, cum o pornești și, la fel de important, ce nu acoperă. O criptare despre care nu poți spune exact ce protejează nu valorează mare lucru, așa că limitele ei sunt aici la vedere, nu într-o notă de subsol.</p>
<h2 id="cum-funcționează">Cum funcționează</h2>
<p>Sunt trei pași, iar mesajul poate fi citit doar la primul și la ultimul:</p>
<ol>
<li><strong>Software-ul tău criptează.</strong> Încuie mesajul cu cheia publică a telefonului tău, pe serverul tău, înainte să plece ceva de acolo. Fiecare telefon are propria pereche de chei RSA-2048: cheia privată nu iese niciodată de pe telefon, iar SMSTunnel păstrează doar cheia publică.</li>
<li><strong>SMSTunnel transportă.</strong> Serverele noastre doar transmit mai departe textul criptat și îl șterg după ce a fost trimis. Nu putem citi mesajul.</li>
<li><strong>Telefonul tău trimite.</strong> Doar telefonul tău are cheia privată. Decriptează textul și îl trimite ca SMS obișnuit, de pe numărul tău.</li>
</ol>
<p>Ce vedem în continuare, cu criptarea pornită: contul tău, telefonul tău și ora fiecărui mesaj, plus numărul la care merge mesajul, dacă nu folosești confidențialitatea maximă (o găsești mai jos).</p>
<h2 id="ce-e-criptat-și-ce-nu">Ce e criptat și ce nu</h2>





































<table><thead><tr><th>Mesajul</th><th>Criptat end-to-end?</th></tr></thead><tbody><tr><td>Mesajele criptate de software-ul tău (API-ul, SDK-ul pentru Node.js, pluginul WordPress cu criptarea pornită)</td><td>Da, textul. Numărul rămâne vizibil în cont, ca să apară în lista ta de mesaje</td></tr><tr><td>Aceleași mesaje, cu confidențialitate maximă (Profesional și Enterprise)</td><td>Da, și textul, și numărul</td></tr><tr><td>Mesajele scrise de tine în dashboard</td><td>Nu. Sunt protejate pe drum și rămân lizibile în cont, ca să-ți vezi istoricul</td></tr><tr><td>Mesajele trimise de software-ul tău fără criptare</td><td>Nu. Rămân lizibile în istoricul contului</td></tr><tr><td>Codurile de autentificare trimise de pluginul WordPress</td><td>Nu. Pluginul nu le criptează</td></tr><tr><td>Mesajele primite de telefon, dacă le sincronizezi</td><td>Nu. Sunt protejate pe drum și păstrate lizibile, ca să le poți citi în dashboard</td></tr><tr><td>SMS-ul propriu-zis, între telefonul tău și destinatar</td><td>Nu. După ce telefonul îl trimite, merge prin rețeaua mobilă ca orice alt SMS</td></tr></tbody></table>
<p>Toate conexiunile către SMSTunnel sunt criptate (TLS 1.2 sau mai nou), indiferent dacă mesajul e criptat end-to-end sau nu. Tabelul arată cine poate citi textul după ce ajunge la destinație.</p>
<p>Despre mesajele primite: lucrăm la criptarea lor end-to-end, astfel încât să poată fi citite doar pe telefonul tău și într-o aplicație desktop care urmează.</p>
<h2 id="pornești-criptarea-în-wordpress">Pornești criptarea în WordPress</h2>
<p><a href="https://smstunnel.io/ro/integrations/smstunnel/">Pluginul SMSTunnel pentru WordPress</a> criptează mesajele site-ului pentru telefonul tău înainte să plece din WordPress. Are nevoie o singură dată de cheia publică a telefonului, pe care o primește printr-un cod QR:</p>
<ol>
<li>În WordPress, mergi la <strong>SMSTunnel → Encryption Settings</strong>.</li>
<li>Pornește conectarea pentru criptare, ca să apară un cod QR.</li>
<li>Scanează codul QR cu aplicația SMSTunnel de pe telefon.</li>
<li>Gata: mesajele site-ului tău sunt acum criptate end-to-end.</li>
</ol>
<p>La conectare, telefonul trimite doar cheia lui publică. Cheia privată nu pleacă de pe telefon, așa că SMSTunnel păstrează doar text criptat, pe care nu-l poate citi. Ține minte excepția din tabel: codurile de autentificare pentru conectarea în WordPress nu sunt criptate.</p>
<p>În aplicația de pe telefon, opțiunea apare la <strong>Setări</strong> ca <strong>Criptare end-to-end</strong>, „pentru mesajele predate de aplicațiile tale (nu și pentru mesajele primite)”.</p>
<h2 id="criptezi-din-propriul-cod">Criptezi din propriul cod</h2>
<h3 id="cu-sdk-ul-pentru-nodejs">Cu SDK-ul pentru Node.js</h3>
<p>SDK-ul oficial face totul într-un singur apel: ia cheia publică a telefonului, criptează numărul și textul și trimite rezultatul.</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { SmsTunnelNodeClient } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> '@narcisbodea/smstunnel-sdk/node'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> client</span><span style="color:#F97583"> =</span><span style="color:#F97583"> new</span><span style="color:#B392F0"> SmsTunnelNodeClient</span><span style="color:#E1E4E8">({ apiKey: process.env.</span><span style="color:#79B8FF">SMSTUNNEL_API_KEY</span><span style="color:#F97583">!</span><span style="color:#E1E4E8"> });</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D">// Criptează { to, message } cu cheia publică a telefonului, apoi trimite.</span></span>
<span class="line"><span style="color:#F97583">await</span><span style="color:#E1E4E8"> client.</span><span style="color:#B392F0">encryptAndSendSms</span><span style="color:#E1E4E8">(</span></span>
<span class="line"><span style="color:#9ECBFF">  '+40712345678'</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#9ECBFF">  'Bună ziua, rezultatele analizelor dumneavoastră sunt gata.'</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#9ECBFF">  'id-telefon'</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">);</span></span></code></pre>
<p><code>id-telefon</code> e telefonul care va trimite mesajul: <code>client.getDevices()</code> îți dă lista telefoanelor, cu id-urile lor. În modulul pentru NestJS, <code>smsTunnelService.encryptAndSendSms(to, message)</code> face schimbul de chei cu telefonul la prima folosire și criptează de atunci încolo.</p>
<p>Criptarea se face pe serverul tău. Din browser nu se poate cu SDK-ul, iar cheia API oricum nu are ce căuta într-un browser.</p>
<h3 id="cu-api-ul-rest-în-orice-limbaj">Cu API-ul REST, în orice limbaj</h3>
<p>Fără SDK, pașii sunt aceiași:</p>
<ol>
<li>Iei cheia publică a telefonului cu <code>GET /api/v1/devices/{deviceId}/public-key</code>.</li>
<li>Criptezi cu ea JSON-ul <code>{"to": "+40712345678", "message": "…"}</code>, pe serverul tău.</li>
<li>Trimiți rezultatul la <code>POST /api/v1/sms/send</code>, ca <code>encryptedPayload</code> (base64), cu <code>"encrypted": true</code>, cu <code>deviceId</code> și, în plus, cu <code>to</code>, ca numărul să apară în lista ta de mesaje.</li>
</ol>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span></span>
<span class="line"><span style="color:#79B8FF">  "to"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"+40712345678"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "deviceId"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"671fe0d9c3b2a1f0e9d8c7b6"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "encrypted"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">true</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "encryptedPayload"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"BASE64_AL_JSON-ULUI_CRIPTAT"</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<p>Nu trebuie să descoperi singur formatul criptării: când adaugi o aplicație în dashboard și alegi criptarea end-to-end, primești cod gata scris pentru PHP, Node.js, Python și C#. Detaliile sunt în <a href="https://smstunnel.io/api-reference/#e2e-public-key">referința API</a>.</p>
<p>O diferență practică: un mesaj criptat intră în limita zilnică a planului și e refuzat după ce o depășești, pentru că nu poate primi scurtul rând „free by smstunnel.io” pe care planul Gratuit îl adaugă mesajelor în plus din ziua respectivă.</p>
<h3 id="afli-când-se-schimbă-cheia-telefonului">Afli când se schimbă cheia telefonului</h3>
<p>Dacă aplicația SMSTunnel e reinstalată, telefonul își face o pereche nouă de chei. <code>GET /api/v1/devices/{deviceId}/e2e-status</code> îți spune dacă criptarea e pornită, dacă există o cheie publică, amprenta ei (primele 16 caractere hexazecimale ale unui hash SHA-256) și când a fost creată. Păstrezi amprenta după prima conectare și o compari înainte să trimiți:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> rezultat</span><span style="color:#F97583"> =</span><span style="color:#F97583"> await</span><span style="color:#E1E4E8"> client.</span><span style="color:#B392F0">verifyDeviceKey</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'id-telefon'</span><span style="color:#E1E4E8">, amprentaSalvata);</span></span>
<span class="line"><span style="color:#F97583">if</span><span style="color:#E1E4E8"> (rezultat.needsRePairing) {</span></span>
<span class="line"><span style="color:#6A737D">  // Aplicația a fost reinstalată și cheia s-a schimbat: conectează din nou înainte să trimiți.</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<h2 id="confidențialitate-maximă-ascunzi-și-numărul">Confidențialitate maximă: ascunzi și numărul</h2>
<p>Criptarea end-to-end ascunde textul. În planurile Profesional și Enterprise, confidențialitatea maximă ascunde și numărul, așa că nu putem vedea cui îi e adresat mesajul.</p>
<p>Funcționează cu un certificat privat creat de tine, protejat de o parolă pe care o știi doar tu. Pui certificatul în software-ul tău și pe telefon, cheia nu trece niciodată prin serverele noastre, iar de atunci telefonul refuză orice mesaj care nu e sigilat cu el, inclusiv mesajele scrise în dashboard.</p>
<h3 id="1-creezi-certificatul">1. Creezi certificatul</h3>
<p>În dashboard: <strong>Apps → Add an app → Encrypt end to end → Maximum privacy</strong>, unde primești și cod gata scris pentru PHP, Node.js, Python și C#. Sau îl creezi pe propriul computer, de unde nu pleacă nimic:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">npx</span><span style="color:#79B8FF"> -p</span><span style="color:#9ECBFF"> @narcisbodea/smstunnel-sdk</span><span style="color:#9ECBFF"> smstunnel-make-certificate</span></span></code></pre>
<p>Comanda îți cere o parolă de cel puțin 12 caractere și salvează fișierul <code>smstunnel-certificate.json</code>.</p>
<h3 id="2-îl-pui-pe-telefon">2. Îl pui pe telefon</h3>
<p>În aplicația SMSTunnel (versiunea 1.0.9 sau mai nouă), deschizi <strong>Setări → Certificat privat</strong> și lipești conținutul fișierului. Dacă preferi să scanezi un cod QR, dashboard-ul îți arată unul la <strong>Apps → Maximum privacy → „I already have one”</strong>.</p>
<h3 id="3-trimiți-mesaje-sigilate">3. Trimiți mesaje sigilate</h3>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { readFileSync } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> 'node:fs'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { SmsTunnelNodeClient, openCertificate } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> '@narcisbodea/smstunnel-sdk/node'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> client</span><span style="color:#F97583"> =</span><span style="color:#F97583"> new</span><span style="color:#B392F0"> SmsTunnelNodeClient</span><span style="color:#E1E4E8">({ apiKey: process.env.</span><span style="color:#79B8FF">SMSTUNNEL_API_KEY</span><span style="color:#F97583">!</span><span style="color:#E1E4E8"> });</span></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> certificat</span><span style="color:#F97583"> =</span><span style="color:#B392F0"> openCertificate</span><span style="color:#E1E4E8">(</span></span>
<span class="line"><span style="color:#B392F0">  readFileSync</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'smstunnel-certificate.json'</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">'utf8'</span><span style="color:#E1E4E8">),</span></span>
<span class="line"><span style="color:#E1E4E8">  process.env.</span><span style="color:#79B8FF">SMSTUNNEL_CERT_PASSWORD</span><span style="color:#E1E4E8">, </span><span style="color:#6A737D">// parola stă în mediu, nu în cod</span></span>
<span class="line"><span style="color:#E1E4E8">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">await</span><span style="color:#E1E4E8"> client.</span><span style="color:#B392F0">sendSealedSms</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'+40712345678'</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">'Rezultatele sunt gata.'</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">'id-telefon'</span><span style="color:#E1E4E8">, certificat);</span></span></code></pre>
<p>Prin API-ul REST, un mesaj sigilat se trimite ca <code>encryptedPayload</code>, cu <code>"encrypted": true</code> și <code>deviceId</code>, fără <code>to</code>.</p>
<p>Ce trebuie să știi înainte să-l pornești:</p>
<ul>
<li>Vedem în continuare contul tău, telefonul tău și ora fiecărui mesaj.</li>
<li>Dacă sincronizezi în cont mesajele primite, un răspuns arată numărul de la care a venit.</li>
<li>Software-ul tău are nevoie de certificat și de parola lui ca să trimită. Ține parola în afara codului, de exemplu într-o variabilă de mediu.</li>
<li>Nu putem recupera un certificat sau o parolă pierdută. Dacă pierzi una dintre ele, faci un certificat nou și îl pui din nou pe telefon și în software.</li>
<li>În celelalte planuri, un mesaj fără <code>to</code> sau unul sigilat cu un certificat e refuzat, cu codul 403.</li>
</ul>
<h2 id="cum-se-compară">Cum se compară</h2>
<p>Dintre uneltele care trimit SMS de pe propriul telefon Android, <a href="https://smstunnel.io/compare/httpsms/">httpSMS</a> are și el criptare end-to-end opțională: pui o cheie în aplicația lui și aceeași cheie în codul tău, pentru mesajele trimise și pentru cele primite. Pentru <a href="https://smstunnel.io/compare/textbee/">textbee</a>, nu am găsit criptare end-to-end în documentație, care spune că traficul API folosește HTTPS și că mesajele sunt păstrate pe serverele lui. SMSTunnel folosește câte o pereche de chei pentru fiecare telefon, așa că cheia care îți descuie mesajele nu pleacă niciodată de pe telefon, și adaugă confidențialitatea maximă pentru număr în planurile Profesional și Enterprise.</p>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="poate-smstunnel-să-mi-citească-mesajele-criptate">Poate SMSTunnel să-mi citească mesajele criptate?</h3>
<p>Nu. Avem doar cheia publică a telefonului, care poate încuia un mesaj, dar nu îl poate descuia, iar textul criptat îl ștergem după ce a fost trimis.</p>
<h3 id="e-criptat-sms-ul-și-pe-drumul-până-la-destinatar">E criptat SMS-ul și pe drumul până la destinatar?</h3>
<p>Nu. Aici, end-to-end înseamnă de la software-ul tău până la telefonul tău. După ce telefonul îl trimite, e un SMS obișnuit în rețeaua mobilă.</p>
<h3 id="costă-în-plus-criptarea">Costă în plus criptarea?</h3>
<p>Nu. E inclusă în toate planurile, inclusiv în cel Gratuit. Confidențialitatea maximă vine cu Profesional (39 $ pe lună) și Enterprise (99 $ pe lună), fără taxe; vezi <a href="https://smstunnel.io/ro/pricing/">pagina de prețuri</a>.</p>
<h3 id="o-pot-folosi-într-o-aplicație-cu-mulți-clienți">O pot folosi într-o aplicație cu mulți clienți?</h3>
<p>Da. Pe Enterprise, <a href="https://smstunnel.io/ro/blog/sms-de-pe-numarul-fiecarui-client/">fiecare client își conectează propriul telefon</a>, iar aplicația ta poate cripta fiecare mesaj pentru telefonul care îl va trimite.</p>]]></content:encoded>
    </item>
    <item>
      <title>Cât costă SMS-urile trimise de pe SIM-ul tău, față de un API SMS</title>
      <link>https://smstunnel.io/ro/blog/cost-sms-sim-propriu-vs-api/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/cost-sms-sim-propriu-vs-api/</guid>
      <pubDate>Tue, 03 Nov 2026 08:40:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>Prețuri</category>
      <category>API SMS</category>
      <description>Cât plătești pentru SMS-urile trimise de site-ul sau aplicația ta: preț pe segment și număr închiriat la un API SMS, sau plan fix plus SIM-ul tău.</description>
      <content:encoded><![CDATA[<p>Fiecare mesaj trimis de site-ul, magazinul sau aplicația ta costă ceva. Ai, în mare, două variante. Un furnizor de API SMS, internațional (Twilio, Vonage, Plivo) sau local, trimite mesajele de pe numere închiriate de la el și te taxează pentru fiecare mesaj. Cu SMSTunnel, telefonul tău Android trimite mesajele de pe SIM-ul și de pe numărul tău: plătești un plan fix pentru serviciu, iar mesajele pleacă prin abonamentul tău de telefonie mobilă.</p>
<p>Mai jos vezi ce intră în fiecare factură, cu un calcul pe care îl poți refolosi pentru cifrele tale. Prețurile furnizorilor sunt cele din SUA, notate de <a href="https://smstunnel.io/compare/">paginile noastre de comparație</a> în noiembrie 2026. Ele arată cum se construiește factura, dar pentru România prețurile sunt altele, așa că verifică lista fiecărui furnizor la țara România. Planurile SMSTunnel sunt cele de pe <a href="https://smstunnel.io/ro/pricing/">pagina de prețuri</a>.</p>
<p>Înainte de cifre, o precizare cinstită: cele două variante nu fac aceeași treabă. Un API SMS livrează fiecare mesaj prin rețelele operatorilor, iar prețul pe mesaj plătește exact asta. Cu SMSTunnel, livrarea o face telefonul tău, deci fiecare mesaj e plătit prin abonamentul tău, nu de SMSTunnel.</p>
<h2 id="ce-plătești-la-un-api-sms">Ce plătești la un API SMS</h2>
<p>Factura unui furnizor are mai multe rânduri:</p>
<ul>
<li><strong>Prețul pe segment.</strong> Un segment are cel mult 160 de caractere. În SUA, Twilio cere 0,0083 $ pe segment trimis sau primit, Vonage 0,0086 $ pe mesaj trimis, iar Plivo 0,0077 $ pe segment, dar oferă SMS doar în planul Enterprise, de la 1.000 $ pe lună.</li>
<li><strong>Numărul de pe care trimiți.</strong> De obicei se închiriază lunar: la Twilio, un număr local din SUA costă 1,15 $ pe lună. Un nume de expeditor, cum ar fi numele magazinului, se poate folosi doar în țările care îl permit.</li>
<li><strong>Taxele operatorilor.</strong> În SUA, operatorii adaugă o taxă pentru fiecare mesaj trimis, între 0,0035 $ și 0,005 $, pe care furnizorul ți-o trece în factură.</li>
<li><strong>Înregistrarea.</strong> În SUA, firma și tipul mesajelor trebuie înregistrate (A2P 10DLC): la Twilio plătești o dată 4,50 $ sau 46 $ pentru firmă și 15 $ pentru fiecare tip de mesaje, apoi între 1,50 $ și 10 $ pe lună.</li>
<li><strong>Răspunsurile.</strong> Fiecare răspuns al clienților e un mesaj primit și se plătește și el.</li>
</ul>
<h3 id="de-ce-contează-diacriticele">De ce contează diacriticele</h3>
<p>Un singur caracter din afara alfabetului GSM de bază, cum sunt ă, â, î, ș, ț sau majoritatea emoji-urilor, reduce de obicei segmentul de la 160 la 70 de caractere. Un mesaj de 120 de caractere cu diacritice înseamnă, de regulă, două segmente; fără diacritice, unul singur. La un API plătești fiecare segment, iar abonamentul tău numără de obicei la fel părțile unui mesaj lung.</p>
<p>Concluzia practică: ține mesajele scurte. „Comanda ta #1042 a fost expediată. Total: 249,90 lei.” are 53 de caractere și încape într-un singur SMS chiar și cu diacritice. Dacă ai nevoie de un text mai lung și vrei să rămână un singur SMS, îl poți scrie fără diacritice.</p>
<h2 id="ce-plătești-când-trimite-telefonul-tău">Ce plătești când trimite telefonul tău</h2>
<p>SMSTunnel are un preț fix, lunar sau anual, fără nimic pe mesaj, pe număr sau pentru înregistrare:</p>



































<table><thead><tr><th>Plan</th><th>Preț</th><th>Ce include</th></tr></thead><tbody><tr><td>Gratuit</td><td>0 $</td><td>25 de mesaje pe zi și 500 pe lună, trimise exact cum le-ai scris, plus până la 25 de mesaje în plus pe zi din software-ul tău, care se încheie cu rândul „free by smstunnel.io”; 50 de coduri de autentificare pe zi</td></tr><tr><td>Starter</td><td>9 $ pe lună</td><td>300 de mesaje pe zi și 5.000 pe lună; coduri de autentificare fără limită zilnică</td></tr><tr><td>Standard</td><td>19 $ pe lună</td><td>2.000 de mesaje pe zi și 30.000 pe lună</td></tr><tr><td>Profesional</td><td>39 $ pe lună</td><td>Fără limită zilnică (cu limită de ritm, ca să-ți protejeze SIM-ul); confidențialitate maximă</td></tr><tr><td>Enterprise</td><td>99 $ pe lună</td><td>Fără limită zilnică; telefoanele organizației tale; chei API separate pentru fiecare aplicație</td></tr></tbody></table>
<p>Plata anuală costă cât zece luni: 90 $, 190 $, 390 $ sau 990 $ pe an. Prețurile sunt în dolari americani, fără taxe. Clienții din România primesc factura fiscală în lei, la cursul BNR, prin e-Factura, iar NARBOWEB SRL este neplătitor de TVA. Nu semnezi niciun contract: planul e lunar sau anual și renunți oricând. La plan se numără doar mesajele pe care le trimiți, nu și cele pe care le primește telefonul.</p>
<p>Apoi vine abonamentul tău. Mesajele pleacă de pe SIM-ul tău, deci se aplică SMS-urile incluse sau tarifele operatorului tău, inclusiv pentru mesajele către alte țări. Multe abonamente de la operatorii din România includ SMS-uri nelimitate, dar un abonament personal poate interzice folosirea în scop comercial. Verifică ce scrie în contract înainte ca magazinul tău să le scrie clienților de pe el; pentru mesajele firmei, un abonament pe firmă e de obicei alegerea potrivită.</p>
<h2 id="un-calcul-pentru-magazinul-tău">Un calcul pentru magazinul tău</h2>
<p>Pentru un API, formula e simplă: numărul de mesaje × segmentele fiecărui mesaj × prețul pe segment pentru România, plus numărul sau numele de expeditor și eventualele taxe lunare. Iată calculul cu prețurile din SUA, ca să vezi ordinul de mărime.</p>
<h3 id="1000-de-mesaje-pe-lună">1.000 de mesaje pe lună</h3>
<p>Un magazin online cu 1.000 de comenzi pe lună trimite câte un mesaj la fiecare comandă, de un segment. La Twilio, în SUA:</p>
<ul>
<li>1.000 × 0,0083 $ = 8,30 $ pentru mesaje;</li>
<li>între 3,50 $ și 5 $ taxele operatorilor;</li>
<li>1,15 $ numărul;</li>
<li>între 1,50 $ și 10 $ pe lună înregistrarea, după 19,50–61 $ plătiți o singură dată.</li>
</ul>
<p>Asta înseamnă cam 14,45–24,45 $ pe lună, fără răspunsuri.</p>
<p>Cu SMSTunnel, 1.000 de mesaje pe lună înseamnă cam 33 pe zi, peste cele 25 din planul Gratuit, deci alegi Starter: 9 $ pe lună sau 90 $ pe an, plus abonamentul tău. <a href="https://smstunnel.io/ro/blog/sms-woocommerce-fara-twilio/">Ghidul pentru WooCommerce</a> arată configurarea pas cu pas pentru un magazin.</p>
<h3 id="10000-de-mesaje-pe-lună">10.000 de mesaje pe lună</h3>
<p>Cu aceleași prețuri din SUA, doar mesajele costă 83 $, taxele operatorilor adaugă 35–50 $, iar numărul și înregistrarea încă câțiva dolari: cam 120–145 $ pe lună.</p>
<p>Cu SMSTunnel, 10.000 de mesaje pe lună înseamnă cam 330 pe zi, peste cele 300 din Starter, deci planul Standard, la 19 $ pe lună, plus abonamentul tău. La un asemenea volum, verifică dacă abonamentul permite atâtea mesaje și ține cont că un telefon trimite în ritmul lui.</p>
<h3 id="codurile-de-autentificare">Codurile de autentificare</h3>
<p>Twilio Verify trimite codurile și le verifică în locul tău: 0,05 $ pentru fiecare verificare reușită, plus 0,0083 $ pe mesaj, în SUA. Vonage Verify cere 0,06084 $ pe verificare reușită plus mesajul, iar Plivo Verify nu are taxă de verificare, plătești doar mesajul. Cu SMSTunnel, aplicația ta generează și verifică singură codul, iar SMSTunnel trimite mesajul, cu o cotă separată: 50 de coduri pe zi în planul Gratuit și fără limită zilnică în planurile plătite. Detaliile sunt în <a href="https://smstunnel.io/ro/blog/coduri-de-autentificare-prin-sms-fara-twilio/">ghidul despre codurile de autentificare</a>.</p>
<h2 id="alte-unelte-care-trimit-de-pe-telefon">Alte unelte care trimit de pe telefon</h2>
<p>SMSTunnel nu e singura unealtă care trimite de pe un telefon Android. <a href="https://smstunnel.io/compare/textbee/">textbee</a> are un plan gratuit cu 50 de mesaje pe zi (300 pe lună) pe un singur telefon, în care se numără și mesajele primite, apoi Pro la 14,99 $ și Scale la 29,99 $ pe lună. <a href="https://smstunnel.io/compare/httpsms/">httpSMS</a> are 200 de mesaje gratuite pe lună, trimise și primite la un loc, și planuri plătite între 10 $ și 350 $ pe lună. Ca și SMSTunnel, niciuna nu te taxează pe mesaj: plătești tarifele operatorului tău. Amândouă sunt open source, le poți instala pe serverul tău și se instalează pe telefon dintr-un fișier APK, nu din Google Play.</p>
<h2 id="când-merită-un-api-sms">Când merită un API SMS</h2>
<p>Un API SMS e alegerea mai bună când:</p>
<ul>
<li>trimiți volume mari: numerele înregistrate și numerele scurte trimit multe mesaje pe secundă, pe când SMSTunnel trimite cât poate un telefon;</li>
<li>ai nevoie de un număr scurt, de un număr gratuit (toll-free) sau de un nume de expeditor în locul unui număr de telefon;</li>
<li>livrarea nu are voie să depindă de un telefon pornit și conectat la internet;</li>
<li>trimiți în multe țări și nu vrei câte un SIM pentru fiecare;</li>
<li>vrei MMS, WhatsApp sau RCS din același API, ori un serviciu care verifică singur codurile de autentificare;</li>
<li>nu ai un telefon Android pe care să-l ții pornit și conectat.</li>
</ul>
<p>Poți folosi și ambele variante: numerele de la furnizor funcționează în continuare, iar mesajele de zi cu zi pleacă de pe numărul tău.</p>
<h2 id="limitele-unui-singur-telefon">Limitele unui singur telefon</h2>
<p>Un plan fix nu transformă telefonul într-un operator. Ține cont de aceste limite:</p>
<ul>
<li><strong>Ritmul.</strong> API-ul primește 30 de cereri de trimitere pe minut, pe fiecare endpoint de trimitere.</li>
<li><strong>Limitele zilnice.</strong> Gratuit, Starter și Standard au limite zilnice. Profesional și Enterprise nu au, dar au o limită de ritm, ca să-ți protejeze SIM-ul.</li>
<li><strong>Un destinatar pe mesaj.</strong> Fiecare om primește propriul mesaj.</li>
<li><strong>Un telefon pornit.</strong> Dacă telefonul e offline, mesajul așteaptă și pleacă atunci când revine, timp de cel mult 3 zile; după aceea e marcat ca eșuat.</li>
<li><strong>Starea mesajului.</strong> Afli dacă e în așteptare, trimis sau eșuat, așa cum raportează telefonul tău.</li>
</ul>
<p>Dacă aplicația ta trimite mesaje pentru mai mulți clienți, fiecare de pe telefonul și numărul lui, ai nevoie de planul Enterprise: vezi <a href="https://smstunnel.io/ro/blog/sms-de-pe-numarul-fiecarui-client/">articolul despre SMS de pe numărul fiecărui client</a>.</p>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="plătesc-ceva-pe-mesaj-la-smstunnel">Plătesc ceva pe mesaj la SMSTunnel?</h3>
<p>Nu. Planurile au preț fix, iar mesajele pleacă de pe SIM-ul tău, deci se aplică SMS-urile incluse sau tarifele obișnuite ale operatorului tău.</p>
<h3 id="primesc-factură-în-lei">Primesc factură în lei?</h3>
<p>Da. Prețurile sunt în dolari americani, fără taxe, iar clienții din România primesc factura fiscală în lei, la cursul BNR, prin e-Factura. NARBOWEB SRL este neplătitor de TVA.</p>
<h3 id="îmi-ajunge-planul-gratuit">Îmi ajunge planul Gratuit?</h3>
<p>Pentru teste și volume mici, da, și nu cere card bancar: 25 de mesaje pe zi și 500 pe lună, trimise exact cum le-ai scris, plus 50 de coduri de autentificare pe zi. Mesajele pe care software-ul tău le trimite peste această limită, până la încă 25 pe zi, se încheie cu rândul „free by smstunnel.io”. Planurile plătite nu adaugă nimic.</p>]]></content:encoded>
    </item>
    <item>
      <title>Notificări SMS în WooCommerce de pe numărul tău, fără Twilio</title>
      <link>https://smstunnel.io/ro/blog/sms-woocommerce-fara-twilio/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/sms-woocommerce-fara-twilio/</guid>
      <pubDate>Tue, 03 Nov 2026 08:30:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>WooCommerce</category>
      <category>WordPress</category>
      <description>Clienții magazinului tău WooCommerce primesc SMS despre comenzi de pe telefonul și numărul tău, cu un plugin gratuit: stări, AWB și alerte de comandă nouă.</description>
      <content:encoded><![CDATA[<p><a href="https://www.youtube.com/watch?v=0QQv9VDD5A8"><img src="https://smstunnel.io/video/woocommerce.webp" alt="Notificări SMS pentru comenzile WooCommerce, de pe telefonul tău" /></a></p><p>Într-un magazin online din România, telefonul sună des cu aceeași întrebare: „Ați primit comanda mea?” sau „Când vine curierul?”. Un SMS scurt, trimis exact când se schimbă starea comenzii, răspunde la întrebare înainte să fie pusă. Contează mai ales la comenzile cu plata ramburs, unde clientul vrea să știe că totul e în regulă și să aibă banii pregătiți când vine curierul.</p>
<p>De obicei, pentru asemenea mesaje îți faci cont la un furnizor de API SMS, cum e Twilio: închiriezi un număr de la el și plătești fiecare mesaj. Pentru multe magazine mici există o cale mai simplă. Magazinul tău WooCommerce îi predă fiecare mesaj contului tău SMSTunnel, iar aplicația SMSTunnel de pe telefonul tău Android îl trimite de pe numărul tău, cu SIM-ul și abonamentul tău. Clientul vede numărul magazinului, la care poate suna sau răspunde, iar SMSTunnel nu cere bani pentru fiecare mesaj.</p>
<p>Mai jos configurezi totul de la zero, cu două pluginuri gratuite de pe WordPress.org: pluginul de bază SMSTunnel, care leagă site-ul de telefon, și SMSTunnel for WooCommerce, care adaugă mesajele pentru comenzi.</p>
<h2 id="cum-funcționează">Cum funcționează</h2>
<ol>
<li>În magazin se întâmplă ceva: un client plasează o comandă sau tu treci o comandă în starea Finalizată (Completed).</li>
<li>Add-on-ul scrie mesajul după șablonul tău și îl predă contului tău SMSTunnel.</li>
<li>Aplicația SMSTunnel de pe telefonul tău îl trimite ca SMS obișnuit, de pe numărul tău.</li>
</ol>
<p>Fiecare mesaj merge la un singur număr: telefonul de facturare al comenzii. Dacă telefonul tău e offline o vreme, mesajele așteaptă în cont și pleacă atunci când revine online, timp de cel mult 3 zile.</p>
<h2 id="de-ce-ai-nevoie">De ce ai nevoie</h2>
<ul>
<li>WordPress 5.0 sau mai nou, PHP 7.4 sau mai nou și WooCommerce 5.0 sau mai nou</li>
<li>Un telefon Android (Android 7.0 sau mai nou) cu SIM, care rămâne pornit și conectat la internet; poate fi chiar telefonul firmei, cu numărul pe care clienții îl știu deja</li>
<li><a href="https://play.google.com/store/apps/details?id=io.smstunnel.app">Aplicația SMSTunnel din Google Play</a>, autentificată în contul tău SMSTunnel (planul Gratuit nu cere card bancar)</li>
<li><a href="https://smstunnel.io/ro/integrations/smstunnel/">Pluginul de bază SMSTunnel</a> și <a href="https://smstunnel.io/ro/integrations/woocommerce/">SMSTunnel for WooCommerce</a>, ambele gratuite pe WordPress.org</li>
</ul>
<h2 id="pasul-1-leagă-site-ul-de-telefon">Pasul 1: leagă site-ul de telefon</h2>
<p>Instalează întâi pluginul de bază: în administrarea WordPress mergi la <strong>Module → Adaugă modul</strong>, cauți <strong>SMSTunnel</strong>, apeși <strong>Instalează acum</strong> și apoi <strong>Activează</strong>.</p>
<p>Deschide <strong>SMSTunnel → Quick Setup</strong>. În aplicația SMSTunnel de pe telefon intri la <strong>Conexiuni → Conectează cu cod QR</strong>, scanezi codul și aprobi conexiunea pe telefon. Conexiunea o poți elimina oricând din aplicație, de la <strong>Conexiuni</strong>.</p>
<p>Dacă preferi o cheie API, o creezi în dashboard, la <strong>Apps → Add an app</strong>, și o folosești în WordPress la <strong>SMSTunnel → Settings → Connect with API Key</strong>.</p>
<h2 id="pasul-2-instalează-smstunnel-for-woocommerce">Pasul 2: instalează SMSTunnel for WooCommerce</h2>
<p>Tot din <strong>Module → Adaugă modul</strong> cauți <strong>SMSTunnel for WooCommerce</strong>, apeși <strong>Instalează acum</strong> și <strong>Activează</strong>. Setările lui sunt în <strong>WooCommerce → Setări → SMS</strong>.</p>
<p>Add-on-ul merge atât cu blocul Checkout, cât și cu pagina clasică de finalizare a comenzii, și e compatibil cu High-Performance Order Storage (HPOS).</p>
<h2 id="pasul-3-alege-la-ce-stări-pleacă-un-mesaj">Pasul 3: alege la ce stări pleacă un mesaj</h2>
<p>În tab-ul SMS, fiecare mesaj pentru client are propriul comutator: „New Order (Pending)” (comanda așteaptă plata, de exemplu cât timp clientul plătește pe alt site), „Order Processing”, „Order Completed”, „Order On Hold”, „Order Cancelled”, „Order Refunded” și „Shipment Tracking” (numărul de urmărire al coletului).</p>
<p>Primele trei sunt pornite implicit, iar add-on-ul urmează tab-ul de la început, chiar dacă nu l-ai salvat niciodată. Așa că deschide tab-ul imediat după activare și debifează ce nu vrei.</p>
<p>La plasarea comenzii, clientul primește un singur mesaj. Dacă comanda încă așteaptă plata, de exemplu cât timp clientul plătește cu cardul pe site-ul procesatorului de plăți, pleacă „New Order (Pending)”. Altfel pleacă mesajul pentru starea pe care o are comanda în acel moment, de exemplu „Order Processing” la plata ramburs.</p>
<p><img src="https://smstunnel.io/screenshots/woocommerce/screen-1.png" alt="Tab-ul SMS din setările WooCommerce, cu un comutator pentru fiecare stare a comenzii și notificările pentru administrator" loading="lazy" decoding="async" width="1675" height="1841"></p>
<p>Captura vine dintr-o versiune mai veche, care avea sus o bifă „Enable WooCommerce 2FA”. Bifa nu făcea nimic și a fost scoasă în versiunea 1.0.5: codurile de autentificare pentru „Contul meu” vin din pluginul de bază (vezi întrebările de la final).</p>
<h2 id="pasul-4-scrie-mesajele-în-română">Pasul 4: scrie mesajele în română</h2>
<p>Mesajele implicite sunt în engleză, așa că le rescrii la <strong>SMS Message Templates</strong>, cu variabilele add-on-ului:</p>





































<table><thead><tr><th>Variabilă</th><th>Ce devine</th></tr></thead><tbody><tr><td><code>{order_id}</code></td><td>Numărul comenzii</td></tr><tr><td><code>{order_total}</code></td><td>Totalul comenzii, cu moneda magazinului</td></tr><tr><td><code>{order_status}</code></td><td>Starea curentă a comenzii</td></tr><tr><td><code>{customer_name}</code></td><td>Numele complet al clientului</td></tr><tr><td><code>{customer_first_name}</code></td><td>Prenumele clientului</td></tr><tr><td><code>{site_name}</code></td><td>Numele site-ului</td></tr><tr><td><code>{tracking_number}</code>, <code>{tracking_provider}</code></td><td>Numărul de urmărire și firma de curierat (doar în „Tracking Message”)</td></tr></tbody></table>
<p>Câteva variante în română:</p>
<ul>
<li>Comandă nouă: „Bună, {customer_first_name}! Am primit comanda #{order_id} ({order_total}) pe {site_name}. Te anunțăm când pleacă spre tine.”</li>
<li>Comandă în procesare: „Comanda ta #{order_id} e confirmată și o pregătim de livrare.”</li>
<li>Comandă finalizată: „Comanda #{order_id} a fost finalizată. Îți mulțumim că ai cumpărat de pe {site_name}!”</li>
</ul>
<p>Mesajul pentru „Order Processing” pleacă și la comenzile cu plata ramburs, și la cele plătite online, așa că nu scrie în el ceva valabil doar pentru unele dintre ele.</p>
<p><img src="https://smstunnel.io/screenshots/woocommerce/screen-2.png" alt="Șabloanele de mesaje din tab-ul SMS: câte un mesaj editabil pentru fiecare stare, pentru urmărirea coletului și pentru mesajul de comandă nouă către administrator" loading="lazy" decoding="async" width="1371" height="1744"></p>
<h2 id="mesaje-pentru-tine-comenzi-noi-și-stoc-redus">Mesaje pentru tine: comenzi noi și stoc redus</h2>
<p>În același tab pui numărul tău la <strong>Admin Phone Number</strong> (un singur număr, cu +40 în față) și pornești:</p>
<ul>
<li><strong>Notify Admin on New Order</strong>: un mesaj pentru fiecare comandă plasată, chiar dacă mesajul pentru client e oprit sau clientul nu și-a lăsat numărul</li>
<li><strong>Low Stock Alert</strong>: un mesaj când un produs are stoc redus sau epuizat</li>
</ul>
<h2 id="numărul-de-urmărire-awb">Numărul de urmărire (AWB)</h2>
<p>Mesajul „Shipment Tracking” pleacă atunci când adaugi un număr de urmărire cu pluginul gratuit Advanced Shipment Tracking, câte un mesaj pentru fiecare număr. Celelalte pluginuri de urmărire nu anunță alte pluginuri când adaugă un număr, așa că nu sunt acceptate direct.</p>
<p>Dacă AWB-urile tale vin din pluginul unui curier, un dezvoltator poate trimite mesajul din cod, declanșând acțiunea pe care o ascultă add-on-ul:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="php"><code><span class="line"><span style="color:#B392F0">do_action</span><span style="color:#E1E4E8">( </span><span style="color:#9ECBFF">'woocommerce_shipment_tracking_number_added'</span><span style="color:#E1E4E8">, $order_id, $tracking_number, $tracking_provider );</span></span></code></pre>
<h2 id="cere-numărul-cu-40-la-finalizarea-comenzii">Cere numărul cu +40 la finalizarea comenzii</h2>
<p>Mesajele pentru client merg la telefonul de facturare, exact cum l-a scris clientul. Add-on-ul nu verifică și nu completează numărul, iar unul fără + și prefixul țării poate ajunge în altă țară. Comenzile fără telefon nu primesc niciun mesaj.</p>
<p>Mulți clienți scriu din obișnuință „0721 123 456”. Spune-le clar pe pagina de finalizare a comenzii, în eticheta câmpului sau într-o notă scurtă, că numărul trebuie scris cu prefixul țării: „+40 721 123 456”.</p>
<p>În pagina comenzii ai și o casetă <strong>Send SMS</strong>, pentru un mesaj ocazional către client, iar mesajele trimise la schimbarea stării apar în notele comenzii.</p>
<h2 id="câte-mesaje-trimite-magazinul-tău">Câte mesaje trimite magazinul tău?</h2>
<p>Socotește două-trei mesaje pe comandă (unul la plasare, unul la finalizare, poate unul cu AWB-ul), plus unul pentru tine, dacă ai pornit alerta de comandă nouă.</p>
<ul>
<li><strong>Gratuit</strong>: 25 de mesaje pe zi și 500 pe lună, trimise exact cum le-ai scris; site-ul mai poate trimite până la 25 pe zi, care se încheie cu un scurt rând „free by smstunnel.io”.</li>
<li><strong>Starter</strong>, 9 $ pe lună: 300 de mesaje pe zi și 5.000 pe lună.</li>
<li><strong>Standard</strong>, 19 $ pe lună: 2.000 de mesaje pe zi și 30.000 pe lună.</li>
</ul>
<p>Un magazin cu câteva comenzi pe zi se descurcă pe planul Gratuit. Unul cu zece comenzi pe zi și trei mesaje pe comandă trimite cam 30 de mesaje pe zi și are nevoie de Starter. Prețurile sunt în dolari, fără taxe, iar clienții din România primesc factura fiscală în lei, la cursul BNR, prin e-Factura. Mesajele pleacă prin abonamentul tău, deci se aplică tarifele operatorului pentru SMS sau SMS-urile incluse în abonament; verifică dacă abonamentul permite folosirea în scop comercial. Detalii pe <a href="https://smstunnel.io/ro/pricing/">pagina de prețuri</a> și în <a href="https://smstunnel.io/ro/blog/cost-sms-sim-propriu-vs-api/">comparația dintre SIM-ul propriu și un API SMS</a>.</p>
<h2 id="când-rămâne-twilio-alegerea-mai-bună">Când rămâne Twilio alegerea mai bună</h2>
<p>Telefonul tău e potrivit pentru mesajele pe care un telefon le trimite fără efort: stări de comandă, mementouri, coduri de autentificare. Un furnizor de API SMS se potrivește mai bine dacă trimiți volume mari, vrei un nume de expeditor în locul unui număr, ai nevoie de coduri scurte sau scrii clienților din multe țări. Comparația completă e pe <a href="https://smstunnel.io/compare/twilio/">SMSTunnel vs Twilio</a>, iar cele două pot merge și împreună.</p>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="pot-clienții-să-răspundă">Pot clienții să răspundă?</h3>
<p>Da. Mesajele pleacă de pe numărul tău, așa că răspunsurile ajung pe telefonul tău ca orice alt SMS. Dacă pornești în aplicație sincronizarea mesajelor primite, le poți citi și poți răspunde la ele și de pe computer.</p>
<h3 id="pot-pune-coduri-de-autentificare-prin-sms-la-contul-meu">Pot pune coduri de autentificare prin SMS la „Contul meu”?</h3>
<p>Da, din pluginul de bază: pornești <strong>WordPress Login 2FA</strong> la <strong>SMSTunnel → Settings</strong>, iar opțiunea acoperă și autentificarea din „Contul meu” WooCommerce. Pașii sunt în ghidul despre <a href="https://smstunnel.io/ro/blog/coduri-de-autentificare-prin-sms-fara-twilio/">coduri de autentificare prin SMS fără Twilio</a>.</p>
<h3 id="merge-și-cu-pluginurile-de-abonamente">Merge și cu pluginurile de abonamente?</h3>
<p>Mesajele de stare urmează orice schimbare de stare a unei comenzi WooCommerce, inclusiv pe cele făcute de pluginurile de abonamente.</p>
<h3 id="pot-cripta-mesajele-despre-comenzi">Pot cripta mesajele despre comenzi?</h3>
<p>Da, opțional. Pornești criptarea end-to-end în setările pluginului de bază, iar site-ul criptează fiecare mesaj pentru telefonul tău înainte să plece din WordPress, așa că SMSTunnel nu poate citi textul. Un mesaj criptat intră în limita zilnică și e refuzat peste ea, pentru că nu poate purta rândul „free by smstunnel.io”. Ce se criptează și ce nu, în articolul despre <a href="https://smstunnel.io/ro/blog/sms-criptat-end-to-end/">SMS criptat end-to-end</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Coduri de autentificare prin SMS fără Twilio: Supabase, Auth0, Clerk și Better Auth</title>
      <link>https://smstunnel.io/ro/blog/coduri-de-autentificare-prin-sms-fara-twilio/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/coduri-de-autentificare-prin-sms-fara-twilio/</guid>
      <pubDate>Tue, 03 Nov 2026 08:20:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>Coduri de autentificare</category>
      <category>Autentificare</category>
      <description>Trimite codurile de autentificare din Supabase, Auth0, Clerk și Better Auth de pe telefonul tău Android, de pe numărul tău, fără cont la un API de SMS.</description>
      <content:encoded><![CDATA[<p><a href="https://www.youtube.com/watch?v=Rey_Kla6WkQ"><img src="https://smstunnel.io/video/setup-android.webp" alt="Configurează SMSTunnel pe telefonul tău Android în 2 minute" /></a></p><p>Codurile de autentificare prin SMS sunt, de obicei, primul motiv pentru care un proiect își face cont la un API de SMS. Închiriezi un număr, îl înregistrezi acolo unde țara destinatarilor o cere și plătești pentru fiecare mesaj și pentru fiecare verificare. Dacă utilizatorii aplicației tale sunt mai ales în România, există o cale mai simplă: codurile pleacă de pe un telefon Android pe care îl ai deja, cu abonamentul pe care îl plătești deja.</p>
<p>Asta face SMSTunnel. Platforma ta de autentificare generează și verifică în continuare codurile, exact ca acum. Un pachet mic, <a href="https://www.npmjs.com/package/@narcisbodea/smstunnel-otp"><code>@narcisbodea/smstunnel-otp</code></a>, predă fiecare cod contului tău SMSTunnel, iar aplicația SMSTunnel de pe telefon îl trimite de pe SIM-ul tău. Utilizatorii primesc codul de la un număr pe care îl recunosc și la care pot răspunde.</p>
<p>Mai jos găsești cele patru platforme la care pachetul se leagă în câteva rânduri de cod (Supabase Auth, Auth0, Clerk și Better Auth), Ory, care nu are nevoie de cod deloc, autentificarea în WordPress și limitele pe care e bine să le știi înainte să treci pe telefonul tău.</p>
<h2 id="cum-funcționează">Cum funcționează</h2>
<ol>
<li>Un utilizator cere un cod: se conectează cu numărul de telefon, își adaugă unul sau confirmă autentificarea în doi pași.</li>
<li>Platforma ta generează codul și apelează hook-ul, Action-ul, webhook-ul sau funcția ta, în locul furnizorului de SMS.</li>
<li>Pachetul trimite mesajul la endpoint-ul SMSTunnel pentru coduri, <a href="https://smstunnel.io/api-reference/#send-2fa"><code>POST /api/v1/sms/send-2fa</code></a>, cu cheia ta API.</li>
<li>Contul tău SMSTunnel îi predă mesajul telefonului, iar telefonul îl trimite de pe numărul tău.</li>
<li>Utilizatorul tastează codul, iar platforma ta îl verifică, la fel ca până acum.</li>
</ol>
<p>SMSTunnel nu verifică niciodată codurile. Spre deosebire de Twilio Verify, nu le generează și nu le validează: de asta se ocupă platforma ta, iar SMSTunnel doar livrează mesajul. Codurile au și o limită zilnică proprie, separată de celelalte mesaje, așa că o dimineață cu multe conectări nu consumă din notificările despre comenzi sau din mementouri.</p>
<p>Pachetul nu are dependențe la rulare (folosește doar Fetch și WebCrypto), deci merge în Node 18+, Deno (Supabase Edge Functions), Bun, Cloudflare Workers și Auth0 Actions.</p>
<h2 id="înainte-să-începi">Înainte să începi</h2>
<ol>
<li>Instalează aplicația SMSTunnel din Google Play pe telefonul tău Android și autentifică-te. Intră în dashboard cu același cont: telefonul apare la <strong>Phones</strong>.</li>
<li>În dashboard, deschide <strong>Apps → Add an app</strong>, alege <strong>Website or web app</strong>, dă-i un nume și apasă <strong>Create the key</strong>. Copiază cheia imediat, pentru că apare o singură dată. Păstreaz-o în secretele platformei, niciodată în cod care rulează în browser.</li>
<li>Folosește coduri de 4 până la 10 cifre. Codurile implicite de 6 cifre ale platformelor de mai jos sunt în regulă; cele cu litere nu sunt acceptate.</li>
</ol>
<p>Apoi instalează pachetul:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">npm</span><span style="color:#9ECBFF"> install</span><span style="color:#9ECBFF"> @narcisbodea/smstunnel-otp</span></span></code></pre>
<h2 id="supabase-auth-hook-ul-send-sms">Supabase Auth: hook-ul Send SMS</h2>
<p>În locul furnizorului de SMS integrat, Supabase poate apela un endpoint HTTPS cu numărul utilizatorului și codul. Pachetul îți dă acest endpoint, cu tot cu verificarea semnăturii Standard Webhooks. Creează <code>supabase/functions/send-sms/index.ts</code>:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { createSupabaseSendSmsHook } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> 'npm:@narcisbodea/smstunnel-otp@^1.0.0'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8">Deno.</span><span style="color:#B392F0">serve</span><span style="color:#E1E4E8">(</span></span>
<span class="line"><span style="color:#B392F0">  createSupabaseSendSmsHook</span><span style="color:#E1E4E8">({</span></span>
<span class="line"><span style="color:#E1E4E8">    apiKey: Deno.env.</span><span style="color:#B392F0">get</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'SMSTUNNEL_API_KEY'</span><span style="color:#E1E4E8">)</span><span style="color:#F97583">!</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">    hookSecret: Deno.env.</span><span style="color:#B392F0">get</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'SEND_SMS_HOOK_SECRETS'</span><span style="color:#E1E4E8">)</span><span style="color:#F97583">!</span><span style="color:#E1E4E8">, </span><span style="color:#6A737D">// v1,whsec_...</span></span>
<span class="line"><span style="color:#E1E4E8">    template: </span><span style="color:#9ECBFF">'Codul tău Acme este {code}'</span><span style="color:#E1E4E8">, </span><span style="color:#6A737D">// opțional</span></span>
<span class="line"><span style="color:#E1E4E8">  }),</span></span>
<span class="line"><span style="color:#E1E4E8">);</span></span></code></pre>
<p>Publică funcția fără verificarea JWT, pentru că o protejează semnătura:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">supabase</span><span style="color:#9ECBFF"> functions</span><span style="color:#9ECBFF"> deploy</span><span style="color:#9ECBFF"> send-sms</span><span style="color:#79B8FF"> --no-verify-jwt</span></span></code></pre>
<p>În Supabase Dashboard, deschide <strong>Authentication → Hooks → Add a new hook → Send SMS hook</strong>, alege <strong>HTTPS</strong>, scrie <code>https://&#x3C;project-ref>.supabase.co/functions/v1/send-sms</code>, apoi apasă <strong>Generate secret</strong> și <strong>Create</strong>. Salvează cele două secrete:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">supabase</span><span style="color:#9ECBFF"> secrets</span><span style="color:#9ECBFF"> set</span><span style="color:#9ECBFF"> SMSTUNNEL_API_KEY=...</span><span style="color:#9ECBFF"> SEND_SMS_HOOK_SECRETS='v1,whsec_...'</span></span></code></pre>
<p>La final, pornește furnizorul din <strong>Authentication → Sign In / Providers → Phone</strong>. Câmpurile pentru furnizorul de SMS nu se mai folosesc cât timp hook-ul e pornit. Lasă confirmarea automată a telefonului oprită, altfel înscrierile nu mai cer niciun cod.</p>
<p>Hook-ul trimite codul la numărul primit de la Supabase și adaugă semnul <code>+</code> pe care Supabase îl omite. Dacă SMSTunnel e ocupat sau nu poate fi contactat, răspunde cu 429 sau 503 și <code>retry-after</code>, iar Supabase reîncearcă în cele cinci secunde pe care le are la dispoziție. Pașii compleți, cu configurarea pentru dezvoltare locală, sunt pe <a href="https://smstunnel.io/integrations/supabase/">pagina Supabase Auth</a>.</p>
<h2 id="auth0-o-action-de-tip-custom-phone-provider">Auth0: o Action de tip Custom Phone Provider</h2>
<p>Auth0 își poate preda mesajele pentru telefon unei Action. Declanșatorul <code>custom-phone-provider</code> e cel recomandat de Auth0: un singur furnizor pentru MFA, conectare fără parolă prin SMS și înscriere cu numărul de telefon.</p>
<ol>
<li>Deschide <strong>Branding → Phone Provider → Custom</strong> și alege metoda de livrare <strong>Text</strong>.</li>
<li>În editorul de Action, adaugă dependența <code>@narcisbodea/smstunnel-otp</code> și secretul <code>SMSTUNNEL_API_KEY</code>, apoi lipește:</li>
</ol>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="js"><code><span class="line"><span style="color:#F97583">const</span><span style="color:#E1E4E8"> { </span><span style="color:#79B8FF">createAuth0CustomPhoneProvider</span><span style="color:#E1E4E8"> } </span><span style="color:#F97583">=</span><span style="color:#B392F0"> require</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'@narcisbodea/smstunnel-otp'</span><span style="color:#E1E4E8">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> sendWithSmsTunnel</span><span style="color:#F97583"> =</span><span style="color:#B392F0"> createAuth0CustomPhoneProvider</span><span style="color:#E1E4E8">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#79B8FF">exports</span><span style="color:#E1E4E8">.</span><span style="color:#B392F0">onExecuteCustomPhoneProvider</span><span style="color:#F97583"> =</span><span style="color:#F97583"> async</span><span style="color:#E1E4E8"> (</span><span style="color:#FFAB70">event</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">api</span><span style="color:#E1E4E8">) </span><span style="color:#F97583">=></span><span style="color:#E1E4E8"> {</span></span>
<span class="line"><span style="color:#F97583">  await</span><span style="color:#B392F0"> sendWithSmsTunnel</span><span style="color:#E1E4E8">(event, api);</span></span>
<span class="line"><span style="color:#E1E4E8">};</span></span></code></pre>
<ol start="3">
<li>Salvează și folosește <strong>Send Test Message</strong>. Pentru MFA, pornește și <strong>Use Tenant-Level Messaging Provider</strong> din <strong>Security → Multi-factor Auth → Phone Message</strong>.</li>
</ol>
<p>Codurile pleacă cu textul generat de Auth0, adică cu șablonul tău, în limba utilizatorului. Notificările fără cod, cum ar fi un cont blocat sau o parolă compromisă, pleacă drept mesaje obișnuite sau sunt ignorate dacă dai opțiunea <code>{ nonCodeMessages: 'skip' }</code>. SMSTunnel trimite doar mesaje text, așa că o livrare prin apel vocal e refuzată, cu motivul explicat. Dacă îți trebuie doar MFA, merge și declanșatorul mai vechi Send Phone Message; ambele variante sunt pe <a href="https://smstunnel.io/integrations/auth0/">pagina Auth0</a>.</p>
<h2 id="clerk-webhook-ul-smscreated">Clerk: webhook-ul sms.created</h2>
<p>Când oprești <strong>Delivered by Clerk</strong> pentru un șablon de SMS, Clerk nu mai trimite el mesajul și îți trimite în schimb un webhook <code>sms.created</code>. În Next.js, ajunge fișierul <code>app/api/webhooks/clerk-sms/route.ts</code>:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { createClerkSmsWebhook } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> '@narcisbodea/smstunnel-otp'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">export</span><span style="color:#F97583"> const</span><span style="color:#79B8FF"> POST</span><span style="color:#F97583"> =</span><span style="color:#B392F0"> createClerkSmsWebhook</span><span style="color:#E1E4E8">({</span></span>
<span class="line"><span style="color:#E1E4E8">  apiKey: process.env.</span><span style="color:#79B8FF">SMSTUNNEL_API_KEY</span><span style="color:#F97583">!</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">  signingSecret: process.env.</span><span style="color:#79B8FF">CLERK_SMS_WEBHOOK_SIGNING_SECRET</span><span style="color:#F97583">!</span><span style="color:#E1E4E8">, </span><span style="color:#6A737D">// whsec_...</span></span>
<span class="line"><span style="color:#E1E4E8">});</span></span></code></pre>
<ol>
<li>În Clerk Dashboard, deschide <strong>Webhooks → Add Endpoint</strong>, scrie adresa ta, abonează-te la <code>sms.created</code> și copiază <strong>Signing Secret</strong>.</li>
<li>La <strong>Customization → SMS</strong>, deschide fiecare șablon pe care vrei să-l trimiți de pe telefon (Verification code, Reset password code…) și oprește <strong>Delivered by Clerk</strong>. Setarea se face separat pentru fiecare șablon.</li>
<li>Lasă ruta publică în middleware-ul Clerk: webhook-urile nu au sesiune.</li>
</ol>
<p>Handlerul verifică semnătura Svix și trimite textul generat de Clerk, după ce se asigură că acesta conține codul. Pentru Express și alte framework-uri, vezi <a href="https://smstunnel.io/integrations/clerk/">pagina Clerk</a>.</p>
<h2 id="better-auth-pluginul-phonenumber">Better Auth: pluginul phoneNumber</h2>
<p>Pluginul <code>phoneNumber</code> din Better Auth te întreabă cum să-și trimită codurile, iar <code>smstunnelSendOTP()</code> îi răspunde:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { betterAuth } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> 'better-auth'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { phoneNumber } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> 'better-auth/plugins'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { smstunnelSendOTP } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> '@narcisbodea/smstunnel-otp'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">const</span><span style="color:#79B8FF"> apiKey</span><span style="color:#F97583"> =</span><span style="color:#E1E4E8"> process.env.</span><span style="color:#79B8FF">SMSTUNNEL_API_KEY</span><span style="color:#F97583">!</span><span style="color:#E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">export</span><span style="color:#F97583"> const</span><span style="color:#79B8FF"> auth</span><span style="color:#F97583"> =</span><span style="color:#B392F0"> betterAuth</span><span style="color:#E1E4E8">({</span></span>
<span class="line"><span style="color:#E1E4E8">  plugins: [</span></span>
<span class="line"><span style="color:#B392F0">    phoneNumber</span><span style="color:#E1E4E8">({</span></span>
<span class="line"><span style="color:#E1E4E8">      sendOTP: </span><span style="color:#B392F0">smstunnelSendOTP</span><span style="color:#E1E4E8">({ apiKey, template: </span><span style="color:#9ECBFF">'Codul tău Acme este {code}'</span><span style="color:#E1E4E8"> }),</span></span>
<span class="line"><span style="color:#E1E4E8">      sendPasswordResetOTP: </span><span style="color:#B392F0">smstunnelSendOTP</span><span style="color:#E1E4E8">({ apiKey, template: </span><span style="color:#9ECBFF">'Codul Acme pentru resetarea parolei este {code}'</span><span style="color:#E1E4E8"> }),</span></span>
<span class="line"><span style="color:#E1E4E8">    }),</span></span>
<span class="line"><span style="color:#E1E4E8">  ],</span></span>
<span class="line"><span style="color:#E1E4E8">});</span></span></code></pre>
<p>Better Auth rulează <code>sendOTP</code> în fundal când poate, așa că autentificarea nu așteaptă trimiterea. Utilizatorii din România își scriu adesea numărul ca 0721 123 456, fără prefixul țării. Pentru ei, adaugă opțiunea <code>defaultCountryCode: '40'</code>, sau verifică numerele cu <code>phoneNumberValidator</code> din plugin. Celelalte opțiuni sunt pe <a href="https://smstunnel.io/integrations/better-auth/">pagina Better Auth</a>.</p>
<h2 id="ory-wordpress-și-orice-altă-platformă">Ory, WordPress și orice altă platformă</h2>
<p><strong>Ory</strong> (Kratos găzduit la tine sau Ory Network) nu are nevoie de pachet: canalul HTTP al curierului său apelează direct SMSTunnel, cu câteva rânduri de configurare. Vezi <a href="https://smstunnel.io/integrations/ory/">pagina Ory</a>.</p>
<p><strong>Site-urile WordPress</strong> primesc coduri de autentificare din <a href="https://smstunnel.io/ro/integrations/smstunnel/">pluginul SMSTunnel</a>: <strong>SMSTunnel → Settings → Two-Factor Authentication (2FA)</strong>, apoi <strong>WordPress Login 2FA</strong>. Acoperă și autentificarea din „Contul meu” al magazinelor WooCommerce, pentru rolurile pe care le alegi, iar codurile sunt valabile implicit 5 minute.</p>
<p><strong>Orice altă platformă</strong> poate folosi <code>sendCode()</code> din același pachet:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> { sendCode, SmsTunnelOtpError } </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> '@narcisbodea/smstunnel-otp'</span><span style="color:#E1E4E8">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F97583">await</span><span style="color:#B392F0"> sendCode</span><span style="color:#E1E4E8">({</span></span>
<span class="line"><span style="color:#E1E4E8">  apiKey: process.env.</span><span style="color:#79B8FF">SMSTUNNEL_API_KEY</span><span style="color:#F97583">!</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">  to: </span><span style="color:#9ECBFF">'+40712345678'</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">  code: </span><span style="color:#9ECBFF">'123456'</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#E1E4E8">  template: </span><span style="color:#9ECBFF">'Codul tău Acme este {code}'</span><span style="color:#E1E4E8">, </span><span style="color:#6A737D">// sau message: 'textul întreg'; codul e adăugat dacă lipsește</span></span>
<span class="line"><span style="color:#6A737D">  // deviceId, defaultCountryCode, serverUrl, timeoutMs (implicit 10000)</span></span>
<span class="line"><span style="color:#E1E4E8">});</span></span></code></pre>
<p>Când ceva nu merge, aruncă o eroare <code>SmsTunnelOtpError</code>, cu <code>status</code> (codul HTTP), un <code>code</code> precum <code>RATE_LIMITED</code> și <code>retryable: true</code> pentru erorile la care merită să reîncerci.</p>
<h2 id="ce-înseamnă-cod-pentru-smstunnel">Ce înseamnă „cod” pentru SMSTunnel</h2>
<p>Endpoint-ul pentru coduri refuză mesajele fără cod:</p>
<ul>
<li>Un cod are între 4 și 10 cifre de sine stătătoare (<code>482913</code>, <code>Cod: 1234</code>, <code>G-123456</code>) sau două grupuri de câte 3 cifre legate prin cratimă (<code>123-456</code>).</li>
<li>Nu sunt coduri: combinațiile cu litere, numerele de 11 cifre sau mai lungi, cifrele scrise imediat după <code>+</code> (un număr de telefon) și cifrele lipite de altele prin <code>.</code>, <code>,</code>, <code>:</code> sau <code>/</code>, cum ar fi prețurile, orele și datele.</li>
<li>Un mesaj poate avea cel mult 320 de caractere. Pachetul refuză unul mai lung înainte să apeleze SMSTunnel.</li>
</ul>
<p>Un mesaj fără cod e refuzat cu eroarea 400. Mesajele care nu conțin coduri pleacă prin <a href="https://smstunnel.io/api-reference/#send-sms">endpoint-ul obișnuit de trimitere</a>.</p>
<h2 id="limite-și-când-se-potrivește-mai-bine-un-api-de-sms">Limite și când se potrivește mai bine un API de SMS</h2>
<p>Înainte să treci pe telefonul tău, e bine să știi câteva lucruri:</p>
<ul>
<li><strong>Un singur număr pe mesaj.</strong> Fiecare cod merge la o singură persoană.</li>
<li><strong>30 de trimiteri pe minut.</strong> Peste această limită, SMSTunnel răspunde cu 429, iar pachetul marchează eroarea ca una la care se poate reîncerca.</li>
<li><strong>Telefonul trebuie să fie pornit și conectat la internet.</strong> Dacă e offline, codul așteaptă și pleacă imediat ce telefonul revine. Un cod care așteaptă prea mult poate expira până ajunge, așa că ține telefonul încărcat și conectat.</li>
<li><strong>Limita zilnică.</strong> Planul Gratuit include 50 de coduri de autentificare pe zi. Începând cu <a href="https://smstunnel.io/ro/pricing/">planul Starter, de 9 $ pe lună</a>, codurile de autentificare nu mai au limită zilnică. Prețurile sunt în dolari, fără taxe, iar clienții din România primesc factura fiscală în lei, la cursul BNR, prin e-Factura.</li>
<li><strong>Se aplică condițiile operatorului tău</strong>, pentru că mesajele pleacă prin abonamentul tău de telefonie mobilă.</li>
</ul>
<p>Ca reper, paginile Twilio indicau, când le-am verificat în noiembrie 2026, 0,05 $ pentru fiecare verificare reușită prin Twilio Verify, plus 0,0083 $ pentru fiecare SMS în SUA, iar prețurile diferă de la o țară la alta. Twilio sau un alt furnizor de API pentru SMS rămâne alegerea mai bună dacă trimiți volume mari, ai nevoie de numere scurte (short codes), de un nume de expeditor în locul numărului, de numere 10DLC în SUA sau de multe țări. Le poți folosi și pe amândouă: vezi <a href="https://smstunnel.io/compare/twilio/">SMSTunnel comparat cu Twilio</a> și <a href="https://smstunnel.io/ro/blog/cost-sms-sim-propriu-vs-api/">cât costă SMS-urile trimise de pe SIM-ul tău</a>.</p>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="trebuie-să-schimb-felul-în-care-platforma-generează-sau-verifică-codurile">Trebuie să schimb felul în care platforma generează sau verifică codurile?</h3>
<p>Nu. Supabase, Auth0, Clerk, Better Auth și Ory generează, păstrează și verifică în continuare codurile. Se schimbă doar livrarea.</p>
<h3 id="pot-scrie-eu-textul-mesajului">Pot scrie eu textul mesajului?</h3>
<p>Da. Dă o opțiune <code>template</code> cu <code>{code}</code> în locul în care vrei codul, de exemplu „Codul tău Acme este {code}”. Fără ea, Auth0 și Clerk trimit textul generat din propriile șabloane.</p>
<h3 id="pot-trimite-coduri-de-pe-mai-multe-telefoane">Pot trimite coduri de pe mai multe telefoane?</h3>
<p>Poate trimite oricare dintre telefoanele legate de contul tău. <code>sendCode()</code> și <code>smstunnelSendOTP()</code> primesc un <code>deviceId</code> ca să alegi unul, iar Action-ul din Auth0 îl citește din secretul <code>SMSTUNNEL_DEVICE_ID</code>. Fără el, trimite telefonul tău implicit.</p>
<h3 id="rămâne-codul-scris-undeva-în-jurnale">Rămâne codul scris undeva în jurnale?</h3>
<p>Pachetul nu scrie în jurnale nici codurile, nici cheile. Fiecare handler de webhook ține minte și ID-urile webhook-urilor recente (în instanța care rulează), așa că un webhook reîncercat nu trimite același cod de două ori.</p>]]></content:encoded>
    </item>
    <item>
      <title>SMS pentru formularele WordPress: Contact Form 7, WPForms, Gravity Forms, Fluent Forms și Forminator</title>
      <link>https://smstunnel.io/ro/blog/sms-pentru-formulare-wordpress/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/sms-pentru-formulare-wordpress/</guid>
      <pubDate>Tue, 03 Nov 2026 08:10:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>WordPress</category>
      <category>Formulare</category>
      <description>Primești un SMS pentru fiecare formular trimis în Contact Form 7, WPForms, Gravity Forms, Fluent Forms sau Forminator, iar vizitatorul primește confirmarea.</description>
      <content:encoded><![CDATA[<p><a href="https://www.youtube.com/watch?v=UJRPg3IZBkM"><img src="https://smstunnel.io/video/wordpress-plugin.webp" alt="Trimite mesaje din WordPress prin propriul telefon" /></a></p><p>Un cabinet stomatologic, un service auto sau un salon primesc multe cereri prin formularul de pe site: o programare, o cerere de ofertă, o întrebare despre preț. Pluginul de formulare trimite de obicei cererea pe email, iar emailul așteaptă până se uită cineva în căsuță. Între timp, clientul poate să fi sunat deja la altcineva.</p>
<p>Un SMS ajunge pe telefonul pe care îl ai oricum la tine. Iar omul care a completat formularul vrea să știe că cererea a ajuns: un mesaj scurt de confirmare, de pe un număr la care poate suna sau răspunde, îl liniștește mai bine decât o pagină de „Mulțumim” pe care o închide imediat.</p>
<p>SMSTunnel face amândouă lucrurile pentru cinci pluginuri de formulare: Contact Form 7, WPForms, Gravity Forms, Fluent Forms și Forminator. Site-ul tău îi predă fiecare mesaj contului tău SMSTunnel, iar aplicația SMSTunnel de pe telefonul tău Android îl trimite de pe numărul tău. Mai jos găsești pașii comuni, apoi setările fiecărui plugin. Pluginurile SMSTunnel sunt doar în engleză, așa că numele setărilor apar mai jos exact ca pe ecran; dacă WordPress-ul tău e în română, unele meniuri ale pluginurilor de formulare pot apărea traduse.</p>
<h2 id="două-mesaje-pentru-fiecare-formular">Două mesaje pentru fiecare formular</h2>
<p>Fiecare integrare de mai jos are aceleași două mesaje, pe care le folosești separat sau împreună:</p>
<ul>
<li><strong>Un mesaj pentru tine sau pentru echipă</strong>, când cineva trimite formularul. Poți trece mai multe numere, iar fiecare primește propriul mesaj. În text pui răspunsurile din formular: numele, telefonul, ce a scris omul.</li>
<li><strong>O confirmare pentru cel care a completat formularul</strong>, la numărul trecut chiar de el. Add-on-urile îi spun SMS (2) sau Autoresponder.</li>
</ul>
<p>Mesajele pleacă după fiecare formular trimis cu succes. Dacă telefonul tău e offline o vreme, ele așteaptă și pleacă atunci când revine.</p>
<h2 id="întâi-leagă-site-ul-de-telefon">Întâi, leagă site-ul de telefon</h2>
<p>Toate cele cinci au nevoie de pluginul de bază SMSTunnel, gratuit, legat de telefonul tău:</p>
<ol>
<li>Instalează <a href="https://play.google.com/store/apps/details?id=io.smstunnel.app">aplicația SMSTunnel din Google Play</a> pe telefonul tău Android și autentifică-te.</li>
<li>În WordPress, mergi la <strong>Module → Adaugă modul</strong>, caută <strong>SMSTunnel</strong>, apoi <strong>Instalează acum</strong> și <strong>Activează</strong>.</li>
<li>Deschide <strong>SMSTunnel → Quick Setup</strong>. În aplicație intri la <strong>Conexiuni → Conectează cu cod QR</strong>, scanezi codul și aprobi conexiunea pe telefon.</li>
</ol>
<p>Merge și cu o cheie API, la <strong>SMSTunnel → Settings → Connect with API Key</strong>, ca în videoclipul de mai sus. Înainte să treci mai departe, trimite-ți un mesaj de test din <strong>SMSTunnel → Send SMS</strong>: dacă ajunge, restul ține doar de setările formularului. Despre pluginul de bază, inclusiv codurile de autentificare prin SMS la autentificarea în WordPress, afli mai multe pe <a href="https://smstunnel.io/ro/integrations/smstunnel/">pagina pluginului</a>.</p>
<h2 id="contact-form-7">Contact Form 7</h2>
<p>Instalează <strong>SMSTunnel for CF7</strong> din <strong>Module → Adaugă modul</strong>. Apoi mergi la <strong>Contact → Contact Forms</strong>, editezi formularul și deschizi tab-ul <strong>SMS</strong> (îl văd doar administratorii).</p>
<ul>
<li>Bifezi <strong>Send SMS notification when this form is submitted</strong>, treci numărul tău (sau mai multe, separate prin virgulă) la <strong>Recipient Phone Number(s)</strong> și scrii mesajul la <strong>Message Body</strong>.</li>
<li>Pentru confirmare bifezi <strong>Use SMS (2)</strong>. La <strong>Recipient Phone Number</strong> e trecut implicit <code>[your-phone]</code>, adică telefonul completat de vizitator; schimbă eticheta dacă la tine câmpul are alt nume.</li>
</ul>
<p>În mesaj poți folosi orice câmp al formularului, ca <code>[your-name]</code> sau <code>[your-message]</code>, plus <code>[_date]</code>, <code>[_time]</code>, <code>[_site_title]</code>, <code>[_site_url]</code>, <code>[_post_title]</code> și <code>[_post_url]</code>. Alte etichete speciale nu sunt înlocuite. Un exemplu pentru un cabinet: primul mesaj e pentru tine, al doilea e confirmarea pentru pacient.</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>Programare nouă de la [your-name]: [your-message]. Telefon: [your-phone]</span></span>
<span class="line"><span></span></span>
<span class="line"><span>Bună, [your-name]! Am primit cererea ta de programare și te sunăm în cel mult o zi lucrătoare.</span></span></code></pre>
<p><img src="https://smstunnel.io/screenshots/cf7/screen-1.png" alt="Tab-ul SMS al unui formular Contact Form 7: mesajul pentru tine, cu numerele și textul, și SMS (2), confirmarea pentru vizitator" loading="lazy" decoding="async" width="1758" height="1843"></p>
<p>Toate detaliile sunt pe <a href="https://smstunnel.io/integrations/contact-form-7/">pagina Contact Form 7</a> (în engleză).</p>
<h2 id="wpforms">WPForms</h2>
<p>Instalezi <strong>SMSTunnel for WPForms</strong>. E făcut pentru WPForms Lite, varianta gratuită, deci nu ai nevoie de WPForms Pro. Deschizi formularul în editorul WPForms și mergi la <strong>Settings → SMS</strong>.</p>
<ul>
<li>Pornești <strong>Enable SMS notification when form is submitted</strong>, treci numerele la <strong>Recipient Phone Number(s)</strong> și modifici <strong>Message Body</strong>. Implicit, mesajul începe cu „New form submission from <code>{field_id="1"}</code>” și continuă cu toate răspunsurile, prin <code>{all_fields}</code>; îl poți rescrie în română.</li>
<li>Pornești <strong>Enable SMS (2) Autoresponder</strong>, pui la <strong>Recipient Phone Number</strong> eticheta câmpului de telefon, de exemplu <code>{field_id="3"}</code>, și scrii <strong>Confirmation Message</strong>.</li>
</ul>
<p>Pe lângă <code>{field_id="X"}</code> și <code>{all_fields}</code> merg <code>{site_name}</code>, <code>{site_url}</code>, <code>{admin_email}</code>, <code>{user_ip}</code>, <code>{entry_id}</code> și <code>{date format="d.m.Y"}</code>. Câteva etichete WPForms, ca <code>{form_name}</code> și <code>{page_title}</code>, nu sunt înlocuite. Detalii pe <a href="https://smstunnel.io/integrations/wpforms/">pagina WPForms</a>.</p>
<h2 id="gravity-forms">Gravity Forms</h2>
<p>Instalezi <strong>SMSTunnel Notifications for Gravity Forms</strong>, editezi formularul și deschizi <strong>Settings → SMS</strong>. Fiecare formular are propriile setări:</p>
<ul>
<li><strong>Enable</strong> trimite un mesaj la fiecare formular completat, către <strong>Recipient Phone Number(s)</strong>. Acolo merge și o etichetă de câmp, ca <code>{Phone:5}</code>.</li>
<li><strong>Message Body</strong> pornește cu „New form submission:” urmat de <code>{all_fields}</code>. Merge orice etichetă Gravity Forms, ca <code>{Name (First):1.3}</code> sau <code>{entry_id}</code>.</li>
<li><strong>SMS (2) - Autoresponder</strong> are propria bifă Enable, un singur Recipient Phone Number și un Confirmation Message.</li>
</ul>
<p>La final apeși <strong>Save SMS Settings</strong>. Nu există logică condițională: mesajele pleacă după fiecare formular trimis. Mai multe pe <a href="https://smstunnel.io/integrations/gravity-forms/">pagina Gravity Forms</a>.</p>
<p><img src="https://smstunnel.io/screenshots/gravity/screen-2.png" alt="Setările SMS ale unui formular Gravity Forms: SMS Notification pentru tine și SMS (2) Autoresponder, cu etichetele câmpurilor din formular" loading="lazy" decoding="async" width="1780" height="1835"></p>
<h2 id="fluent-forms-inclus-în-smstunnel">Fluent Forms, inclus în SMSTunnel</h2>
<p>Pentru Fluent Forms nu instalezi nimic în plus: din versiunea 1.0.13, pluginul de bază adaugă mesajele imediat ce Fluent Forms e activ, și merge cu varianta gratuită.</p>
<p>Deschizi formularul și mergi la <strong>Settings &#x26; Integrations → Configure Integrations → Add New Integration</strong>. Alegi <strong>SMSTunnel SMS</strong> (mesajul pentru tine) sau <strong>SMSTunnel SMS (2) Autoresponder</strong> (confirmarea). Îi dai un nume, treci numerele sau alegi câmpul de telefon din formular, de exemplu <code>{inputs.phone}</code>, scrii mesajul și apeși <strong>Save Feed</strong>.</p>
<p>În mesaj folosești etichetele din meniul de lângă el, ca <code>{inputs.name}</code>; <code>{all_data}</code> pune toate răspunsurile, câte unul pe rând, sub forma „Etichetă: valoare”. Fiecare mesaj are comutatorul <strong>Enable this text</strong>, iar din <strong>Fluent Forms → Integrations</strong> poți opri mesajele SMSTunnel pentru toate formularele. Detalii pe <a href="https://smstunnel.io/integrations/fluent-forms/">pagina Fluent Forms</a>.</p>
<p><img src="https://smstunnel.io/fluent-forms-smstunnel-autoresponder.png" alt="SMSTunnel SMS (2) Autoresponder într-un formular Fluent Forms: numele mesajului, câmpul de telefon al vizitatorului și textul confirmării" loading="lazy" decoding="async" width="1360" height="940"></p>
<h2 id="forminator-inclus-și-el">Forminator, inclus și el</h2>
<p>Și Forminator merge doar cu pluginul de bază, inclusiv în varianta gratuită. Activezi SMSTunnel o singură dată la <strong>Forminator → Integrations</strong>: îl găsești la Available Apps, apeși <strong>+</strong> și <strong>Activate</strong>.</p>
<p>Apoi deschizi formularul, mergi la tab-ul <strong>Integrations</strong> și apeși <strong>+</strong> lângă SMSTunnel. Dai un nume mesajului, alegi la <strong>Who gets this text?</strong> între SMSTunnel SMS și SMSTunnel SMS (2) Autoresponder, apeși <strong>Next</strong>, treci numerele sau alegi câmpul de telefon, scrii mesajul și apeși <strong>Save</strong>. Un formular poate avea mai multe mesaje.</p>
<p>Mesajul folosește etichetele câmpurilor, ca <code>{name-1}</code> sau <code>{textarea-1}</code>, plus <code>{all_fields}</code>, <code>{all_non_empty_fields}</code>, <code>{form_name}</code> și <code>{submission_id}</code>. La câmpul <strong>Phone</strong> din formular, alege la <strong>Validation</strong> opțiunea International. Detalii pe <a href="https://smstunnel.io/integrations/forminator/">pagina Forminator</a>.</p>
<p><img src="https://smstunnel.io/forminator-smstunnel-setup.png" alt="Primul pas al unui mesaj SMSTunnel într-un formular Forminator: numele mesajului și cine îl primește" loading="lazy" decoding="async" width="1360" height="900"></p>
<h2 id="numerele-de-telefon-cu-40-în-față">Numerele de telefon: cu +40 în față</h2>
<p>Aici e capcana: oamenii scriu din obișnuință „0744 123 456”. Fiecare număr trebuie să aibă + și prefixul țării: „+40 744 123 456”. Cere asta clar în formular, în eticheta câmpului sau în textul ajutător, pentru că pluginurile nu adaugă prefixul în locul tău:</p>
<ul>
<li>Contact Form 7, WPForms și Gravity Forms acceptă spații, sar peste numerele locale care încep cu 0 și citesc un număr fără + ca și cum ar începe cu prefixul țării.</li>
<li>Fluent Forms și Forminator sar peste numerele fără prefixul țării.</li>
<li>Toate sar peste numerele cu suprataxă; Fluent Forms și Forminator sar și peste numerele scurte.</li>
</ul>
<p>Mesajele mai lungi de 1.600 de caractere sunt tăiate, așa că <code>{all_fields}</code> dintr-un formular foarte lung s-ar putea să nu încapă.</p>
<h2 id="alte-pluginuri-de-formulare">Alte pluginuri de formulare</h2>
<p>Add-on-urile SMSTunnel pentru <a href="https://smstunnel.io/integrations/elementor-forms/">Elementor Forms</a> (widgetul Form din Elementor Pro), <a href="https://smstunnel.io/integrations/ninja-forms/">Ninja Forms</a> și <a href="https://smstunnel.io/integrations/formidable-forms/">Formidable Forms</a> urmează să apară pe WordPress.org; fiecare pagină îți spune cum le poți primi mai repede. Dacă ai un magazin, vezi și ghidul despre <a href="https://smstunnel.io/ro/blog/sms-woocommerce-fara-twilio/">notificări SMS în WooCommerce</a>.</p>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="plătesc-pentru-fiecare-mesaj">Plătesc pentru fiecare mesaj?</h3>
<p>Nu către SMSTunnel. Mesajele pleacă de pe SIM-ul tău, deci se aplică tarifele operatorului tău pentru SMS sau SMS-urile incluse în abonament. Planul Gratuit acoperă 25 de mesaje pe zi și 500 pe lună, trimise exact cum le-ai scris, iar planurile plătite încep de la 9 $ pe lună. Vezi <a href="https://smstunnel.io/ro/pricing/">prețurile</a>.</p>
<h3 id="pot-trimite-un-mesaj-tuturor-celor-care-au-completat-vreodată-formularul">Pot trimite un mesaj tuturor celor care au completat vreodată formularul?</h3>
<p>Nu asta fac integrările. Fiecare formular trimis declanșează propriile mesaje: unul pentru tine sau pentru echipă și o confirmare pentru omul care tocmai l-a completat. Scrie doar oamenilor care așteaptă un mesaj de la tine.</p>
<h3 id="pot-fi-criptate-mesajele">Pot fi criptate mesajele?</h3>
<p>Da, opțional. Pornești criptarea end-to-end în setările pluginului de bază, iar site-ul își criptează mesajele pentru telefonul tău înainte să plece din WordPress. Ce vede și ce nu vede SMSTunnel afli din ghidul despre <a href="https://smstunnel.io/ro/blog/sms-criptat-end-to-end/">SMS criptat end-to-end</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Trimite SMS din n8n prin telefonul tău Android</title>
      <link>https://smstunnel.io/ro/blog/sms-din-n8n-prin-telefonul-tau/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/sms-din-n8n-prin-telefonul-tau/</guid>
      <pubDate>Tue, 03 Nov 2026 08:00:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>n8n</category>
      <category>Automatizări</category>
      <description>Fluxurile n8n pot trimite SMS prin telefonul tău Android, de pe numărul tău, cu nodul gratuit SMSTunnel: instalare, cheie API și trei fluxuri, pas cu pas.</description>
      <content:encoded><![CDATA[<p><a href="https://www.youtube.com/watch?v=6TPAxJPe0bU"><img src="https://smstunnel.io/video/n8n.webp" alt="Trimite mesaje din n8n prin propriul telefon" /></a></p><p>Să zicem că ai un service auto sau un cabinet și folosești deja n8n: programările vin printr-un formular, se adună într-un tabel, iar fluxurile de lucru rulează singure. Lipsește un singur lucru: să-l anunți pe client printr-un SMS. Calea obișnuită e un cont la un furnizor de API SMS, un număr închiriat și un preț pentru fiecare mesaj.</p>
<p>Dacă ai un telefon Android cu SIM, drumul e mai scurt. Nodul SMSTunnel pentru n8n îi predă fiecare mesaj contului tău SMSTunnel, iar aplicația SMSTunnel de pe telefon îl trimite de pe numărul tău. Clientul vede un număr pe care îl cunoaște și îți poate răspunde direct. SMSTunnel nu taxează mesajele: un SMS te costă cât îți cere operatorul tău, după abonamentul pe care îl ai.</p>
<p>Mai jos pornim de la zero, pe planul Gratuit: legi telefonul, creezi o cheie, instalezi <code>n8n-nodes-smstunnel</code> și construiești trei fluxuri pe care le poți copia: confirmarea unei cereri trimise prin formular, o alertă când pică un flux și mementoul cu o zi înainte de programare.</p>
<h2 id="ce-îți-trebuie">Ce îți trebuie</h2>
<ul>
<li><strong>Un telefon Android</strong> 7.0 sau mai nou, cu un SIM care poate trimite SMS și cu internet (Wi-Fi sau date mobile). Poate fi și un telefon mai vechi, care stă la încărcat la birou.</li>
<li><strong>Un cont SMSTunnel gratuit.</strong> Planul Gratuit include 25 de mesaje pe zi și 500 pe lună, trimise exact cum le-ai scris, încă până la 25 de mesaje pe zi din software-ul tău care se încheie cu un scurt rând „free by smstunnel.io” și 50 de coduri de autentificare pe zi. Planurile plătite încep de la 9 $ pe lună, fără taxe; detalii pe pagina de <a href="https://smstunnel.io/ro/pricing/">prețuri</a>.</li>
<li><strong>Un n8n în care poți instala noduri din comunitate</strong> (community nodes). Ghidul și videoclipul folosesc un n8n instalat pe serverul tău. Unde altundeva se pot instala nodurile din comunitate decide n8n, așa că verifică <a href="https://docs.n8n.io/integrations/community-nodes/">pagina lor despre community nodes</a>. Dacă nu le poți instala, nodul HTTP Request face aceeași treabă, cu câteva câmpuri în plus (vezi mai jos).</li>
</ul>
<h2 id="pasul-1-leagă-telefonul">Pasul 1: leagă telefonul</h2>
<ol>
<li>Creează un cont pe <a href="https://dashboard.smstunnel.io/register">dashboard.smstunnel.io</a> sau intră cu Google ori Facebook.</li>
<li>Instalează <a href="https://play.google.com/store/apps/details?id=io.smstunnel.app">aplicația SMSTunnel din Google Play</a>, autentifică-te cu același cont și apasă <strong>Pornește serviciul</strong>. Înainte ca Android să-ți ceară permisiunea de a trimite SMS, aplicația îți explică de ce are nevoie de ea.</li>
<li>Telefonul apare în dashboard la <strong>Phones</strong>. Îl poți lega și cu un cod QR: pe computer deschizi <strong>Phones → Add phone</strong>, iar în aplicație alegi <strong>Conexiuni → Conectează cu cod QR</strong>.</li>
</ol>
<p>Înainte să deschizi n8n, trimite-ți un mesaj de probă din dashboard, cu <strong>Write a text</strong>. Dacă ajunge, restul ține doar de n8n. <a href="https://smstunnel.io/docs/">Documentația</a> explică permisiunile aplicației și serviciul în fundal.</p>
<h2 id="pasul-2-creează-o-cheie-pentru-n8n">Pasul 2: creează o cheie pentru n8n</h2>
<p>În dashboard deschizi <strong>Apps → Add an app</strong>, alegi <strong>n8n</strong> și copiezi cheia. Se afișează o singură dată, așa că lipește-o direct în n8n sau păstreaz-o într-un loc sigur. Cheia poate trimite mesaje și poate verifica dacă au plecat, nimic mai mult. Dacă vrei să-i tai accesul lui n8n, ștergi aplicația din aceeași listă.</p>
<p>O singură operație cere mai mult. <strong>Get Received</strong> citește mesajele primite de telefon, deci merge doar cu o cheie căreia i-ai dat voie explicit (<strong>Can also read received texts</strong> când o creezi, sau <strong>Allow reading received texts</strong> mai târziu). În plus, în aplicație trebuie pornită opțiunea <strong>Sincronizează mesajele primite</strong>. E oprită implicit, se copiază doar mesajele care sosesc după ce o pornești, iar mesajele vechi din telefon nu sunt citite niciodată.</p>
<h2 id="pasul-3-instalează-n8n-nodes-smstunnel">Pasul 3: instalează n8n-nodes-smstunnel</h2>
<p>În n8n:</p>
<ol>
<li>Deschide <strong>Settings → Community Nodes</strong>.</li>
<li>Apasă <strong>Install</strong> și scrie <code>n8n-nodes-smstunnel</code>.</li>
<li>Confirmă că accepți riscurile nodurilor din comunitate și apasă <strong>Install</strong>.</li>
</ol>
<p>Dacă preferi instalarea manuală, rulează în directorul în care e instalat n8n:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">npm</span><span style="color:#9ECBFF"> install</span><span style="color:#9ECBFF"> n8n-nodes-smstunnel</span></span></code></pre>
<p>Cu Docker, adaugi pachetul în imaginea ta sau îl montezi în <code>~/.n8n/custom</code>. Nodul e open source, cu licență MIT.</p>
<h2 id="pasul-4-adaugă-datele-de-acces">Pasul 4: adaugă datele de acces</h2>
<p>Creează în n8n credențiale noi de tipul <strong>SMSTunnel API</strong>:</p>

















<table><thead><tr><th>Câmp</th><th>Ce pui acolo</th></tr></thead><tbody><tr><td>API Key</td><td>Cheia de la pasul 2. n8n o trimite în antetul <code>X-API-Key</code>.</td></tr><tr><td>Base URL</td><td><code>https://smstunnel.io</code>. O schimbi doar dacă SMSTunnel rulează pe serverul tău.</td></tr></tbody></table>
<p>Apasă <strong>Test</strong> înainte să salvezi, ca să verifici cheia.</p>
<h2 id="pasul-5-confirmarea-unei-programări-cerute-prin-formular">Pasul 5: confirmarea unei programări cerute prin formular</h2>
<p>Acesta e fluxul din videoclip: cineva completează formularul de pe site și primește, în câteva secunde, un SMS de pe numărul tău.</p>
<ol>
<li>Adaugă un <strong>n8n Form Trigger</strong> cu două câmpuri, <code>Nume</code> și <code>Telefon</code>.</li>
<li>Adaugă nodul <strong>SMSTunnel</strong>, cu resursa <strong>Message</strong> și operația <strong>Send</strong>.</li>
<li>Completează <strong>To</strong> și <strong>Message</strong> cu expresii:</li>
</ol>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>To:      {{ $json["Telefon"] }}</span></span>
<span class="line"><span>Message: Bună, {{ $json["Nume"] }}! Am primit cererea ta de programare și te sunăm azi ca să stabilim ora.</span></span></code></pre>
<ol start="4">
<li>La <strong>Additional Fields</strong>, setează <strong>Default Country Code</strong> la <code>+40</code>. Oamenii își scriu numărul cum sunt obișnuiți, <code>0722 123 456</code>; un număr fără <code>+</code> sau <code>00</code> primește prefixul ales și pierde zeroul din față, deci mesajul pleacă spre <code>+40722123456</code>. Prefixul din nod are întâietate față de țara setată pentru telefon.</li>
<li>Deschide formularul, scrie-ți propriul număr și trimite-l. Mesajul vine de pe telefonul pe care l-ai legat.</li>
</ol>
<p>Fiecare mesaj trimis de nod are un singur destinatar. Dacă zece oameni completează formularul, n8n rulează nodul de zece ori și fiecare primește mesajul lui.</p>
<h2 id="încă-două-fluxuri-utile">Încă două fluxuri utile</h2>
<h3 id="un-sms-când-pică-un-flux">Un SMS când pică un flux</h3>
<p>Un SMS ajunge la tine chiar dacă telefonul din buzunar nu are date mobile în acel moment.</p>
<ol>
<li>Creează un flux care începe cu nodul <strong>Error Trigger</strong>.</li>
<li>Adaugă <strong>SMSTunnel → Message → Send</strong>, cu numărul tău la <strong>To</strong> și cu mesajul:</li>
</ol>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>Fluxul {{$json["workflow"]["name"]}} a picat: {{$json["execution"]["error"]["message"]}}</span></span></code></pre>
<ol start="3">
<li>În setările fiecărui flux pe care vrei să-l urmărești, alege-l pe acesta ca flux de erori (error workflow).</li>
</ol>
<h3 id="mementoul-de-cu-o-zi-înainte">Mementoul de cu o zi înainte</h3>
<p>Un <strong>Schedule Trigger</strong> pornește fluxul în fiecare zi la 18:00. Un nod de bază de date, Google Sheets sau HTTP Request aduce programările de mâine, iar <strong>SMSTunnel → Send</strong> îi scrie fiecărui client, cu <strong>To</strong> setat la <code>{{ $json.phone }}</code>. Un mesaj tipic: „Bună ziua! Vă așteptăm mâine la ora 10:00 la service pentru revizie. Dacă nu puteți ajunge, răspundeți la acest mesaj.” Pentru că vine de pe numărul tău, clientul răspunde direct, iar răspunsul ajunge pe telefonul tău. Dacă ții programările într-un tabel sau în calendar, <a href="https://smstunnel.io/ro/blog/sms-din-google-sheets-si-google-calendar/">ghidul pentru Google Sheets și Google Calendar</a> arată și altă cale.</p>
<h2 id="coduri-de-autentificare-starea-mesajelor-și-răspunsuri">Coduri de autentificare, starea mesajelor și răspunsuri</h2>
<p>Nodul nu doar trimite:</p>
<ul>
<li><strong>Send 2FA Code</strong> trimite un cod de autentificare generat de fluxul tău. Mesajul trebuie să conțină codul — între 4 și 10 cifre de sine stătătoare, ca <code>482913</code> sau <code>12-345678</code>, ori două grupuri de câte trei cifre, ca <code>123-456</code> — și poate avea cel mult 320 de caractere. Codurile au o limită zilnică separată: 50 pe zi în planul Gratuit, fără limită zilnică în planurile plătite. SMSTunnel doar livrează codul; fluxul tău îl generează și îl verifică. Mai multe în ghidul despre <a href="https://smstunnel.io/ro/blog/coduri-de-autentificare-prin-sms-fara-twilio/">coduri de autentificare prin SMS fără Twilio</a>.</li>
<li><strong>Get Status</strong> primește ID-ul mesajului și îți spune dacă e în așteptare (pending), trimis (sent) sau eșuat (failed). Un mesaj eșuat marcat „unconfirmed” a plecat cel mai probabil, așa că nu-l retrimite automat.</li>
<li><strong>Get Received</strong> aduce mesajele primite de telefon, cu permisiunea și sincronizarea de la pasul 2. Un flux programat le poate prelua, de exemplu ca să-ți semnaleze anulările.</li>
<li><strong>Get Usage</strong> arată cât ai trimis azi și cât mai ai, iar <strong>Device → Get Many</strong> îți arată telefoanele și care dintre ele sunt conectate.</li>
</ul>
<h2 id="același-mesaj-pentru-câțiva-oameni">Același mesaj pentru câțiva oameni</h2>
<p>Uneori același mesaj trebuie să ajungă la câțiva colegi, de exemplu la cei de gardă săptămâna asta. <strong>Send to Several Recipients</strong> primește până la 100 de numere, despărțite prin virgulă, punct și virgulă sau rând nou, iar fiecare destinatar primește propriul mesaj. Operația cere ca telefonul să fie conectat când rulează. Un <strong>Send</strong> simplu către un telefon deconectat așteaptă și pleacă atunci când telefonul revine, în cel mult 3 zile.</p>
<p>Folosește-o în locul unei bucle de <strong>Send</strong>: SMSTunnel acceptă 30 de cereri de trimitere pe minut, iar nodul nu reîncearcă după un răspuns „too many requests”. Mai e bine de știut:</p>
<ul>
<li>Un mesaj poate avea până la 1600 de caractere, pe care telefonul le trimite ca până la 10 SMS-uri unite.</li>
<li>Un apel eșuat oprește fluxul. Pornește <strong>Continue On Fail</strong> ca elementul să primească un câmp <code>error</code> și să-l tratezi în nodul următor.</li>
</ul>
<p>Trimite doar mesaje pe care oamenii le așteaptă de la tine: alerte, mementouri, răspunsuri, coduri.</p>
<h2 id="fără-noduri-din-comunitate-nodul-http-request">Fără noduri din comunitate? Nodul HTTP Request</h2>
<p>Dacă n8n-ul tău nu poate instala noduri din comunitate, nodul <strong>HTTP Request</strong> poate apela direct API-ul SMSTunnel:</p>
<ul>
<li>metoda <code>POST</code> și adresa <code>https://smstunnel.io/api/v1/sms/send</code>;</li>
<li>antetul <code>X-API-Key</code> cu cheia ta, păstrată într-o credențială n8n, de exemplu <strong>Header Auth</strong>, nu scrisă în nod;</li>
<li>un corp JSON cu un singur destinatar:</li>
</ul>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span></span>
<span class="line"><span style="color:#79B8FF">  "to"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"+40722123456"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">  "message"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Comanda ta #1042 a fost expediată."</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<p>Răspunsul conține un <code>messageId</code> cu care poți verifica starea mai târziu. Câmpuri opționale: <code>deviceId</code> (care dintre telefoanele tale trimite) și <code>defaultCountryCode</code>. <a href="https://smstunnel.io/api-reference/">Referința API</a> descrie toate apelurile și erorile, iar <a href="https://smstunnel.io/integrations/n8n/">pagina integrării n8n</a> adună toate câmpurile nodului.</p>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="merge-pe-planul-gratuit">Merge pe planul Gratuit?</h3>
<p>Da. Nodul e gratuit, iar pe planul Gratuit până la 25 de mesaje pe zi și 500 pe lună pleacă exact cum le-ai scris; încă până la 25 pe zi se încheie cu scurtul rând „free by smstunnel.io”. Planurile plătite nu adaugă nimic la mesaje.</p>
<h3 id="ce-număr-văd-clienții">Ce număr văd clienții?</h3>
<p>Numărul cartelei SIM din telefonul care trimite. Răspunsurile ajung pe telefonul acela ca orice alt SMS, iar cu sincronizarea pornită le vezi și în dashboard.</p>
<h3 id="ce-se-întâmplă-dacă-telefonul-e-offline">Ce se întâmplă dacă telefonul e offline?</h3>
<p>Un mesaj trimis cu <strong>Send</strong> așteaptă în contul tău și pleacă atunci când telefonul revine online, în cel mult 3 zile. <strong>Send to Several Recipients</strong> are nevoie de telefonul conectat.</p>]]></content:encoded>
    </item>
    <item>
      <title>Notificări SMS din Home Assistant, de pe telefonul tău</title>
      <link>https://smstunnel.io/ro/blog/notificari-sms-home-assistant/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/notificari-sms-home-assistant/</guid>
      <pubDate>Tue, 03 Nov 2026 07:50:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>Home Assistant</category>
      <category>Casă inteligentă</category>
      <description>Home Assistant îți trimite SMS prin telefonul tău Android, de pe numărul tău: alerte de inundație, pană de curent, frig în casă sau ușă deschisă, pas cu pas.</description>
      <content:encoded><![CDATA[<p><a href="https://www.youtube.com/watch?v=X4G_Mr8LYzQ"><img src="https://smstunnel.io/video/home-assistant.webp" alt="Trimite mesaje din Home Assistant prin propriul telefon" /></a></p><p>Ai Home Assistant la apartament sau la casa de la țară și notificările push merg bine, până în ziua în care contează. Telefonul din buzunar nu are date mobile, economisirea bateriei e pornită sau Android a oprit pe ascuns aplicația, iar alerta despre țeava spartă din baie nu mai apare. Un SMS nu are nevoie de nimic din toate astea: ajunge pe telefonul tău prin rețeaua mobilă, cu sau fără date.</p>
<p>Integrarea SMSTunnel îi dă lui Home Assistant serviciul <code>notify.smstunnel</code>. Automatizările tale predau fiecare alertă contului tău SMSTunnel, iar aplicația SMSTunnel de pe telefonul tău Android o trimite ca SMS obișnuit, de pe numărul tău, cu SIM-ul tău. Nu există un furnizor de SMS terț la mijloc, iar SMSTunnel nu ia bani pe mesaj: plătești doar ce-ți cere operatorul pentru SMS, după abonamentul pe care îl ai.</p>
<p>Mai jos ajungi de la zero la patru automatizări care merg — inundație, pană de curent, frig la casa de la țară și ușa de la intrare deschisă când nu e nimeni acasă — plus setările care împiedică un senzor capricios să-ți trimită mesaje toată noaptea.</p>
<h2 id="cum-se-leagă-lucrurile">Cum se leagă lucrurile</h2>
<ul>
<li><strong>Telefonul care trimite</strong> e un Android 7.0 sau mai nou, cu SIM și cu aplicația SMSTunnel, conectat prin Wi-Fi sau date mobile. Merge foarte bine un telefon vechi care stă acasă, la încărcat: alertele ajung apoi pe telefonul pe care îl porți la tine, ca SMS obișnuit.</li>
<li><strong>Home Assistant</strong> predă alerta contului tău SMSTunnel prin internet, iar aplicația de pe telefon o trimite.</li>
<li><strong>Destinatarii</strong> sunt numerele pe care le alegi tu: al tău, al partenerului, al vecinului care are cheie. Fiecare primește propriul mesaj.</li>
</ul>
<p>O limită, spusă cinstit: și Home Assistant, și telefonul care trimite au nevoie de internet ca să predea alerta. Dacă vrei mesaje și când pică internetul sau curentul acasă, pune-le o rezervă: date mobile pe telefon și un UPS (sau un router cu date mobile) pentru Home Assistant și pentru router. La casa de vacanță, unde nu e nimeni să observe pana, rezerva asta face diferența.</p>
<h2 id="pasul-1-leagă-telefonul-și-creează-o-cheie">Pasul 1: leagă telefonul și creează o cheie</h2>
<ol>
<li>Creează un cont pe <a href="https://dashboard.smstunnel.io/register">dashboard.smstunnel.io</a> sau intră cu Google ori Facebook.</li>
<li>Pe telefonul care va trimite, instalează <a href="https://play.google.com/store/apps/details?id=io.smstunnel.app">aplicația SMSTunnel din Google Play</a>, autentifică-te cu același cont și apasă <strong>Pornește serviciul</strong>. Telefonul apare în dashboard la <strong>Phones</strong>; îl poți lega și cu codul QR de la <strong>Phones → Add phone</strong>, pe care îl scanezi din aplicație, la <strong>Conexiuni → Conectează cu cod QR</strong>.</li>
<li>În dashboard deschizi <strong>Apps → Add an app</strong>, alegi <strong>Home Assistant</strong> și copiezi cheia. Se afișează o singură dată. Dacă ștergi aplicația mai târziu, Home Assistant nu mai poate trimite.</li>
</ol>
<p>Trimite-ți un mesaj de probă din dashboard, cu <strong>Write a text</strong>. Dacă ajunge, partea de telefon e gata. <a href="https://smstunnel.io/docs/">Documentația</a> explică permisiunile aplicației și serviciul în fundal.</p>
<h2 id="pasul-2-instalează-integrarea">Pasul 2: instalează integrarea</h2>
<p>Varianta recomandată e HACS:</p>
<ol>
<li>În HACS, deschide meniul cu trei puncte și alege <strong>Custom repositories</strong>.</li>
<li>Adaugă <code>https://github.com/narcisbodea/hass-smstunnel</code>, cu categoria <strong>Integration</strong>.</li>
<li>Instalează <strong>SMSTunnel</strong> și repornește Home Assistant.</li>
</ol>
<p>Fără HACS, copiezi folderul <code>custom_components/smstunnel</code> din acel repository în folderul <code>config/custom_components/</code> al lui Home Assistant și repornești.</p>
<h2 id="pasul-3-adaugă-smstunnel-în-home-assistant">Pasul 3: adaugă SMSTunnel în Home Assistant</h2>
<p>Mergi la <strong>Settings → Devices &#x26; Services → Add Integration → SMSTunnel</strong> și completezi formularul:</p>





























<table><thead><tr><th>Câmp</th><th>Ce scrii</th></tr></thead><tbody><tr><td>API key</td><td>Cheia de la pasul 1. E verificată pe loc, deci o greșeală iese la iveală acum, nu la prima alertă adevărată.</td></tr><tr><td>Recipients</td><td>Unul sau mai multe numere, despărțite prin virgulă, cu <code>+</code> și prefixul țării: <code>+40722123456</code>.</td></tr><tr><td>Server URL</td><td><code>https://smstunnel.io</code>, dacă nu găzduiești tu SMSTunnel.</td></tr><tr><td>Default country code</td><td><code>+40</code>, ca numerele salvate fără prefix, ca <code>0722 123 456</code>, să meargă și ele.</td></tr><tr><td>Device ID</td><td>Opțional: alege unul anume dintre telefoanele tale.</td></tr></tbody></table>
<p>Setările nu se pot modifica ulterior. Ca să schimbi ceva, ștergi integrarea și o adaugi din nou.</p>
<p>Ca test, deschide <strong>Developer tools</strong>, apelează <code>notify.smstunnel</code> cu un mesaj scurt și așteaptă SMS-ul pe telefon. De acum, orice automatizare sau script îl poate folosi.</p>
<h2 id="patru-automatizări-de-copiat">Patru automatizări de copiat</h2>
<p>Exemplele folosesc aceeași sintaxă ca README-ul integrării. Din Home Assistant 2024.8, editorul scrie apelul ca <code>action: notify.smstunnel</code> în loc de <code>service: notify.smstunnel</code>; e același serviciu. Înlocuiește ID-urile entităților cu ale tale.</p>
<h3 id="inundație-în-baie">Inundație în baie</h3>
<p>Cazul clasic, în care fiecare minut costă:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="yaml"><code><span class="line"><span style="color:#85E89D">automation</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">  - </span><span style="color:#85E89D">alias</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"SMS la inundație în baie"</span></span>
<span class="line"><span style="color:#85E89D">    trigger</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">      - </span><span style="color:#85E89D">platform</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">state</span></span>
<span class="line"><span style="color:#85E89D">        entity_id</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">binary_sensor.inundatie_baie</span></span>
<span class="line"><span style="color:#85E89D">        to</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"on"</span></span>
<span class="line"><span style="color:#85E89D">    action</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">      - </span><span style="color:#85E89D">service</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">notify.smstunnel</span></span>
<span class="line"><span style="color:#85E89D">        data</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#85E89D">          title</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Casa"</span></span>
<span class="line"><span style="color:#85E89D">          message</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Apă pe jos în baie! Închide robinetul principal."</span></span></code></pre>
<p>SMS-ul nu are un câmp separat pentru titlu, așa că mesajul ajunge ca „Casa: Apă pe jos în baie! Închide robinetul principal.”</p>
<h3 id="frig-la-casa-de-la-țară">Frig la casa de la țară</h3>
<p>Iarna, la casa în care nu stă nimeni, un senzor de temperatură îți arată la timp că se răcește casa, înainte să înghețe țevile. Senzorul trebuie să arate sub 8 °C timp de 30 de minute, iar pauza de la final, împreună cu <code>mode: single</code>, înseamnă cel mult un mesaj la două ore:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="yaml"><code><span class="line"><span style="color:#85E89D">automation</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">  - </span><span style="color:#85E89D">alias</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"SMS când se răcește casa de la țară"</span></span>
<span class="line"><span style="color:#85E89D">    mode</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">single</span></span>
<span class="line"><span style="color:#85E89D">    trigger</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">      - </span><span style="color:#85E89D">platform</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">numeric_state</span></span>
<span class="line"><span style="color:#85E89D">        entity_id</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">sensor.temperatura_living</span></span>
<span class="line"><span style="color:#85E89D">        below</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">8</span></span>
<span class="line"><span style="color:#85E89D">        for</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"00:30:00"</span></span>
<span class="line"><span style="color:#85E89D">    action</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">      - </span><span style="color:#85E89D">service</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">notify.smstunnel</span></span>
<span class="line"><span style="color:#85E89D">        data</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#85E89D">          message</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Casa de la țară: doar {{ states('sensor.temperatura_living') }} °C în living. Verifică centrala!"</span></span>
<span class="line"><span style="color:#E1E4E8">      - </span><span style="color:#85E89D">delay</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"02:00:00"</span></span></code></pre>
<h3 id="pană-de-curent">Pană de curent</h3>
<p>O integrare de UPS anunță când casa rămâne fără curent. Numele entității depinde de UPS-ul tău, iar linia <code>for:</code> așteaptă un minut, ca o întrerupere de o clipă să nu-ți trimită mesaj. Ține și routerul pe UPS, altfel alerta nu are pe unde să plece.</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="yaml"><code><span class="line"><span style="color:#85E89D">automation</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">  - </span><span style="color:#85E89D">alias</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"SMS la pană de curent"</span></span>
<span class="line"><span style="color:#85E89D">    trigger</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">      - </span><span style="color:#85E89D">platform</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">state</span></span>
<span class="line"><span style="color:#85E89D">        entity_id</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">binary_sensor.ups_pe_baterie</span></span>
<span class="line"><span style="color:#85E89D">        to</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"on"</span></span>
<span class="line"><span style="color:#85E89D">        for</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"00:01:00"</span></span>
<span class="line"><span style="color:#85E89D">    action</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">      - </span><span style="color:#85E89D">service</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">notify.smstunnel</span></span>
<span class="line"><span style="color:#85E89D">        data</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#85E89D">          message</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Pană de curent acasă: UPS-ul merge pe baterie."</span></span></code></pre>
<h3 id="ușa-de-la-intrare-când-nu-e-nimeni-acasă">Ușa de la intrare, când nu e nimeni acasă</h3>
<p>Acest mesaj merge la două numere, nu la destinatarii salvați: <code>target</code> primește un număr sau o listă și îi înlocuiește pe cei salvați doar pentru acest apel. Condiția folosește zona „home”, a cărei stare e numărul de persoane aflate acasă.</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="yaml"><code><span class="line"><span style="color:#85E89D">automation</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">  - </span><span style="color:#85E89D">alias</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"SMS când se deschide ușa și nu e nimeni acasă"</span></span>
<span class="line"><span style="color:#85E89D">    trigger</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">      - </span><span style="color:#85E89D">platform</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">state</span></span>
<span class="line"><span style="color:#85E89D">        entity_id</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">binary_sensor.usa_intrare</span></span>
<span class="line"><span style="color:#85E89D">        to</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"on"</span></span>
<span class="line"><span style="color:#85E89D">    condition</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">      - </span><span style="color:#85E89D">condition</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">state</span></span>
<span class="line"><span style="color:#85E89D">        entity_id</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">zone.home</span></span>
<span class="line"><span style="color:#85E89D">        state</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"0"</span></span>
<span class="line"><span style="color:#85E89D">    action</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">      - </span><span style="color:#85E89D">service</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">notify.smstunnel</span></span>
<span class="line"><span style="color:#85E89D">        data</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#85E89D">          message</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"S-a deschis ușa de la intrare și nu e nimeni acasă."</span></span>
<span class="line"><span style="color:#85E89D">          target</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#E1E4E8">            - </span><span style="color:#9ECBFF">"+40712345678"</span></span>
<span class="line"><span style="color:#E1E4E8">            - </span><span style="color:#9ECBFF">"+40787654321"</span></span></code></pre>
<p>Pentru un singur apel poți alege și alt telefon sau alt prefix, în câmpul <code>data</code> al serviciului:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="yaml"><code><span class="line"><span style="color:#85E89D">service</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">notify.smstunnel</span></span>
<span class="line"><span style="color:#85E89D">data</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#85E89D">  message</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Test de pe telefonul din garaj"</span></span>
<span class="line"><span style="color:#85E89D">  data</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#85E89D">    device_id</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"id-ul-telefonului"</span></span>
<span class="line"><span style="color:#85E89D">    default_country_code</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"+40"</span></span></code></pre>
<h2 id="un-senzor-capricios-nu-trebuie-să-ți-scrie-toată-noaptea">Un senzor capricios nu trebuie să-ți scrie toată noaptea</h2>
<p>Un senzor care sare între „on” și „off” poate porni o automatizare de zeci de ori în câteva minute, iar fiecare rulare înseamnă un SMS. Așa îți termini repede mesajele din plan și îți pui la încercare și relația cu operatorul. Trei obiceiuri te scapă:</p>
<ul>
<li><strong>Adaugă <code>for:</code></strong> la declanșator, ca starea să se mențină o vreme înainte să plece ceva.</li>
<li><strong>Adaugă o condiție</strong>, ca alerta să treacă doar când contează, ca verificarea casei goale de mai sus.</li>
<li><strong>Pune o pauză</strong> cu <code>mode: single</code> și un <code>delay</code> la final, ca în exemplul cu casa de la țară.</li>
</ul>
<p>Cifrele de reținut: planul Gratuit trimite 25 de mesaje pe zi și 500 pe lună exact cum le-ai scris, iar încă până la 25 pe zi se încheie cu un scurt rând „free by smstunnel.io”. Planurile plătite încep de la 9 $ pe lună, fără taxe, cu limite zilnice mai mari; vezi <a href="https://smstunnel.io/ro/pricing/">prețurile</a>. În toate planurile, SMSTunnel acceptă 30 de cereri de trimitere pe minut.</p>
<h2 id="când-ceva-nu-merge">Când ceva nu merge</h2>
<p>Integrarea e făcută astfel încât o problemă să nu le ascundă pe celelalte:</p>
<ul>
<li><strong>Erorile ajung în jurnalul lui Home Assistant</strong>, nu în automatizare, așa că restul automatizării rulează mai departe.</li>
<li><strong>Un destinatar la care trimiterea eșuează nu-i blochează pe ceilalți</strong>: celelalte mesaje pleacă.</li>
<li><strong>Peste 30 de cereri pe minut</strong>, mesajul nu se trimite, iar jurnalul o spune clar. Nu există reîncercare automată.</li>
<li><strong>Mesajele mai lungi de 1600 de caractere sunt tăiate</strong> înainte de trimitere, nu respinse.</li>
<li><strong>Dacă telefonul care trimite e offline</strong>, mesajul așteaptă în contul tău și pleacă atunci când telefonul revine.</li>
</ul>
<p>Dacă ștergi integrarea, <code>notify.smstunnel</code> se oprește imediat, fără repornire, iar dacă ștergi aplicația ei din dashboard, cheia nu mai funcționează.</p>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="de-pe-ce-număr-vin-alertele">De pe ce număr vin alertele?</h3>
<p>De pe SIM-ul telefonului pe care rulează aplicația SMSTunnel. Salvează-l în agendă ca „Casa” și îl recunoști dintr-o privire.</p>
<h3 id="pot-răspunde-cei-care-primesc-alerta">Pot răspunde cei care primesc alerta?</h3>
<p>Da. Răspunsurile ajung pe telefonul care a trimis, ca orice SMS, iar cu sincronizarea pornită în aplicație (<strong>Sincronizează mesajele primite</strong>) le vezi și în dashboard. Integrarea doar trimite.</p>
<h3 id="trebuie-ca-home-assistant-să-fie-accesibil-din-internet">Trebuie ca Home Assistant să fie accesibil din internet?</h3>
<p>Integrarea apelează SMSTunnel dinspre Home Assistant, deci Home Assistant are nevoie doar de acces la internet. Nu trebuie să accepte conexiuni din afară.</p>
<h3 id="există-și-alte-variante-în-afară-de-home-assistant">Există și alte variante în afară de Home Assistant?</h3>
<p>Pentru servere și unelte de monitorizare, ghidul despre <a href="https://smstunnel.io/ro/blog/alerte-de-monitorizare-prin-sms/">alerte de monitorizare prin SMS</a> acoperă Uptime Kuma, Grafana și Zabbix. Pentru alte fluxuri, <a href="https://smstunnel.io/ro/blog/sms-din-n8n-prin-telefonul-tau/">n8n</a> funcționează la fel. Tot ce ține de integrare e pe <a href="https://smstunnel.io/integrations/home-assistant/">pagina integrării Home Assistant</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Mementouri SMS din Google Calendar și mesaje din Google Sheets, de pe telefonul tău</title>
      <link>https://smstunnel.io/ro/blog/sms-din-google-sheets-si-google-calendar/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/sms-din-google-sheets-si-google-calendar/</guid>
      <pubDate>Tue, 03 Nov 2026 07:40:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>Google Sheets</category>
      <category>Google Calendar</category>
      <description>Google Calendar nu mai trimite SMS din 2019. Trimite mementouri și mesaje din Google Sheets de pe telefonul și numărul tău, cu șabloane Apps Script gratuite.</description>
      <content:encoded><![CDATA[<p><a href="https://www.youtube.com/watch?v=Rey_Kla6WkQ"><img src="https://smstunnel.io/video/setup-android.webp" alt="Configurează SMSTunnel pe telefonul tău Android în 2 minute" /></a></p><p>Din 7 ianuarie 2019, Google Calendar nu mai trimite notificări prin SMS. De atunci, mementourile lui vin doar ca notificări în aplicație și pe e-mail. Pentru un cabinet stomatologic, un salon sau un service, asta contează: pacientul sau clientul nu folosește calendarul tău, așa că singurul memento pe care îl vede e cel pe care i-l trimiți tu.</p>
<p>SMSTunnel aduce înapoi mementourile prin SMS și adaugă mesaje trimise direct din foile de calcul. Niște șabloane Google Apps Script gratuite îi predau fiecare mesaj contului tău SMSTunnel, iar telefonul tău Android îl trimite de pe numărul tău. Oamenii văd un număr pe care îl cunosc și îți pot răspunde. Nu ai niciun server de întreținut: totul rulează în Apps Script, în propria ta foaie de calcul.</p>
<h2 id="ce-poți-trimite-din-google">Ce poți trimite din Google</h2>
<p>Sunt patru șabloane gata făcute, plus o mică bibliotecă pentru propriul tău cod:</p>

























<table><thead><tr><th>Șablon</th><th>Ce trimite</th></tr></thead><tbody><tr><td>Google Calendar</td><td>Mementouri pentru tine înainte de evenimente, agenda zilei dimineața, mementouri pentru oamenii din programările tale</td></tr><tr><td>Google Sheets: mesaje de stare</td><td>Un mesaj la numărul de pe rând când starea rândului devine „Gata”, „Expediat” sau altă valoare aleasă de tine</td></tr><tr><td>Google Sheets: mementouri</td><td>Câte un memento pentru fiecare programare din foaie, cu câteva ore înainte</td></tr><tr><td>Google Forms</td><td>Un mesaj pentru tine la fiecare răspuns și, opțional, o confirmare pentru cel care a completat formularul</td></tr></tbody></table>
<p>Fiecare șablon trimite un singur mesaj pe număr, doar la numerele pentru care l-ai configurat, cu o limită pe rulare și niciodată de două ori același mesaj. Nu există un buton care să trimită mesaje tuturor celor din foaie, și asta e intenționat.</p>
<h2 id="de-ce-ai-nevoie">De ce ai nevoie</h2>
<ul>
<li>Un telefon Android cu <a href="https://play.google.com/store/apps/details?id=io.smstunnel.app">aplicația SMSTunnel din Google Play</a>, autentificată în contul tău. Videoclipul de mai sus arată pașii.</li>
<li>Un cont Google, personal sau Google Workspace. Apps Script e gratuit cu oricare dintre ele.</li>
<li>O cheie SMSTunnel. În <a href="https://dashboard.smstunnel.io/apps">dashboard</a> deschizi <strong>Apps → Add an app</strong>, alegi <strong>Script or server</strong>, îi dai un nume (de exemplu „Programări cabinet”) și apeși <strong>Create the key</strong>. Copiaz-o imediat, pentru că e afișată o singură dată. Fă câte o cheie pentru fiecare foaie de calcul, ca să poți opri una fără să le atingi pe celelalte.</li>
</ul>
<h2 id="pasul-1-adaugi-șablonul-în-foaia-de-calcul">Pasul 1: adaugi șablonul în foaia de calcul</h2>
<p>Copiile gata făcute, cu un singur clic (<strong>Make a copy</strong>), vin în curând. Până atunci, copiezi codul din <a href="https://github.com/narcisbodea/smstunnel-google">depozitul smstunnel-google de pe GitHub</a>, în câteva minute. Meniurile Google apar mai jos cu numele din interfața în engleză; în interfața în română le găsești în aceleași locuri.</p>
<ol>
<li>Deschide foaia de calcul: cea cu datele tale pentru Google Sheets sau una nouă pentru Google Calendar (ea ține jurnalul și, dacă vrei, numerele invitaților). Apoi alege <strong>Extensions → Apps Script</strong>.</li>
<li>Pe GitHub, deschide dosarul șablonului: <code>apps-script/calendar-reminders</code>, <code>apps-script/sheets-status-texts</code> sau <code>apps-script/sheets-reminders</code>. Creează în editor aceleași fișiere și lipește conținutul fiecăruia: <code>SmsTunnel</code>, <code>SmsTunnelKit</code> și <code>Code</code> ca fișiere script (<strong>+ → Script</strong>), iar <code>Setup</code> ca fișier HTML (<strong>+ → HTML</strong>).</li>
<li>Deschide <strong>Project Settings</strong> (rotița), bifează <strong>Show “appsscript.json” manifest file in editor</strong>, deschide <code>appsscript.json</code> și înlocuiește-l cu cel din șablon.</li>
<li>Salvează, întoarce-te în foaia de calcul și reîncarc-o. După câteva secunde apare meniul <strong>SMSTunnel</strong>.</li>
</ol>
<h2 id="pasul-2-configurezi-și-trimiți-un-mesaj-de-test">Pasul 2: configurezi și trimiți un mesaj de test</h2>
<p>Alege <strong>SMSTunnel → Set up</strong>. Prima dată, Google îți cere permisiunea și, pentru că e copia ta a unui script pe care Google nu l-a verificat, afișează <strong>„Google hasn’t verified this app”</strong>. E normal pentru un script al tău: apasă <strong>Advanced → Go to … (unsafe)</strong>. Bifează toate permisiunile: scriptul vorbește doar cu smstunnel.io, lucrează doar în această foaie de calcul, îți citește calendarele fără să le modifice și rulează declanșatoarele cât timp nu ești la calculator.</p>
<p>Apoi lipești cheia, apeși <strong>Check</strong>, alegi telefonul care trimite mesajele, completezi restul și apeși <strong>Save and turn on</strong>. La final îți trimiți un mesaj de test: <strong>SMSTunnel → Send a test text</strong> sau, în șablonul pentru Calendar, <strong>Send me a test reminder</strong>.</p>
<h2 id="exemplu-mementouri-pentru-pacienții-unui-cabinet-stomatologic">Exemplu: mementouri pentru pacienții unui cabinet stomatologic</h2>
<p>Șablonul pentru Google Calendar are trei părți, iar tu le pornești doar pe cele de care ai nevoie. Pentru pacienți, partea care contează e mementoul către oamenii din programări.</p>
<p>Numărul pacientului vine dintr-un rând din descrierea evenimentului care începe cu un cuvânt ales de tine și două puncte. Cuvântul poate fi în orice limbă, așa că în Set up poți alege „Telefon” și scrii în descriere:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>Telefon: 0722 123 456</span></span></code></pre>
<p>Un număr fără prefixul țării, ca acesta, are nevoie de prefixul <code>+40</code>, pe care îl completezi în <strong>Set up → More settings</strong>; fără el, numărul e sărit, ca să nu plece niciun mesaj într-o altă țară. Alte numere din descriere, cum ar fi cel de dial-in al unei întâlniri video, nu sunt folosite niciodată.</p>
<p>Textul îl scrii tu, cu câmpurile <code>{Title}</code>, <code>{Date}</code>, <code>{Time}</code> și <code>{Location}</code>:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>Bună ziua! Vă reamintim programarea la cabinet: {Date}, ora {Time}. Dacă trebuie să o mutați, răspundeți la acest mesaj.</span></span></code></pre>
<p>Tot în <strong>More settings</strong> alegi cum arată data și ora în mesaj; un format numeric, cu ora pe 24 de ore, se citește cel mai firesc în română. Câmpul <code>{In}</code> se completează în engleză („in 15 min”), așa că într-un mesaj în română e mai bine să-l lași deoparte.</p>
<p>Câteva reguli te protejează de surprize. Implicit, contează doar evenimentele create de tine, ca o invitație de la altcineva să nu poată alege cine primește un mesaj de pe telefonul tău. Mementourile către oameni pleacă doar între orele alese (implicit 8:00–21:00), la cel mult 10 persoane pe eveniment. Fiecare memento pleacă o singură dată, iar dacă muți programarea, noua oră primește un singur mesaj nou.</p>
<p>Celelalte două părți sunt pentru tine: un memento cu 10 minute până la o zi înainte de fiecare eveniment, la cel mult 5 numere ale tale, și agenda zilei, un singur mesaj în fiecare dimineață, la ora aleasă.</p>
<h2 id="exemplu-un-atelier-de-reparații-anunță-că-aparatul-e-gata">Exemplu: un atelier de reparații anunță că aparatul e gata</h2>
<p>Un service de telefoane ține comenzile într-o foaie Google Sheets cu coloanele <strong>Nume</strong>, <strong>Telefon</strong>, <strong>Comanda</strong> și <strong>Stare</strong>. Cu șablonul pentru mesaje de stare alegi foaia, coloana de stare, valoarea care trimite mesajul (de exemplu „Gata”) și coloana cu telefonul. În text, numele coloanelor devin câmpuri:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>Bună, {Nume}! Comanda {Comanda} e gata și te așteaptă la atelier, de luni până vineri, între 9 și 18.</span></span></code></pre>
<p>Când cineva trece starea unui rând pe „Gata”, numărul de pe acel rând primește mesajul, iar coloana <strong>Texted at</strong>, adăugată de șablon, arată când. Un rând nu primește niciodată mesajul de două ori, iar rândurile care aveau deja valoarea la configurare sunt sărite. Dacă lipești valoarea pe multe rânduri, pleacă cel mult 20 de mesaje deodată (poți ridica limita la 50), iar restul așteaptă. Dacă foaia e completată de o altă aplicație, bifează <strong>Also check every 15 minutes</strong>, pentru că modificările făcute de alte aplicații nu pornesc declanșatorul de editare al Google.</p>
<h2 id="exemplu-mementouri-dintr-o-foaie-cu-programări">Exemplu: mementouri dintr-o foaie cu programări</h2>
<p>Pentru un salon care ține programările într-o foaie cu <strong>Nume</strong>, <strong>Telefon</strong>, <strong>Data</strong> și <strong>Ora</strong>, șablonul de mementouri alege singur rândurile. Datele pot fi date reale sau text precum <code>2026-11-02 14:30</code> și se citesc în fusul orar al foii (<strong>File → Settings</strong>). Și aici, câmpurile sunt numele coloanelor:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>Bună ziua, {Nume}! Vă așteptăm la salon pe {Data}, la ora {Ora}. Dacă nu puteți ajunge, răspundeți la acest mesaj.</span></span></code></pre>
<p>Din oră în oră, fiecare programare din următoarele 24 de ore (sau câte ore alegi) primește un memento, între orele alese (implicit 8:00–21:00), cel mult 25 pe rulare. Coloana <strong>Reminder sent</strong> îl înregistrează, iar un rând fără un număr valid e marcat <strong>Not sent</strong>, cu motivul. <strong>Preview the next reminders</strong> îți arată ce ar pleca, fără să trimită nimic.</p>
<h2 id="limite-și-bune-practici">Limite și bune practici</h2>
<ul>
<li><strong>Numerele</strong> se scriu în format internațional, de exemplu <code>+40722123456</code>. <strong>Format → Number → Plain text</strong> păstrează semnul <code>+</code> în celulă.</li>
<li><strong>SMSTunnel</strong> acceptă 30 de cereri de trimitere pe minut și până la 1600 de caractere pe mesaj, iar limita zilnică a planului tău se aplică. Șabloanele fac o pauză de 2 secunde între mesaje și au o limită pe rulare.</li>
<li><strong>Limitele Google</strong>: un cont Google gratuit are 20.000 de apeluri URL Fetch pe zi (unul pe mesaj) și 90 de minute pe zi pentru declanșatoare; conturile Workspace au mai mult.</li>
<li><strong>Dacă telefonul e offline</strong>, mesajul așteaptă în contul tău și pleacă imediat ce telefonul revine online.</li>
<li><strong>Cheia</strong> stă în proprietățile de utilizator ale scriptului (user properties), niciodată într-o celulă sau în jurnal. Oricine poate edita foaia îi poate edita și scriptul, așa că dă drept de editare doar oamenilor în care ai încredere. Dacă ștergi cheia din <strong>Apps</strong>, în dashboard, se opresc toate mesajele.</li>
<li><strong>Doar mesaje așteptate</strong>: trimite mementouri doar celor care ți-au dat numărul pentru asta și respectă regulile locale; în UE, asta include GDPR și regulile ePrivacy pentru comunicațiile electronice.</li>
</ul>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="cât-costă">Cât costă?</h3>
<p>Șabloanele sunt gratuite, la fel și Apps Script. Mesajele intră în planul tău SMSTunnel, iar pentru SMS-urile trimise de telefon se aplică abonamentul tău de la operator. <a href="https://smstunnel.io/ro/pricing/">Planul Gratuit</a> include 25 de mesaje pe zi și 500 pe lună, trimise exact cum le-ai scris; Starter, la 9 $ pe lună, permite 300 de mesaje pe zi, pentru o agendă plină.</p>
<h3 id="ce-număr-văd-pacienții-și-clienții">Ce număr văd pacienții și clienții?</h3>
<p>Numărul tău. Mesajele pleacă de pe telefonul tău, de pe SIM-ul lui, ca un mesaj scris de tine, iar răspunsurile vin tot pe telefonul tău.</p>
<h3 id="calendarul-meu-e-în-outlook-ce-fac">Calendarul meu e în Outlook. Ce fac?</h3>
<p>Vezi <a href="https://smstunnel.io/integrations/outlook-calendar/">mementourile prin SMS pentru Outlook Calendar</a>, făcute cu n8n, Power Automate, Zapier sau Make.</p>
<h3 id="poate-trimite-mementourile-un-asistent-ai">Poate trimite mementourile un asistent AI?</h3>
<p>Da, când îi ceri: cu <a href="https://smstunnel.io/ro/blog/server-mcp-sms-claude-cursor/">serverul MCP SMSTunnel</a> și un conector pentru calendar, un asistent precum Claude le poate scrie pacienților de mâine după ce îți arată lista. Nu rulează însă după un program, așa că pentru mementouri care pleacă singure, folosește șablonul pentru Calendar.</p>]]></content:encoded>
    </item>
    <item>
      <title>Alerte de monitorizare prin SMS, de pe telefonul tău: Uptime Kuma, Grafana, Zabbix și GitHub Actions</title>
      <link>https://smstunnel.io/ro/blog/alerte-de-monitorizare-prin-sms/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/alerte-de-monitorizare-prin-sms/</guid>
      <pubDate>Tue, 03 Nov 2026 07:30:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>Monitorizare</category>
      <category>Alerte</category>
      <description>Alertele din Uptime Kuma, Grafana, Zabbix și GitHub Actions ajung la tine prin SMS, trimise de telefonul tău Android, de pe numărul tău, fără modem GSM.</description>
      <content:encoded><![CDATA[<p><a href="https://www.youtube.com/watch?v=Rey_Kla6WkQ"><img src="https://smstunnel.io/video/setup-android.webp" alt="Configurează SMSTunnel pe telefonul tău Android în 2 minute" /></a></p><p>Când pică site-ul magazinului sau se umple discul unui server, alerta contează doar dacă ajunge la cineva. Un SMS ajunge și atunci când un e-mail sau o notificare push se pierd, iar omul de gardă îl primește de la un număr pe care îl cunoaște și pe care îl poate suna înapoi.</p>
<p>Cu SMSTunnel, uneltele tale de monitorizare îi predau fiecare alertă contului tău SMSTunnel, iar telefonul tău Android o trimite de pe SIM-ul lui. Nu montezi niciun modem GSM pe server și nu ai un furnizor de SMS la mijloc: fiecare alertă e un SMS obișnuit din abonamentul tău de la operator. Mai jos configurăm patru unelte des folosite, Uptime Kuma, Grafana, Zabbix și GitHub Actions, plus o adresă de webhook pentru restul.</p>
<h2 id="înainte-de-toate-câte-o-cheie-pentru-fiecare-unealtă">Înainte de toate: câte o cheie pentru fiecare unealtă</h2>
<p>Instalează <a href="https://play.google.com/store/apps/details?id=io.smstunnel.app">aplicația SMSTunnel din Google Play</a> pe un telefon Android și autentifică-te; videoclipul de mai sus arată pașii. Apoi, în <a href="https://dashboard.smstunnel.io/apps">dashboard</a>, deschide <strong>Apps → Add an app</strong>, alege <strong>Script or server</strong>, dă-i numele uneltei (de exemplu „Uptime Kuma”) și apasă <strong>Create the key</strong>. Copiază cheia imediat, pentru că e afișată o singură dată.</p>
<p>Fă câte o aplicație pentru fiecare unealtă. Dacă o cheie scapă din setările uneia, ștergi doar aplicația ei, iar celelalte trimit mai departe.</p>
<p>Toate cele patru unelte fac, de fapt, același apel: o cerere POST către <a href="https://smstunnel.io/api-reference/#send-sms">endpoint-ul de trimitere</a>, cu cheia în antetul <code>X-API-Key</code> și câte un singur număr pe cerere:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">curl</span><span style="color:#79B8FF"> -X</span><span style="color:#9ECBFF"> POST</span><span style="color:#9ECBFF"> https://smstunnel.io/api/v1/sms/send</span><span style="color:#79B8FF"> \</span></span>
<span class="line"><span style="color:#79B8FF">  -H</span><span style="color:#9ECBFF"> "X-API-Key: sk_live_..."</span><span style="color:#79B8FF"> \</span></span>
<span class="line"><span style="color:#79B8FF">  -H</span><span style="color:#9ECBFF"> "Content-Type: application/json"</span><span style="color:#79B8FF"> \</span></span>
<span class="line"><span style="color:#79B8FF">  -d</span><span style="color:#9ECBFF"> '{"to": "+40712345678", "message": "Serverul web-01 nu răspunde"}'</span></span></code></pre>
<p>Numerele se scriu în format internațional, cu <code>+40</code> pentru România. Pentru doi oameni faci două cereri: fiecare primește propriul mesaj.</p>
<h2 id="uptime-kuma-notificarea-webhook-fără-plugin">Uptime Kuma: notificarea Webhook, fără plugin</h2>
<p>Uptime Kuma nu are nevoie de niciun plugin. Deschide <strong>Settings → Notifications → Set Up Notification</strong>, alege tipul <strong>Webhook</strong>, dă-i un nume ca „SMS către mine” și completează:</p>
<ul>
<li><strong>Post URL</strong>: <code>https://smstunnel.io/api/v1/sms/send</code>, cu <strong>HTTP Method</strong> POST, dacă versiunea ta afișează câmpul;</li>
<li><strong>Request Body</strong>: <strong>Custom Body</strong>, cu numărul tău în <code>to</code>;</li>
<li><strong>Additional Headers</strong>: pornit, cu cheia ta.</li>
</ul>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>{"to": "+40712345678", "message": {{ msg | json }}}</span></span></code></pre>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span><span style="color:#79B8FF">"Content-Type"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"application/json"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"X-API-Key"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"sk_live_..."</span><span style="color:#E1E4E8">}</span></span></code></pre>
<p>Lasă <code>{{ msg | json }}</code> exact așa: pune textul alertei din Uptime Kuma în mesaj, cu ghilimelele de care are nevoie JSON-ul. Apasă <strong>Test</strong>, iar telefonul îți trimite <code>&#x3C;Friendly Name> Testing</code>; o cheie greșită apare ca eroare 401, „Invalid or expired API key”. Apasă <strong>Save</strong>, apoi bifează notificarea în lista <strong>Notifications</strong> a fiecărui monitor sau folosește <strong>Default enabled</strong> și <strong>Apply on all existing monitors</strong>. Pentru mai mulți colegi, adaugi câte o notificare Webhook pentru fiecare număr.</p>
<p>Mesajele arată așa:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>[My shop] [🔴 Down] timeout of 48000ms exceeded</span></span>
<span class="line"><span>[My shop] [✅ Up] 200 - OK</span></span></code></pre>
<p>Un monitor care tot cade și revine trimite un mesaj de fiecare dată, așa că completează <strong>Retries</strong>, ca o scurtă întrerupere să nu fie raportată drept cădere.</p>
<p>Nu vrei nicio cheie în Uptime Kuma? Merge și cu o adresă de webhook: în dashboard deschide <strong>Aplicații → Webhook-uri → Webhook nou</strong> (în engleză: Apps → Webhooks → New webhook) și alege <strong>Uptime Kuma</strong>, care pune ca text al mesajului <code>{{msg}}</code>. Apoi pune adresa la <strong>Post URL</strong>, cu <strong>Request Body</strong> pe <strong>Preset - application/json</strong> și fără antete; o singură notificare trimite mesajul la toate numerele webhook-ului, până la 10. <a href="https://smstunnel.io/integrations/uptime-kuma/#webhook-url">Ghidul pentru Uptime Kuma</a> arată ambele variante.</p>
<h2 id="grafana-un-contact-point-de-tip-webhook">Grafana: un contact point de tip webhook</h2>
<p>În Grafana 12 sau mai nou, deschide <strong>Alerts &#x26; IRM → Alerting → Notification configuration → Contact points</strong>, apasă <strong>+ Add contact point</strong> și alege integrarea <strong>Webhook</strong>. Pune la URL <code>https://smstunnel.io/api/v1/sms/send</code>. La <strong>Optional Webhook settings</strong>, alege <strong>HTTP Method</strong> POST și adaugă la <strong>Extra Headers</strong> o intrare numită <code>X-API-Key</code>, cu cheia ta ca valoare. Apoi lipește asta la <strong>Custom Payload → Payload Template</strong>:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>{{ coll.Dict</span></span>
<span class="line"><span>  "to" "+40712345678"</span></span>
<span class="line"><span>  "message" (printf "%s %s" (tmpl.Exec "default.title" .) (index .Alerts 0).Annotations.summary)</span></span>
<span class="line"><span>  | data.ToJSON }}</span></span></code></pre>
<p><code>coll.Dict … | data.ToJSON</code> scrie JSON-ul în locul tău, așa că ghilimelele sau semnele „:” dintr-o alertă nu-l pot strica. Lasă goale câmpurile Authorization și Basic Authentication, apasă <strong>Test</strong>, apoi <strong>Save contact point</strong> și alege-l într-o regulă de alertă sau în <strong>Notification policies</strong>. Un mesaj arată ca <code>[FIRING:1] DiskFull nas1  Disk 95% full: /volume1</code>, iar când alerta trece, apare din nou, cu <code>[RESOLVED]</code>.</p>
<p>Două lucruri bune de știut. O alertă activă trimite din nou mesaj la fiecare <strong>repeat interval</strong> (implicit 4 ore) și încă o dată când se rezolvă, dacă nu bifezi <strong>Disable resolved message</strong>. Iar Grafana nu ascunde Extra Headers: oricine poate edita contact point-ul vede cheia, încă un motiv să-i dai Grafanei aplicația ei.</p>
<p>Și mai simplu, pe orice versiune de Grafana și pe Grafana Cloud: pune o adresă de webhook la URL-ul contact point-ului și lasă restul cum e, fără cheie și fără șablon de payload (vezi secțiunea despre webhook, mai jos). SMSTunnel citește direct JSON-ul alertelor din Grafana și trimite la numerele webhook-ului <code>[FIRING] DiskFull - Disk 95% full: /volume1</code>.</p>
<h2 id="zabbix-un-tip-de-media-în-locul-modemului-gsm">Zabbix: un tip de media în locul modemului GSM</h2>
<p>SMS-ul inclus în Zabbix are nevoie de un modem GSM legat la un port serial al serverului. <a href="https://smstunnel.io/integrations/zabbix/">Tipul de media SMSTunnel</a> are nevoie doar de HTTPS, așa că merge la fel pe un server fizic, într-o mașină virtuală, în Docker sau în cloud, pentru Zabbix 6.0 LTS, 7.0 LTS și versiunile mai noi. În Zabbix 6.0, unele meniuri sunt în altă parte: le găsești între paranteze.</p>
<ol>
<li>Descarcă <a href="https://github.com/narcisbodea/smstunnel-zabbix/releases/latest/download/media_smstunnel.yaml">media_smstunnel.yaml</a>, sau <a href="https://github.com/narcisbodea/smstunnel-zabbix/releases/latest/download/media_smstunnel_6.0.yaml">media_smstunnel_6.0.yaml</a> pentru Zabbix 6.0, și importă-l din <strong>Alerts → Media types → Import</strong> (6.0: <strong>Administration → Media types → Import</strong>).</li>
<li>În <strong>Administration → Macros</strong> (6.0: <strong>Administration → General → Macros</strong>), adaugă <code>{$SMSTUNNEL.API.KEY}</code> cu cheia ta și alege tipul <strong>Secret text</strong>, ca să fie ascunsă în interfață și lăsată afară din exporturi.</li>
<li>Apasă <strong>Test</strong> pe rândul SMSTunnel și pune numărul tău în <code>send_to</code>. Fereastra de test nu completează macro-urile, așa că lipești cheia în <code>api_key</code> doar pentru acest test.</li>
<li>Dă-i fiecărui utilizator propriul număr: în <strong>Users → Users</strong> (6.0: <strong>Administration → Users</strong>) deschizi utilizatorul, apoi <strong>Media → Add</strong>, tipul <strong>SMSTunnel</strong>, cu numărul la <strong>Send to</strong>, în format internațional.</li>
<li>În <strong>Alerts → Actions → Trigger actions</strong> (6.0: <strong>Configuration → Actions → Trigger actions</strong>), adaugă o operație care trimite către utilizatori sau grupuri de utilizatori, cu <strong>Send only to: SMSTunnel</strong>.</li>
</ol>
<p><img src="https://smstunnel.io/zabbix-smstunnel-test.png" alt="Fereastra de test a tipului de media SMSTunnel în Zabbix 7.0: „Media type test successful”, cu cheia API ascunsă" loading="lazy" decoding="async" width="1440" height="900"></p>
<p>Tipul de media vine cu șabloane de mesaje scrise pentru ecranul unui telefon și taie textele la 320 de caractere. Șabloanele sunt în engleză, dar le poți rescrie în română din tab-ul <strong>Message templates</strong> al tipului de media; notează-ți textele înainte să imporți o versiune nouă, pentru că importul le înlocuiește:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="text"><code><span class="line"><span>PROBLEM: High CPU utilization (over 90% for 5m)</span></span>
<span class="line"><span>Host: web-01</span></span>
<span class="line"><span>Severity: High</span></span>
<span class="line"><span>Data: Current utilization: 97.3 %</span></span>
<span class="line"><span>Started: 2026.11.01 10:00:00</span></span>
<span class="line"><span>ID: 123456</span></span></code></pre>
<p>Un moment aglomerat sau o scurtă întrerupere se reîncearcă vreo două minute (5 încercări, la 30 de secunde una de alta). Alertele le trimite doar serverul Zabbix, nu un proxy Zabbix, așa că el trebuie să ajungă la smstunnel.io pe portul 443.</p>
<h2 id="github-actions-un-mesaj-când-publicarea-eșuează">GitHub Actions: un mesaj când publicarea eșuează</h2>
<p>Salvează cheia ca secretul de depozit <code>SMSTUNNEL_API_KEY</code> (<strong>Settings → Secrets and variables → Actions</strong>). Într-un depozit public, salvează și numărul ca secret, de exemplu <code>ALERT_PHONE</code>, pentru că fișierele fluxurilor de lucru și jurnalele lor sunt publice. Apoi adaugă un pas care rulează doar când jobul eșuează:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="yaml"><code><span class="line"><span style="color:#E1E4E8">- </span><span style="color:#85E89D">name</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">Trimite-mi un SMS dacă a eșuat</span></span>
<span class="line"><span style="color:#85E89D">  if</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">failure()</span></span>
<span class="line"><span style="color:#85E89D">  uses</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">narcisbodea/smstunnel-action@v1</span></span>
<span class="line"><span style="color:#85E89D">  with</span><span style="color:#E1E4E8">:</span></span>
<span class="line"><span style="color:#85E89D">    api-key</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">${{ secrets.SMSTUNNEL_API_KEY }}</span></span>
<span class="line"><span style="color:#85E89D">    to</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">${{ secrets.ALERT_PHONE }}</span></span>
<span class="line"><span style="color:#85E89D">    message</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"Publicarea ${{ github.repository }} a eșuat la ${{ github.sha }}: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"</span></span></code></pre>
<p>Mai multe numere în <code>to</code>, despărțite prin virgule sau rânduri noi, primesc câte un mesaj fiecare (cel mult 30). GitHub nu dă secrete fluxurilor care rulează pentru pull request-uri din fork-uri sau pentru Dependabot, așa că sari peste pas în cazurile acelea și nu trece la <code>pull_request_target</code> ca să ocolești regula. Dacă un mesaj eșuat nu trebuie să oprească publicarea, adaugă <code>continue-on-error: true</code>. <a href="https://smstunnel.io/integrations/github-actions/">Ghidul pentru GitHub Actions</a> are și exemple pentru lansări și joburi de noapte.</p>
<h2 id="restul-uneltelor-o-adresă-de-webhook">Restul uneltelor: o adresă de webhook</h2>
<p>Unele unelte nu pot pune un antet sau propriul corp JSON. Pentru ele, SMSTunnel are <a href="https://smstunnel.io/integrations/webhooks/">webhook-uri</a>: o adresă secretă care trimite mesaj la numerele salvate odată cu ea (de la 1 la 10, câte un mesaj fiecăruia). Apelul stabilește doar textul, niciodată numărul, așa că nu are nevoie de cheie, iar o adresă scăpată nu poate trimite mesaje altor numere.</p>
<p>O faci în <a href="https://dashboard.smstunnel.io/apps/webhooks?new=other">dashboard</a>: deschide <strong>Aplicații → Webhook-uri → Webhook nou</strong> (în engleză: Apps → Webhooks → New webhook), alege unealta care îl va apela (Grafana, Uptime Kuma, Healthchecks, Gatus, Alertmanager, Odoo Online sau <strong>Altceva</strong>), adaugă numerele, apasă <strong>Creează webhook-ul</strong> și copiază adresa. Dashboard-ul îți arată apoi pașii pentru unealta aleasă, cu adresa deja completată, și un buton care trimite o probă. Poți copia adresa din nou oricând, iar dacă ajunge unde nu trebuie, <strong>Adresă nouă</strong> o înlocuiește.</p>
<p>Merge un GET cu <code>?message=</code> sau un POST cu un câmp <code>message</code>; textele sunt tăiate la 480 de caractere. Fiecare webhook primește implicit 20 de apeluri pe oră (până la 500), iar limita numără apelurile, nu mesajele: fiecare apel trimite mesajul la toate numerele webhook-ului. Alertele din Prometheus Alertmanager și Grafana sunt citite fără niciun șablon; pentru Uptime Kuma, când îl alegi, textul devine <code>{{msg}}</code>, ca numele monitorului să nu apară de două ori. De exemplu, un rând de crontab:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">0</span><span style="color:#79B8FF"> 3</span><span style="color:#79B8FF"> *</span><span style="color:#79B8FF"> *</span><span style="color:#79B8FF"> *</span><span style="color:#9ECBFF"> /opt/backup.sh</span><span style="color:#F97583"> ||</span><span style="color:#B392F0"> curl</span><span style="color:#79B8FF"> -s</span><span style="color:#79B8FF"> -X</span><span style="color:#9ECBFF"> POST</span><span style="color:#9ECBFF"> https://smstunnel.io/api/v1/webhook/</span><span style="color:#F97583">&#x3C;</span><span style="color:#9ECBFF">toke</span><span style="color:#E1E4E8">n</span><span style="color:#F97583">></span><span style="color:#79B8FF"> -H</span><span style="color:#9ECBFF"> 'Content-Type: application/json'</span><span style="color:#79B8FF"> -d</span><span style="color:#9ECBFF"> '{"message":"Copia de siguranță de azi-noapte a eșuat"}'</span></span></code></pre>
<p>Scripturile pot face webhook-uri și prin API; <a href="https://smstunnel.io/integrations/webhooks/#api">ghidul despre webhook-uri</a> arată cum. Există ghiduri gata făcute pentru <a href="https://smstunnel.io/integrations/alertmanager/#webhook-url">Prometheus Alertmanager</a>, <a href="https://smstunnel.io/integrations/healthchecks/#webhook-url">Healthchecks.io</a>, <a href="https://smstunnel.io/integrations/gatus/#webhook-url">Gatus</a> și <a href="https://smstunnel.io/integrations/odoo/#odoo-online">Odoo Online</a>, iar cu o cheie, pentru <a href="https://smstunnel.io/integrations/proxmox/">Proxmox</a> și <a href="https://smstunnel.io/integrations/synology/">Synology</a>.</p>
<h2 id="limite-bune-de-știut">Limite bune de știut</h2>
<ul>
<li><strong>30 de cereri de trimitere pe minut.</strong> Peste ele, SMSTunnel răspunde cu 429, iar fiecare unealtă notează eroarea sau reîncearcă. Grupează alertele, ca o avalanșă să devină un singur mesaj.</li>
<li><strong>Lungimea.</strong> Un mesaj poate avea până la 1600 de caractere. Un emoji face ca un SMS să cuprindă 70 de caractere în loc de 160, iar Uptime Kuma pune câte unul în fiecare alertă, așa că o alertă mai lungă pleacă în mai multe părți unite.</li>
<li><strong>Telefonul trebuie să fie pornit și online.</strong> Dacă nu e, mesajul așteaptă în contul tău și pleacă atunci când telefonul revine, timp de până la 3 zile. Dacă o alertă nu are voie să depindă de un telefon pornit și online, pentru ea se potrivește mai bine un <a href="https://smstunnel.io/compare/">furnizor de API SMS</a>.</li>
<li><strong>Planurile.</strong> <a href="https://smstunnel.io/ro/pricing/">Planul Gratuit</a> include 25 de mesaje pe zi și 500 pe lună, trimise exact cum le-ai scris, plus până la 25 în plus pe zi, care se încheie cu un scurt rând „free by smstunnel.io”. Starter (9 $ pe lună, fără taxe) permite 300 pe zi, Standard (19 $) 2.000, iar Profesional (39 $) nu are limită zilnică.</li>
</ul>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="am-nevoie-de-un-modem-gsm-sau-de-un-furnizor-de-sms">Am nevoie de un modem GSM sau de un furnizor de SMS?</h3>
<p>Nu. Mesajele pleacă de pe telefonul tău, din abonamentul pe care îl plătești deja, de la un număr pe care oamenii îl recunosc.</p>
<h3 id="pot-primi-mai-mulți-colegi-aceeași-alertă">Pot primi mai mulți colegi aceeași alertă?</h3>
<p>Da, fiecare propriul mesaj: câte o notificare în Uptime Kuma, o integrare în Grafana sau o intrare Media în Zabbix pentru fiecare număr, până la 30 de numere în <code>to</code>, în acțiunea pentru GitHub, ori o singură adresă de webhook cu până la 10 numere.</p>
<h3 id="unde-țin-cheia">Unde țin cheia?</h3>
<p>Acolo unde o pot citi doar administratorii: în macro-ul de tip Secret text din Zabbix, într-un secret de depozit GitHub, în setările de notificare din Uptime Kuma sau Grafana. Dacă ștergi aplicația uneltei din dashboard, unealta nu mai poate trimite nimic, din acel moment.</p>]]></content:encoded>
    </item>
    <item>
      <title>Claude, Cursor și VS Code trimit SMS de pe telefonul tău, prin MCP</title>
      <link>https://smstunnel.io/ro/blog/server-mcp-sms-claude-cursor/</link>
      <guid isPermaLink="true">https://smstunnel.io/ro/blog/server-mcp-sms-claude-cursor/</guid>
      <pubDate>Tue, 03 Nov 2026 07:20:00 GMT</pubDate>
      <dc:creator>NARBOWEB SRL</dc:creator>
      <category>AI</category>
      <category>MCP</category>
      <description>Conectezi serverul MCP SMSTunnel la Claude, Cursor sau VS Code, iar asistentul AI trimite mesaje de pe telefonul și numărul tău, după ce aprobi fiecare mesaj.</description>
      <content:encoded><![CDATA[<p><a href="https://www.youtube.com/watch?v=Rey_Kla6WkQ"><img src="https://smstunnel.io/video/setup-android.webp" alt="Configurează SMSTunnel pe telefonul tău Android în 2 minute" /></a></p><p>„Scrie-i Ioanei că întârzii zece minute.” Spusă lui Claude, fraza asta poate deveni un SMS adevărat, trimis de pe numărul tău. Serverul MCP SMSTunnel le dă aplicațiilor Claude Desktop, Claude Code, Cursor și VS Code câteva unelte noi: asistentul predă mesajul contului tău SMSTunnel, iar aplicația SMSTunnel de pe telefonul tău Android îl trimite de pe SIM-ul tău. Ioana vede un număr pe care îl cunoaște și îți poate răspunde direct.</p>
<p>Serverul e publicat: pachetul <a href="https://www.npmjs.com/package/@narcisbodea/smstunnel-mcp"><code>@narcisbodea/smstunnel-mcp</code></a> pe npm, intrarea <code>io.github.narcisbodea/smstunnel-mcp</code> în MCP Registry și <a href="https://github.com/narcisbodea/smstunnel-mcp">codul sursă pe GitHub</a>, cu licența MIT. Pagina <a href="https://smstunnel.io/integrations/mcp/">serverului MCP</a> are aceeași configurare, pe scurt.</p>
<p>Mai jos îl configurezi în câteva minute și afli regulile cu care vine: aprobi fiecare mesaj, fiecare mesaj merge la o singură persoană, iar mesajele primite sunt tratate ca informații, niciodată ca instrucțiuni.</p>
<h2 id="ce-poate-face-asistentul">Ce poate face asistentul</h2>
<p>MCP (Model Context Protocol) e un standard deschis prin care aplicațiile AI folosesc unelte externe. Serverul SMSTunnel adaugă șase:</p>

































<table><thead><tr><th>Unealta</th><th>Ce face</th></tr></thead><tbody><tr><td><code>send_sms</code></td><td>Trimite un mesaj la un singur număr. Pentru mai multe persoane, câte un mesaj fiecăreia.</td></tr><tr><td><code>send_sign_in_code</code></td><td>Trimite un cod de autentificare sau de verificare (între 4 și 10 cifre).</td></tr><tr><td><code>get_message_status</code></td><td>Spune dacă un mesaj așteaptă, a fost trimis, a fost livrat sau a eșuat.</td></tr><tr><td><code>list_phones</code></td><td>Arată telefoanele tale legate de cont și pe cele conectate acum.</td></tr><tr><td><code>get_usage</code></td><td>Arată planul tău, cât ai trimis azi și cât mai poți trimite.</td></tr><tr><td><code>list_received_texts</code></td><td>Citește mesajele primite de telefon, doar dacă îi dai voie.</td></tr></tbody></table>
<p>Fiecare unealtă poartă adnotările MCP care arată dacă doar citește sau schimbă ceva, așa că aplicațiile AI care le folosesc te pot întreba înainte să plece vreun mesaj.</p>
<h2 id="pasul-1-telefonul-și-cheia">Pasul 1: telefonul și cheia</h2>
<ol>
<li>Instalează aplicația SMSTunnel din Google Play pe telefonul tău Android și autentifică-te. Pe computer, intră în dashboard cu același cont: telefonul apare la <strong>Phones</strong>.</li>
<li>În dashboard, deschide <strong>Apps → Add an app</strong> și copiază cheia. Apare o singură dată și poate trimite mesaje și verifica dacă au plecat.</li>
<li>Opțional: ca asistentul să poată citi mesajele pe care le primești, bifează <strong>Can also read received texts</strong> când adaugi aplicația și pornește sincronizarea mesajelor primite în aplicația SMSTunnel. Sincronizarea e oprită implicit și preia doar mesajele care sosesc după ce o pornești.</li>
</ol>
<h2 id="pasul-2-serverul-în-aplicația-ta-ai">Pasul 2: serverul în aplicația ta AI</h2>
<p>Ai nevoie de <a href="https://nodejs.org">Node.js</a> 20 sau mai nou. Aplicația AI pornește singură serverul cu <code>npx</code>; nu trebuie să-l rulezi tu.</p>
<h3 id="claude-desktop-și-cursor">Claude Desktop și Cursor</h3>
<p>În Claude Desktop, deschide <strong>Settings → Developer → Edit Config</strong> (fișierul <code>claude_desktop_config.json</code>), adaugă serverul, apoi închide și redeschide Claude. Cursor primește același bloc în <code>~/.cursor/mcp.json</code> (pentru toate proiectele) sau în <code>.cursor/mcp.json</code> (pentru un singur proiect).</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span></span>
<span class="line"><span style="color:#79B8FF">  "mcpServers"</span><span style="color:#E1E4E8">: {</span></span>
<span class="line"><span style="color:#79B8FF">    "smstunnel"</span><span style="color:#E1E4E8">: {</span></span>
<span class="line"><span style="color:#79B8FF">      "command"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"npx"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">      "args"</span><span style="color:#E1E4E8">: [</span><span style="color:#9ECBFF">"-y"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"@narcisbodea/smstunnel-mcp"</span><span style="color:#E1E4E8">],</span></span>
<span class="line"><span style="color:#79B8FF">      "env"</span><span style="color:#E1E4E8">: {</span></span>
<span class="line"><span style="color:#79B8FF">        "SMSTUNNEL_API_KEY"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"sk_live_cheia_ta"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">        "SMSTUNNEL_DEFAULT_COUNTRY_CODE"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"+40"</span></span>
<span class="line"><span style="color:#E1E4E8">      }</span></span>
<span class="line"><span style="color:#E1E4E8">    }</span></span>
<span class="line"><span style="color:#E1E4E8">  }</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<p>Cu <code>SMSTUNNEL_DEFAULT_COUNTRY_CODE</code> setat la <code>+40</code>, poți scrie numerele și în forma obișnuită, de exemplu 0721 123 456: cele fără <code>+</code> sau <code>00</code> sunt completate cu prefixul României. Pe Windows, dacă aplicația nu poate porni <code>npx</code>, folosește <code>"command": "cmd"</code> și <code>"args": ["/c", "npx", "-y", "@narcisbodea/smstunnel-mcp"]</code>.</p>
<h3 id="claude-code">Claude Code</h3>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">claude</span><span style="color:#9ECBFF"> mcp</span><span style="color:#9ECBFF"> add</span><span style="color:#79B8FF"> --env</span><span style="color:#9ECBFF"> SMSTUNNEL_API_KEY=sk_live_cheia_ta</span><span style="color:#79B8FF"> --transport</span><span style="color:#9ECBFF"> stdio</span><span style="color:#79B8FF"> --scope</span><span style="color:#9ECBFF"> user</span><span style="color:#9ECBFF"> smstunnel</span><span style="color:#79B8FF"> --</span><span style="color:#9ECBFF"> npx</span><span style="color:#79B8FF"> -y</span><span style="color:#9ECBFF"> @narcisbodea/smstunnel-mcp</span></span></code></pre>
<p>Rulează <code>/mcp</code> în Claude Code ca să verifici că <code>smstunnel</code> e conectat.</p>
<h3 id="vs-code">VS Code</h3>
<p>Cu fișierul <code>.vscode/mcp.json</code> de mai jos, VS Code îți cere cheia o singură dată și n-o scrie în fișier:</p>
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="json"><code><span class="line"><span style="color:#E1E4E8">{</span></span>
<span class="line"><span style="color:#79B8FF">  "inputs"</span><span style="color:#E1E4E8">: [</span></span>
<span class="line"><span style="color:#E1E4E8">    { </span><span style="color:#79B8FF">"type"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"promptString"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"id"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"smstunnel-api-key"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"description"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"SMSTunnel API key"</span><span style="color:#E1E4E8">, </span><span style="color:#79B8FF">"password"</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">true</span><span style="color:#E1E4E8"> }</span></span>
<span class="line"><span style="color:#E1E4E8">  ],</span></span>
<span class="line"><span style="color:#79B8FF">  "servers"</span><span style="color:#E1E4E8">: {</span></span>
<span class="line"><span style="color:#79B8FF">    "smstunnel"</span><span style="color:#E1E4E8">: {</span></span>
<span class="line"><span style="color:#79B8FF">      "type"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"stdio"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">      "command"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"npx"</span><span style="color:#E1E4E8">,</span></span>
<span class="line"><span style="color:#79B8FF">      "args"</span><span style="color:#E1E4E8">: [</span><span style="color:#9ECBFF">"-y"</span><span style="color:#E1E4E8">, </span><span style="color:#9ECBFF">"@narcisbodea/smstunnel-mcp"</span><span style="color:#E1E4E8">],</span></span>
<span class="line"><span style="color:#79B8FF">      "env"</span><span style="color:#E1E4E8">: { </span><span style="color:#79B8FF">"SMSTUNNEL_API_KEY"</span><span style="color:#E1E4E8">: </span><span style="color:#9ECBFF">"${input:smstunnel-api-key}"</span><span style="color:#E1E4E8"> }</span></span>
<span class="line"><span style="color:#E1E4E8">    }</span></span>
<span class="line"><span style="color:#E1E4E8">  }</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
<h3 id="setările">Setările</h3>
<p>Toate setările stau în <code>env</code>-ul serverului:</p>

























<table><thead><tr><th>Setare</th><th>Ce face</th></tr></thead><tbody><tr><td><code>SMSTUNNEL_API_KEY</code></td><td>Obligatorie: cheia din <strong>Apps → Add an app</strong>.</td></tr><tr><td><code>SMSTUNNEL_DEVICE_ID</code></td><td>Opțională: telefonul care trimite când asistentul nu numește altul. ID-ul lui e la <strong>Phones</strong>.</td></tr><tr><td><code>SMSTUNNEL_DEFAULT_COUNTRY_CODE</code></td><td>Opțională, de exemplu <code>+40</code>: completează numerele scrise fără <code>+</code> sau <code>00</code>.</td></tr><tr><td><code>SMSTUNNEL_CONFIRM_EACH_TEXT</code></td><td>Implicit <code>true</code>: aplicațiile compatibile, cum e Claude Code, te întreabă înainte de fiecare mesaj. Pune <code>false</code> doar pentru rulări nesupravegheate, de exemplu un script care îți scrie ție.</td></tr></tbody></table>
<h2 id="pasul-3-încearcă">Pasul 3: încearcă</h2>
<p>Începe cu propriul număr, apoi încearcă cereri ca acestea:</p>
<ul>
<li>„Trimite-i lui Andrei la +40721123456: coletul e la poarta din spate.”</li>
<li>„Mesajul meu de adineauri a plecat?”</li>
<li>„Care dintre telefoanele mele sunt conectate acum?”</li>
<li>„Câte mesaje mai pot trimite azi?”</li>
<li>„Mi-a răspuns cineva de azi-dimineață?” (dacă ai permis citirea mesajelor primite)</li>
</ul>
<p>Înainte să trimită, asistentul îți arată numărul și textul exact și așteaptă să confirmi. După ce mesajul a fost predat contului tău, primește un ID și îți poate spune mai târziu dacă mesajul a plecat.</p>
<h2 id="mementouri-din-calendar-la-cerere">Mementouri din calendar, la cerere</h2>
<p>Dacă ai un cabinet, un salon sau un service și îți ții programările în calendar, pune SMSTunnel lângă calendar în aceeași aplicație AI. În Claude, deschide <strong>Customize → Connectors</strong> și conectează <strong>Google Calendar</strong> sau <strong>Microsoft 365</strong>, pentru un calendar Outlook de pe un cont de serviciu sau de școală. Apoi cere:</p>
<blockquote>
<p>„Uită-te în calendar la programările de mâine și trimite-i fiecărui client un memento cu ora. Arată-mi întâi lista.”</p>
</blockquote>
<p>Asistentul citește evenimentele, găsește numărul fiecărui client și îți arată toată lista: persoana, numărul și textul exact. După ce confirmi, trimite câte un mesaj fiecărei persoane și nu retrimite niciodată din proprie inițiativă un mesaj eșuat. Scrie numărul clientului în eveniment, cu <code>+</code> și prefixul țării (de exemplu +40), ca asistentul să-l găsească. Unele evenimente pot veni din invitațiile altor oameni, așa că citește lista înainte s-o aprobi.</p>
<p>Asistentul lucrează doar când îi ceri; nu rulează după un program. Pentru mementouri care pleacă singure, folosește <a href="https://smstunnel.io/integrations/google-calendar/">șablonul gratuit pentru Google Calendar</a> (Google Calendar nu mai trimite notificări prin SMS din ianuarie 2019) sau <a href="https://smstunnel.io/integrations/outlook-calendar/">ghidul pentru Outlook Calendar</a>, cu n8n, Power Automate, Zapier sau Make.</p>
<h2 id="regulile-serverului">Regulile serverului</h2>
<p>Un asistent care poate trimite mesaje are nevoie de limite clare. Acestea fac parte din server, nu sunt doar sfaturi:</p>
<ul>
<li><strong>Aprobi fiecare mesaj.</strong> Uneltele îi cer asistentului să-ți arate numărul și textul, sau toată lista când sunt mai multe persoane, și să aștepte confirmarea ta. Cu <code>SMSTUNNEL_CONFIRM_EACH_TEXT</code> lăsat pornit, Claude Code întreabă înainte de fiecare mesaj, chiar și în modurile în care altfel rulează uneltele singur.</li>
<li><strong>Un singur destinatar pe mesaj.</strong> Nu există o unealtă pentru mai multe numere deodată: asistentul trimite câte un mesaj fiecărei persoane, cel mult aproximativ 30 pe minut.</li>
<li><strong>Fără retrimiteri automate.</strong> Un mesaj eșuat sau neconfirmat poate să fi plecat totuși, așa că asistentul te întreabă în loc să-l trimită din nou.</li>
<li><strong>Mesajele primite sunt doar informații.</strong> Oricine îți poate scrie pe telefon, așa că asistentul tratează cuvintele lor ca date, niciodată ca instrucțiuni. Pornește citirea lor doar dacă ai nevoie de ea.</li>
<li><strong>Cheia rămâne în setările aplicației AI,</strong> niciodată într-o conversație, într-un depozit de cod sau într-o pagină web. Ștergi aplicația din <strong>Apps</strong>, în dashboard, și accesul se oprește.</li>
<li><strong>Doar mesaje pe care oamenii le așteaptă:</strong> răspunsuri, mementouri, alerte pentru tine, coduri de autentificare.</li>
</ul>
<p>Încă un lucru bun de știut: mesajele trimise prin serverul MCP rămân pe pagina <strong>Messages</strong> din dashboard, ca mesajele din celelalte aplicații ale tale. Serverul nu le criptează end-to-end; dacă ai nevoie de asta pentru mesajele din software-ul tău, vezi <a href="https://smstunnel.io/ro/blog/sms-criptat-end-to-end/">cum funcționează criptarea end-to-end</a>.</p>
<h2 id="și-chatgpt">Și ChatGPT?</h2>
<p>ChatGPT se conectează doar la servere MCP de pe internet, prin HTTPS, așa că nu poate porni acest server pe computerul tău. Folosește Claude Desktop, Claude Code, Cursor sau VS Code. Dacă vrei să scrii tu codul, aceleași operații sunt la un apel HTTPS distanță, în <a href="https://smstunnel.io/api-reference/">referința API</a>.</p>
<h2 id="întrebări-frecvente">Întrebări frecvente</h2>
<h3 id="cât-costă">Cât costă?</h3>
<p>Serverul MCP e gratuit, cu cod sursă deschis. Mesajele intră în planul tău SMSTunnel, ca mesajele din orice altă aplicație a ta. Planul Gratuit include 25 de mesaje pe zi și 500 pe lună, trimise exact cum le-ai scris, plus până la 25 de mesaje în plus pe zi care se încheie cu un scurt rând „free by smstunnel.io”, și 50 de coduri de autentificare pe zi. Planurile plătite încep de la 9 $ pe lună, fără taxe: vezi <a href="https://smstunnel.io/ro/pricing/">Prețuri</a>. Pentru SMS-uri se aplică tarifele sau mesajele incluse în abonamentul tău de telefonie mobilă, pentru că trimite SIM-ul tău.</p>
<h3 id="poate-asistentul-să-scrie-mai-multor-oameni">Poate asistentul să scrie mai multor oameni?</h3>
<p>Da, câte unuia pe rând: îți arată întâi pe toți cei cărora le va scrie, iar după ce confirmi trimite câte un mesaj fiecărui număr. Nu există un apel care trimite același mesaj la mai multe numere deodată.</p>
<h3 id="ce-telefon-trimite-mesajul">Ce telefon trimite mesajul?</h3>
<p>Oricare dintre telefoanele legate de contul tău. Pune în <code>SMSTUNNEL_DEVICE_ID</code> ID-ul telefonului pe care îl vrei implicit sau cere-i asistentului să folosească un anumit telefon: îți poate lista telefoanele, cu ID-urile lor, și îl folosește pe cel pe care îl numești.</p>
<h3 id="pot-să-l-opresc">Pot să-l opresc?</h3>
<p>Da, oricând. Ștergi aplicația din <strong>Apps</strong>, în dashboard, iar cheia ei nu mai poate trimite mesaje. Poți scoate și serverul din setările aplicației AI.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
