Testowanie webhooka Twilio lokalnie
Zwalidowanie handlera Twilio (SMS lub połączenie przychodzące) bez wysyłania prawdziwych, płatnych wiadomości — to możliwe. Wygeneruj żądanie Twilio podpisane (X-Twilio-Signature, HMAC-SHA1) w formacie form-urlencoded, edytuj parametry (From, To, Body) i wyślij je do swojego lokalnego serwera.
Zweryfikuj podpis po stronie serwera
const twilio = require('twilio');
const valid = twilio.validateRequest(
process.env.TWILIO_AUTH_TOKEN,
req.headers['x-twilio-signature'],
fullUrl, // musi odpowiadać URL docelowemu użytemu powyżej
req.body // parametry POST
);Aby odebrać prawdziwy webhook Twilio na swojej maszynie, skieruj numer na swój tunel Relay.
Signature coming back invalid? This page signs. The Twilio signature validator does the opposite: paste the signature Twilio actually sent and it tells you which URL variant matches — which is to say, which line of your code is lying.
Najczęstsze pytania
Jak przetestować przychodzący SMS Twilio lokalnie?
Wybierz event 'Incoming SMS', podaj swój Auth Token i dokładny URL swojego handlera (podpis Twilio zależy od URL), a następnie wyślij. Header X-Twilio-Signature jest obliczany w HMAC-SHA1 na URL + posortowanych parametrach, tak jak robi to Twilio.
Dlaczego muszę podać URL docelowy?
Podpis Twilio zawiera pełny URL webhooka w obliczeniu HMAC. Bez właściwego URL podpis nie będzie prawidłowy po stronie serwera. Dlatego pole URL docelowy jest obowiązkowe dla Twilio.
Czy format jest na pewno form-urlencoded?
Tak. W przeciwieństwie do Stripe czy GitHub (JSON), Twilio wysyła application/x-www-form-urlencoded. Generator tworzy właściwy Content-Type i poprawnie koduje parametry.
Czy Twilio jest w planie darmowym?
Twilio należy do presetów premium, dostępnych z planem Pro za 14,90 €/miesiąc.