Passa al contenuto principale

SMS in Ingresso

Noleggia un numero di telefono dedicato e ricevi tutti gli SMS in ingresso in tempo reale. Agile Telecom ospita la SIM e inoltra i messaggi a te via email o webhook — perfetto per linee di supporto clienti, promemoria appuntamenti o risposte automatiche.

Metodi di Consegna

Scegli come vuoi ricevere i messaggi:

Consegna Email

I messaggi arrivano nella tua posta in arrivo automaticamente da smsin@agiletelecom.com con l'oggetto "Agile Telecom -- SMS ricevuto".

CampoFormatoEsempio
DaNumero di telefono del mittente+393301234567
AIl tuo numero SIM noleggiato+393331234333
Data/OraYYYYMMDDHHMMSS20260408143052
CorpoTesto SMSNews ON

La posta elettronica è ideale per messaggi a basso volume o integrazione con sistemi basati su email.

Webhook HTTP POST

I messaggi sono inviati al tuo webhook URL in tempo reale. Scegli questo per automazione, database ed elaborazione immediata.

Formato Richiesta POST

Il tuo webhook riceve un POST con questi parametri del form:

ParametroDescrizioneEsempio
originatorNumero di telefono del mittente+393301234567
destinationIl tuo numero SIM+393331234333
date_timeTimestamp di ricezione (YYYYMMDDHHMMSS)20260408143052
textCorpo del messaggio SMSNews ON

Risposta Obbligatoria

Il tuo server DEVE rispondere esattamente con:

+OK

Se non rispondi con +OK entro 30 secondi, Agile Telecom tratta la consegna come fallita e riprova dopo 15 minuti. Dopo 3 tentativi falliti, il messaggio è scartato. Mantieni il tuo webhook veloce — scarica l'elaborazione pesante su job in background.

Esempi di Implementazione Webhook

from flask import Flask, request

app = Flask(__name__)

@app.route('/webhook/sms', methods=['POST'])
def receive_sms():
# Estrai parametri
originator = request.form.get('originator')
destination = request.form.get('destination')
date_time = request.form.get('date_time')
text = request.form.get('text')

# Elabora il messaggio (async in background)
print(f"SMS from {originator}: {text}")

# Salva nel database
save_to_database(originator, destination, date_time, text)

# CRITICO: rispondi con +OK immediatamente
return '+OK'

def save_to_database(originator, destination, date_time, text):
# La tua logica del database qui
pass

if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)

**Distribuisci con Gunicorn (produzione):**

```bash
pip install flask gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app

## Best Practice

**Rispondi Velocemente**
Restituisci `+OK` entro 1 secondo. Elabora il messaggio in una coda in background, non nel gestore webhook.

**Gestisci i Duplicati**
Agile Telecom potrebbe riprovare le consegne fallite. Memorizza un hash di originator + timestamp per rilevare i duplicati ed evitare di elaborare lo stesso messaggio due volte.

**Registra Tutto**
Mantieni un registro di tutti i messaggi ricevuti per debug e conformità. Includi timestamp, originator e tempo di risposta.

**Monitora i Fallimenti**
Se la consegna fallisce 3 volte, il messaggio è scartato. Monitora il tempo di attività del tuo webhook e avvisa su fallimenti consecutivi.

**Esempio: Rilevamento Duplicati (Python)**

```python
import hashlib
from datetime import datetime, timedelta

processed_messages = {} # In produzione, usa Redis o un database

@app.route('/webhook/sms', methods=['POST'])
def receive_sms():
originator = request.form.get('originator')
date_time = request.form.get('date_time')
text = request.form.get('text')

# Crea una chiave univoca
message_hash = hashlib.md5(f"{originator}{date_time}".encode()).hexdigest()

# Controlla il duplicato (stesso mittente negli ultimi 5 minuti)
if message_hash in processed_messages:
return '+OK' # Già elaborato

# Contrassegna come elaborato
processed_messages[message_hash] = datetime.now()

# Ripulitura voci vecchie
cutoff = datetime.now() - timedelta(minutes=5)
processed_messages = {k: v for k, v in processed_messages.items() if v > cutoff}

# Elabora nuovo messaggio
save_to_database(originator, request.form.get('destination'), date_time, text)

return '+OK'

Qual è il Prossimo?