Problema
Vuoi utilizzare “originate” dal dialplan di Asterisk.

Soluzione
Puoi utilizzare l’applicazione “originate” in due diverse modalità.
Per connettere una chiamata ad una applicazione:
exten => s,1,Originate(SIP/myphone,app,Playback,all-your-base)
Per connettere una chiamata al dialplan di Asterisk:
exten => s,1,Originate(SIP/myphone,exten,default,s,1)

L’applicazione Originate() richiede fino a 5 argomenti. I primi due sono:

Tech/data
La tecnologia del canale (Es. SIP, PJSIP, IAX,…) e … a cui verrà originata la chiamata.
La sintassi è la stessa utilizzata dall’applicazione Dial().

originate mode
Esistono due modalità di origine: app ed exten.
app viene utilizzata per connettere il canale originato ad una applicazione di Asterisk.
exten viene utilizzata per connettere il canale originato al dialplan di Asterisk.

Il resto degli argomenti dipende dalla modalità di origine utilizzata.
Nel caso di utilizzo della modalità app, gli argomenti sono:

application: l’applicazione da eseguire alla risposta sul canale generato.
application arguments: eventuali altri argomenti richiesti dall’applicazione.

Nel caso di utilizzo della modalità exten, degli argomenti sono:
context: il contesto del dialplan da eseguire alla risposta sul canale generato (argomento obbligatorio).
extension: esternsione da eseguire all’interno del context precedente. Se questo argomento non è specificato, verrà utilizzata l’estensione “s”.
priority: la priorità dell’estensione da eseguire. Se non è specificato l’esecuzione inizierà con priorità 1.

Ci sono molti casi in cui potresti voler originare una chiamata dal dialplan.
Vediamo un esempio di utilizzo per il paging:

[globals]
PHONES_TO_PAGE=SIP/phoneA&SIP/phoneB&SIP/phoneC

[paging]
exten => 500,1,Answer()
same => n,Record(/tmp/page.wav)
same => n,Originate(Local/pageplayback@paging,exten,paging,page,1)
same => n,Hangup()

exten => page,1,Answer()
;
; SIPAddHeader aggiunge nell’header sip una intestazione che consentirà di far rispondere in automatico i telefoni Polycom
;
same => n,SIPAddHeader(Alert-Info: Ring Answer)
same => n,Page(${PHONES_TO_PAGE})
same => n,Hangup()

exten => pageplayback,1,Answer()
same => Playback(/tmp/page.wav)

In questo esempio componendo il 500 si avvia un processo di paging.
Con l’applicazione Record si registra un file audio (ricordiamo che l’applicazione Record prevede la digitazione di # per terminare e salvare il file su disco) e subito dopo viene eseguita l’applicazione Originate che, tramite un canale Local, raggiunge l’estensione page e da li esegue l’applicazione Page.


Prima di eseguire l’applicazione Page(), con l’applicazione SIPAddHeader() si imposta un’intestazione SIP che consentirà di far rispondere in automatico i telefoni chiamati (questa intestazione funziona per i telefoni Polycom).