# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bookli.ai/casi-duso/centralini-e-interni/asterisk-x-bookli.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
