Komunikační brána MenuBot
SMS běží přes SMSGate Android. Automatický WhatsApp může běžet přes Meta Cloud API; před jeho zapnutím je nutné potvrdit cenový režim. Hovory jsou odložené.
Další kroky – přesné pořadí
- Publikovat aktuální mbsmd.md a HTML index. Sdílený veřejný náhled z 29. 10. 2026 ještě ukazuje starý stav před migrací 001; po synchronizaci ověřit, že veřejná stránka odpovídá tomuto plánu.
- Synchronizovat všechny změněné SMS/WhatsApp soubory včetně lib/ a sdk/php/. Na serveru pouze ověřit jejich přítomnost a spustit PHP lint; nové workery zatím nespouštět.
- Read-only ověřit produkční migraci 001, chybějící migrační 002/částečné objekty, runtime práva SELECT/INSERT/UPDATE a to, že záloha je mimo VPS. Při nesouladu STOP.
- Teprve po úspěšném preflightu spustit jako root migrate-002.php jednou. Potom read-only ověřit pět nových tabulek, doplněné sloupce a migrační značku. Nic nemažat ani neopravovat naslepo.
- Připravit jednu vlastní HTTPS adresu, která přijímá příchozí SMS/WhatsApp, a náhodný podpisový klíč. Doplnit je do /etc/menubot-sms/config.php a ověřit webhook-worker.php --check. Bez adresy se zprávy uloží do fronty, ale neodejdou do systému.
- Další fyzický krok: vložit dedikovanou SIM, ručně ověřit skutečnou SMS a nainstalovat oficiální SMSGate Android. SMSGate zajišťuje SMS; WhatsApp přes Meta Cloud neposílá telefonní aplikace.
- Teprve po telefonu doplnit SMSGate Cloud údaje/signing key, ověřit worker.php --check a register-webhooks.php --check; registraci i živou SMS dělat až po kontrole výpisu a schválení.
- Před produkčním WhatsAppem rozhodnout, zda jsou přijatelné poplatky Meta. K 1. 10. 2026 je prvních 1 000 service odpovědí měsíčně na číslo zdarma; šablony a další provoz mohou být placené. Bezplatná WhatsApp Business App je ruční režim bez serverového webhooku.
- Jen pokud je Cloud API schválené: vytvořit Meta app/WABA, ověřit číslo, nastavit token, oprávnění, callback a případné šablony. App Review/business verification závisí na typu přístupu; zelená značka není nutná. Osobní číslo nemigrovat.
- Vytvořit klíč pro každý vlastní backend, používat pro něj jedinečné source_system a WhatsApp povolit jen po migraci 002. Klíče nikdy nedávat do telefonu ani prohlížeče.
- Bez odesílání spustit --check všech tří workerů, ověřit Meta/SMSGate webhooky a autorizovaný GET status. Normální běh workeru může zprávu odeslat nebo zavolat callback.
- Až po výslovném potvrzení poslat jednu testovací SMS a jednu WhatsApp zprávu na vlastní číslo a ověřit příchozí odpověď přes centrální webhook. Nikdy netestovat na zákazníkovi.
- Před ostrým provozem ověřit obnovu zálohy v oddělené DB, retenční pravidla a návrat. Timer/cron nastavovat až po potvrzení ceny, limitů a způsobu pozastavení pouze této služby.
Bezpečnostní hranice
- Přiložený plný instalátor je určen pro nový prázdný server; na tomto víceúčelovém VPS se nesmí spouštět.
- Neměnit existující weby, služby, databáze, globální API, firewall ani časovače kvůli SMS.
- Nepouštět aktualizace balíčků, restart ani změnu konfigurace jako součást auditu.
- worker.php, whatsapp-worker.php i webhook-worker.php jsou CLI-only; běžné spuštění může odeslat SMS/WhatsApp nebo zavolat nakonfigurovaný webhook. Pouze --check nic neposílá.
- WhatsApp worker má pilotní limit nejvýše pěti pokusů za klouzavou hodinu a jedno předání na spuštění; zvýšení limitu vyžaduje samostatné schválení.
- Limit pěti pokusů za hodinu není cenový limit Meta; šablony mohou být placené od prvního doručení a 1 000 bezplatných service odpovědí není neomezené.
- Po nejednoznačném timeoutu se SMS ani WhatsApp neposílá znovu naslepo; stav unknown čeká na webhook/ověření.
- SMSGate Android aplikace je pouze SMS brána; WhatsApp automatizaci přes neoficiální WhatsApp Web/WAHA/Baileys nepoužívat.
- Čísla a texty SMS jsou citlivé údaje; plán uchování a ochranu záloh vyřešit před ostrým provozem.
Aktuální stav
- Migrace 001 proběhla; vytvořilo se všech 6 aplikačních tabulek.
- Produkční SMS základ je potvrzen uživatelskými výstupy: migrace 001, šest aplikačních tabulek, PHP spojení pod www-data, runtime práva bez DELETE a neautorizovaný API GET s odpovědí 401. Autorizovaný klient ani živá SMS ověřené nejsou.
- Sdílený veřejný index stále zobrazuje starý checklist, který tvrdí, že API a migrace nejsou hotové. Aktuální lokální MBSMD/index proto na serveru nejsou potvrzené.
- Obousměrné SMS/WhatsApp API, source_system, korelace odpovědí, centrální webhook outbox, webhook worker a migrace 002 jsou dokončené a lokálně ověřené v pracovním adresáři; produkční synchronizace ani DB migrace 002 potvrzené nejsou.
- Lokálně prošel PHP lint všech SMS souborů, izolované podpisové/konfigurační/SDK testy a vykreslení indexu i manuálu. Produkční DB transakce, Meta/callback připojení a živé zprávy testované nejsou.
- SMSGate Cloud tajemství, registrace SMS webhooků, telefon/SIMGate Online a živá SMS zatím nejsou ověřené. Meta WABA/číslo/token/šablony/webhook a přijetí případných poplatků nejsou rozhodnuté.
- Uživatel hlásí databázovou zálohu; umístění mimo VPS ani obnova v oddělené DB nejsou potvrzené. Žádný timer/cron, PHP-FPM restart, firewall ani nový port se nenastavoval.
Audit a dosavadní ověření
- Ověřen aktivní víceúčelový server; kapacita při jednom měření nevypadala kriticky, ale měření není garance dlouhodobé rezervy.
- Syntaxe Nginx a PHP-FPM prošla. Read-only MariaDB preflight 2026-10-29 v 14:26 potvrdil bind na loopbacku, port 3306 a volný název schématu i aplikačního účtu.
- Dne 2026-10-29 ve 14:30 uživatel vytvořil nové prázdné SMS schéma; readback potvrdil utf8mb4 a utf8mb4_unicode_ci. Existující schémata ani služby nebyly měněny.
- Konfigurace je uložena mimo webroot a PHP test pod www-data vrátil PHP_DB_CONNECTION_OK. Dne 2026-10-29 v 19:46 uživatel odebral DELETE; read-only kontrola oprávnění potvrdila pouze INSERT, SELECT a UPDATE.
- Hetzner Firewall se zobrazuje jako Fully applied k cílovému serveru. Pravidla nebyla měněna; přesné síťové podrobnosti nejsou součástí veřejného přehledu.
- Byly zjištěny nevyřešené provozní odchylky. V rámci SMS se nemění.
- Uživatel hlásí vytvořenou databázovou zálohu; umístění mimo VPS ani ověřená obnova zatím nejsou doložené.
Hotovo – doložený stav
- Prošel jsem dodaný postup a oddělil SMS MVP od WhatsAppu, hovorů a AI.
- První SSH audit proběhl pouze pro čtení; syntaktické kontroly Nginx a PHP-FPM prošly.
- Firewall je potvrzen jako plně aplikovaný na server z SSH auditu.
- Read-only databázový preflight potvrdil volný název schématu i aplikačního účtu.
- Nové SMS schéma bylo vytvořeno a charset/collation ověřeny.
- Migrace 001 vytvořila všech šest aplikačních tabulek; bezpečný GET bez klíče potvrdil odpověď 401 a žádná SMS nebyla odeslána.
- Samostatný databázový účet a chráněný konfigurační soubor byly vytvořeny; PHP-FPM uživatel má k souboru čtecí přístup, DB spojení prošlo read-only testem a nadbytečné právo DELETE bylo odebráno.
- SMS serverové soubory, včetně lib/ a sdk/php/, byly dříve nalezeny na produkci; základní API bez klíče vracelo 401. To nepotvrzuje současný veřejný přehled ani autorizované odeslání.
- Obousměrný SMS/WhatsApp kód je vytvořen lokálně: Meta webhook, podpisy, source_system, 30denní korelace, centrální outbox s opakováním, API/SDK a tři CLI workery.
- Všechny lokální PHP soubory prošly php -l; izolované testy podpisů, callback konfigurace, SDK pojistek, bind parametrů a renderu indexu/manuálu prošly.
- Oficiální SMSGate dokumentace byla ověřena pro JWT scopes, odesílání a webhooky včetně podpisu i počtu částí zprávy.
- Zálohu databáze uživatel hlásí jako provedenou; žádná SMS ani změna produkčních služeb nebyla provedena.
- Připraven je lokální migrační skript 002, Meta Cloud HTTP klient, WhatsApp API fronta/stavy, klientská oprávnění, source_system a trvalé podepsané webhook doručení pro příchozí SMS/WhatsApp. Nic z toho zatím není potvrzené na produkci.
- Každý klient má mít WhatsApp vypnutý jako výchozí stav; API vyžaduje souhlas s neosobní referencí, 24hodinové okno pro volný text a schválenou šablonu mimo toto okno.
Aktualizováno
Aktualizace: 29. 10. 2026 – SMS migrace 001 je hotová; aktuální obousměrný kód je lokálně ověřený. Veřejný index a nová větev zatím čekají na bezpečnou synchronizaci a serverový preflight.