Als je hebt gemerkt dat je SMS-kosten de pan uit rijzen omdat je systeem door Unicode meerdere SMS'jes verstuurt, is de vraag hoe je dit kunt stoppen waarschijnlijk erg urgent. Een enkele onbedoelde 'smart quote' of emoji kan een standaard, goedkoop sms-bericht direct veranderen in drie afzonderlijk gefactureerde segmenten, wat een flinke hap uit je marketing- en operationele budget neemt.
Stap 1: Begrijp waarom Unicode meerdere SMS-segmenten afdwingt
Om te voorkomen dat je SMS-gateway losse berichten opsplitst in meerdere gefactureerde segmenten, moet je eerst de onderliggende technische werking van SMS-codering begrijpen. Traditionele telecommunicatienetwerken gebruiken twee belangrijke coderingsstandaarden voor sms-berichten: GSM-7 en UCS-2 (Unicode).
Onder de standaard GSM-7-codering kan een enkel SMS-segment maximaal 160 tekens bevatten. Deze tekenset bevat standaard Latijnse letters (A-Z, a-z), cijfers (0-9) en een paar veelvoorkomende leestekens. Zodra je bericht echter ook maar één teken buiten deze basisset bevat — zoals een gekruld aanhalingsteken (’), een letter met een accent (á, é, ö) of een emoji — schakelt de codering van het hele bericht automatisch over naar UCS-2.
Wanneer je bericht overschakelt naar de UCS-2 Unicode-codering, daalt de limiet per segment van 160 tekens naar slechts 70 tekens. Als je bericht 140 tekens lang is, past het gemakkelijk in één GSM-7-segment. Maar in UCS-2 hebben diezelfde 140 tekens twee afzonderlijke segmenten nodig. Traditionele API-providers zoals Twilio, Vonage en MessageBird factureren per segment, wat betekent dat je kosten voor een enkel bericht direct verdubbelen of verdrievoudigen.
| Coderingsstandaard | Max. tekens (1 segment) | Max. tekens (Multi-segment) | Veelvoorkomende trigger-tekens |
|---|---|---|---|
| GSM-7 | 160 tekens | 153 tekens per segment | Standaard Engelse letters, cijfers, basisleestekens |
| UCS-2 (Unicode) | 70 tekens | 67 tekens per segment | Emoji's, smart quotes (“, ”), niet-Latijnse alfabetten, accenten (é, ñ) |
Dit gedrag verklaart waarom je applicatie door Unicode meerdere SMS'jes verstuurt. Om dit op te lossen, moet je ofwel je invoergegevens strikt opschonen (sanitizen), of overstappen naar een goedkope sms-api die je niet straft voor het verzenden van langere, moderne sms-berichten.
Stap 2: Unicode-tekens verwijderen of vervangen in je code
De meest directe programmatische manier om Unicode-splitsingen te stoppen, is door de inhoud van je bericht op te schonen voordat je deze naar je SMS-gateway verzendt. Je kunt in je backend een hulpfunctie schrijven om niet-GSM-7-tekens te verwijderen of te vervangen door hun dichtstbijzijnde GSM-7-equivalenten.
Hieronder zie je hoe je dit in verschillende programmeertalen kunt implementeren met behulp van eenvoudige regex-patronen en regels voor stringvervanging.
Python-implementatie
In Python kun je de module unicodedata gebruiken om je strings te normaliseren, accenten te verwijderen en smart quotes terug te zetten naar standaard rechte aanhalingstekens:
import unicodedata
import re
def clean_for_gsm7(text):
# Replace common smart quotes and dashes
replacements = {
u'\u201c': '"', u'\u201d': '"',
u'\u2018': "'", u'\u2019': "'",
u'\u2013': '-', u'\u2014': '-'
}
for unicode_char, gsm_char in replacements.items():
text = text.replace(unicode_char, gsm_char)
# Normalize and strip accents
normalized = unicodedata.normalize('NFKD', text)
ascii_text = normalized.encode('ascii', 'ignore').decode('utf-8')
# Remove any remaining non-GSM-7 characters
gsm7_regex = re.compile(r'[^
a-zA-Z0-9^{}\\[~]|€$@!"#%&'()*+,-./:;<=>?_]')
cleaned_text = gsm7_regex.sub('', ascii_text)
return cleaned_text
message = "Hello! Your appointment is scheduled for tomorrow at 3 PM. See you there! 😊"
print(clean_for_gsm7(message))
# Output: "Hello! Your appointment is scheduled for tomorrow at 3 PM. See you there! "
Node.js (JavaScript) implementatie
Voor JavaScript-ontwikkelaars kun je een vergelijkbare aanpak gebruiken met reguliere expressies om alle tekens te verwijderen die niet aan de GSM-7-standaard voldoen:
function sanitizeToGSM7(text) {
const smartReplacements = {
'[\u201c\u201d]': '"',
'[\u2018\u2019]': "'",
'\u2013': '-',
'\u2014': '-'
};
let cleaned = text;
for (const [pattern, replacement] of Object.entries(smartReplacements)) {
cleaned = cleaned.replace(new RegExp(pattern, 'g'), replacement);
}
// Remove accents
cleaned = cleaned.normalize('NFD').replace(/[̀-ͯ]/g, '');
// Keep only GSM-7 compatible characters
const gsm7Pattern = /[^
a-zA-Z0-9^{}\\[~]|€$@!"#%&'()*+,-.\/:;<=>?_]/g;
return cleaned.replace(gsm7Pattern, '');
}
const rawMessage = "Your order is ready for pickup! 🚗";
console.log(sanitizeToGSM7(rawMessage));
// Output: "Your order is ready for pickup! "
Stap 3: Converteer smart quotes en accenten naar GSM-7-equivalenten
Vaak sluipen Unicode-tekens in je berichten via knippen en plakken vanuit tekstverwerkers zoals Microsoft Word of Google Docs. Deze verwerkers zetten standaard rechte aanhalingstekens (' en ") automatisch om in gekrulde 'smart quotes' (‘, ’, “, ”).
Om te voorkomen dat je systeem door deze kleine wijzigingen meerdere SMS-berichten verstuurt, kun je een tabel voor tekenmapping opzetten. Hiermee behoud je de leesbaarheid van je tekst zonder de UCS-2-limiet van 70 tekens te overschrijden.
- Converteer ‘ en ’ naar het standaard weglatingsteken '
- Converteer “ en ” naar het standaard aanhalingsteken "
- Converteer em-streepjes (—) en en-streepjes (―) naar standaard koppeltekens (-)
- Converteer tekens met accenten zoals é, á, í naar hun varianten zonder accent: e, a, i
Door deze tekens expliciet te mappen, behoud je de professionele uitstraling van je berichten terwijl je strikt binnen de limiet van één segment blijft. Dit is vooral handig voor lokale dienstverleners zoals tandartspraktijken, reparatiewerkplaatsen en taalscholen die de operationele kosten laag moeten houden bij het verzenden van automatische afspraakbevestigingen.
Stap 4: Stap over op een SMS-gateway met flat-rate segmentfacturering
Hoewel het verwijderen van Unicode-tekens een functionele workaround is, dwingt het je om concessies te doen aan de tone of voice van je merk. Klanten verwachten natuurlijke communicatie, wat vaak emoji's, lokale accenten en professionele opmaak omvat. Het beperken van je klantcommunicatie tot basis-ASCII-tekens, puur om hoge telecomrekeningen te vermijden, is niet langer nodig.
Traditionele cloud-aggregators zoals Twilio, Plivo en MessageBird dwingen een strikte facturering per segment af omdat ze netwerkkosten moeten betalen voor elk datapakket. Bovendien vereist het gebruik van deze verouderde platforms het doorlopen van complexe A2P SMS-registratie, 10DLC-carriergoedkeuringen en maandelijks terugkerende kosten.
Een steeds populairder alternatief is het gebruik van een op Android gebaseerde SMS-gateway zoals MySMSGate. MySMSGate verandert je eigen Android-telefoons en simkaarten in een volledig functioneel SMS-verzendapparaat. Omdat je berichten rechtstreeks via de simkaart van je telefoon worden verzonden (die meestal onbeperkte of sterk afgeprijsde lokale sms-bundels bevat), omzeil je de traditionele facturering per segment volledig.
MySMSGate brengt een vast tarief van $0.02 per verzonden SMS in rekening, ongeacht of je bericht Unicode-tekens of emoji's bevat, of over meerdere segmenten is verdeeld. Er zijn geen maandelijkse abonnementen, geen contracten en geen vertragingen door carrierregistratie. Als een bericht niet kan worden afgeleverd, wordt je saldo automatisch teruggestort.
Als je op zoek bent naar de beste SMS API-alternatieven voor bulk-SMS-vergelijking, betrouwbaarheid en bezorgingspercentages, lost de overstap naar een Android SMS-gateway het hele Unicode-facturatieprobleem direct bij de bron op.
Stap 5: Beheer van sms-berichten vanaf meerdere telefoonnummers instellen
Voor lokale servicebedrijven die op meerdere locaties actief zijn, kan het beheren van de berichteninfrastructuur snel ingewikkeld worden. Als je meerdere vestigingen beheert — zoals vijf tandartspraktijken of drie autoreparatiebedrijven — heb je een systeem nodig dat het beheer van sms-berichten vanaf meerdere telefoonnummers ondersteunt vanuit één gecentraliseerde interface.
Met MySMSGate kun je een onbeperkt aantal Android-apparaten koppelen aan één accountdashboard. Hiermee beheer je naadloos meerdere nummers:
- Maak je account aan: Registreer je op MySMSGate om je API-key op te halen.
- Installeer de Android-app: Download de MySMSGate companion-app op je Android-apparaten.
- Koppel via QR-code: Scan de QR-code op je webdashboard met de camera van elke telefoon. Dit koppelt de apparaten direct aan je centrale account zonder dat je ingewikkelde API-keys hoeft in te voeren.
- Beheer Dual SIMs: Als je telefoons Dual SIM ondersteunen, kun je rechtstreeks vanuit je dashboard of API-call kiezen via welk SIM-slot je je berichten wilt verzenden.
Dankzij deze structuur met meerdere apparaten kun je uitgaande meldingen routeren via lokale nummers die je klanten al herkennen, wat de open- en responspercentages aanzienlijk verbetert. Alle binnenkomende antwoorden worden automatisch doorgestuurd naar je online Web Conversations-dashboard, waardoor je direct vanaf je computer in realtime tweerichtingsgesprekken kunt voeren.
Stap 6: Verzend je eerste Unicode-veilige SMS via de REST API
Als je een indie-developer, freelancer of technische ondernemer bent, is het integreren van MySMSGate in je software ontzettend eenvoudig. Het platform biedt een overzichtelijke REST API met één endpoint waarmee je met minimale configuratie SMS-meldingen kunt triggeren.
Hier is een voorbeeld van hoe je een POST-verzoek doet om een SMS te verzenden met behulp van cURL. Let op dat je emoji's en speciale Unicode-tekens kunt toegen zonder dat je je zorgen hoeft te maken over oplopende segmentkosten:
curl -X POST https://mysmsgate.net/api/v1/send
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{
"to": "+1234567890",
"message": "Your vehicle is ready for pickup! 🚗 Please reply to this message if you have any questions.",
"device_id": "your_device_id",
"sim_slot": 1
}'Voor meer gedetailleerde implementaties in andere talen kun je de officiële MySMSGate API-documentatie raadplegen. Deze bevat kant-en-klare codefragmenten voor Python, Node.js, PHP, Go en Ruby, evenals vooraf gebouwde integraties voor automatiseringsplatforms zoals Zapier, Make.com en n8n.
Veelgestelde vragen
Hier vind je antwoorden op de meest gestelde vragen over Unicode SMS-splitsing, tekenlimieten en tariefstructuren.
Waarom zorgt één emoji ervoor dat mijn SMS als meerdere berichten wordt verzonden?
Standaard sms-berichten gebruiken de GSM-7-codering, waarmee maximaal 160 tekens per segment mogelijk zijn. Emoji's maken geen deel uit van de GSM-7-tekenset. Wanneer je een emoji toevoegt, moet de provider het hele bericht overschakelen naar UCS-2 (Unicode)-codering, waardoor de segmentlimiet daalt naar 70 tekens. Als je bericht langer is dan 70 tekens, wordt het opgesplitst in meerdere segmenten en brengen traditionele API's kosten in rekening voor elk segment.
Hoe kan ik controleren of mijn tekst Unicode bevat voordat ik deze verzend?
Je kunt online SMS-lengtecalculators gebruiken of een eenvoudige regex-zoekopdracht in je code uitvoeren om niet-GSM-7-tekens te detecteren. Als alternatief kun je validatiescripts schrijven die niet-GSM-7-tekens markeren of verwijderen uit je database voordat ze naar een uitgaande SMS-wachtrij worden gestuurd.
Brengt MySMSGate extra kosten in rekening voor Unicode- of multi-segmentberichten?
Nee. In tegenstelling tot traditionele API's zoals Twilio of Vonage die per segment van 160 of 70 tekens factureren, brengt MySMSGate een vast tarief van $0.02 per verzonden bericht in rekening. Omdat het bericht rechtstreeks via de simkaart van je Android-telefoon wordt gerouteerd, betaal je niet per segment. Hierdoor kun je emoji's en lange berichten verzenden zonder je zorgen te maken over verborgen kosten.
Heb ik carrier- of 10DLC-registratie nodig om een Android SMS-gateway te gebruiken?
Nee. Omdat MySMSGate berichten routeert via je eigen fysieke Android-telefoon en simkaart, worden je berichten verzonden als standaard person-to-person (P2P) verkeer. Dit betekent dat je geen complexe, dure en tijdrovende A2P 10DLC-registratie hoeft te doorlopen of hoeft te wachten op carriergoedkeuringen.
Comments (0)
Be the first to comment!