# Asterisk x Bookli

Questo manuale descrive i passaggi necessari per collegare un centralino Asterisk a Bookli, creando un interno SIP dedicato.

## 1. Prerequisiti

* Un centralino Asterisk attivo e funzionante.
* Accesso ai file di configurazione `sip.conf` e `extensions.conf` (o accesso all'interfaccia grafica come FreePBX/Issabel).
* La possibilità di creare un interno SIP dedicato a Bookli.
* Accesso al pannello di configurazione di Bookli per inserire le credenziali SIP.

## 2. Creazione dell’interno su Asterisk

Aprire il file `sip.conf` e aggiungere un nuovo interno. In questo esempio useremo l'interno **200**.

```ini
type=friend
username=200
secret=demo200          ; password che decidi tu
host=dynamic
context=from-internal
disallow=all
allow=ulaw
nat=yes
```

{% hint style="info" %}
Dettagli dei parametri:

* username → numero interno (es. 200)
* secret → password (es. demo200)
* context → il contesto del dialplan che gestirà le chiamate provenienti da Bookli.
  {% endhint %}

## 3. Configurazione Dialplan (`extensions.conf`)

Esempio base per gestire le chiamate in entrata e in uscita.

```ini
[from-internal]
exten => _X.,1,NoOp(Chiamata uscente da Bookli)
 same => n,Dial(SIP/${EXTEN},30)
 same => n,Hangup()

[from-external]
exten => 200,1,NoOp(Chiamata entrante verso Bookli)
 same => n,Dial(SIP/200,30)
 same => n,Hangup()
```

* Le chiamate **in ingresso** dirette all'interno `200` arriveranno a Bookli.
* Le chiamate **generate da Bookli** verranno gestite dal contesto `from-internal`.

## 4. Configurazione lato Bookli

Accedi al tuo pannello Bookli e vai su **Impostazioni → Carrier SIP → Nuovo Carrier SIP**. Compila i campi con i dati dell'interno appena creato.

* **Nome Carrier:** Asterisk Interno 200
* **Richiede Registrazione:** ✅ Selezionato
* **Username Registrazione:** `200`
* **Password Registrazione:** `demo200`
* **SIP Realm:** IP o dominio del tuo server Asterisk (es. `pbx.miodominio.com`)
* **From User:** `200`
* **Numero di Telefono:** `200`

#### Gateway

* **Indirizzo IP:** IP pubblico del server Asterisk (es. `203.0.113.10`)
* **Porta:** `5060`
* **Netmask:** `32`
* **Chiamate in entrata:** ✅ Selezionato
* **Chiamate in uscita:** ✅ Selezionato

## 5. Test

{% stepper %}
{% step %}

### Ricarica la configurazione SIP

Esegui dalla console di Asterisk:

{% code title="Comando" %}

```bash
asterisk -rx "sip reload"
```

{% endcode %}
{% endstep %}

{% step %}

### Controlla lo stato del peer

Esegui:

{% code title="Comando" %}

```bash
asterisk -rx "sip show peers"
```

{% endcode %}

L'interno `200` deve risultare con stato **OK**, a significare che Bookli si è registrato correttamente.
{% endstep %}

{% step %}

### Esegui le chiamate di prova

* Fai una chiamata da Bookli verso un altro interno del centralino: l'interno dovrebbe squillare.
* Fai una chiamata da un altro interno verso il `200`: Bookli dovrebbe rispondere.
  {% endstep %}
  {% endstepper %}

## 6. Troubleshooting

<details>

<summary><strong>Status UNREACHABLE/UNKNOWN</strong></summary>

Bookli non riesce a registrarsi. Controlla che l'IP del server Asterisk sia corretto e che non ci siano firewall a bloccare la comunicazione sulla porta 5060/UDP.

</details>

<details>

<summary><strong>Errore 403 Forbidden</strong></summary>

Username o password errati. Verifica le credenziali inserite su Bookli e nel file `sip.conf`.

</details>

<details>

<summary><strong>Assenza di Audio (No Audio)</strong></summary>

Problema legato al NAT. Assicurati che le porte RTP (solitamente UDP 10000–20000) siano aperte e correttamente forwardate sul firewall.

</details>

<details>

<summary><strong>Le chiamate cadono immediatamente</strong></summary>

Il `context` specificato per l'interno in `sip.conf` potrebbe essere errato o non esistere nel `extensions.conf`. Controlla la configurazione del dialplan.

</details>
