Newsgroup: it.tlc.telefonia.voip
Titolo: Asterisk: eseguire comando se connesso

Salve a tutti,
vorrei che ogni volta che ricevo o faccio una chiamata asterisk
"eseguisse" rispettivamente due script.
Attualmente, con due numeri skypho in entrata ed uno
voipcheap in uscita il mio "extensions.conf" è:
-------------------------------------------
[general]
static=yes
writeprotect=no
[globals]
[default]
; INTERNI
exten => _2.,1,Dial(SIP/${EXTEN},60,wW)
exten => _2.,2,Hangup 
; USCITA
exten => _X.,1,Dial(SIP/${EXTEN:0}@voipcheap,60,wW)
exten => _X.,2,Hangup 
; 1 SKYPHO
exten => 0424xx1,1,Dial(SIP/201,60,wW)
exten => 0424xx1,2,Hangup
; 2 SKYPHO
exten => 0424xx2,1,Dial(SIP/201,60,wW)
exten => 0424xx2,2,Hangup
-------------------------------------------
Ora, se i due script sono "/sbin/inizia_chiamata" e
"/sbin/fine_chiamata" e se non mi interessa siano eseguiti quando si
chiamano gli interni tra di loro il mio "extensions.conf" dovrebbe
risultare così:
-------------------------------------------
[general]
static=yes
writeprotect=no
[globals]
[default]
; INTERNI
exten => _2.,1,Dial(SIP/${EXTEN},60,wW)
exten => _2.,2,Hangup 
; USCITA
exten => _X.,1,System(/sbin/inizia_chiamata)
exten => _X.,2,Dial(SIP/${EXTEN:0}@voipcheap,60,wW)
exten => _X.,3,Hangup 
exten => _X.,4,System(/sbin/fine_chiamata)
; 1 SKYPHO
exten => 0424xx1,1,System(/sbin/inizia_chiamata)
exten => 0424xx1,2,Dial(SIP/201,60,wW)
exten => 0424xx1,3,Hangup
exten => 0424xx1,4,System(/sbin/fine_chiamata)
; 2 SKYPHO
exten => 0424xx2,1,System(/sbin/inizia_chiamata)
exten => 0424xx2,2,Dial(SIP/201,60,wW)
exten => 0424xx2,3,Hangup
exten => 0424xx2,4,System(/sbin/fine_chiamata)
-------------------------------------------
È esatto? Il mio dubbio è se "/sbin/fine_chiamata" viene eseguito se
vengo chiamato e non rispondo oppure se alzo la cornetta senza digitare
nulla e poi riattacco (anche se in questo caso non dovrebbe essere
usata proprio nessuna "exten").
È corretto il mio ragionamento oppure sbaglio qualcosa? :)
Grazie e ciao
InSa
-- 
++ Powered by Sid ++

 exten => _X.,4,System(/sbin/fine_chiamata)
Ho notato che "/sbin/fine_chiamata" non veniva mai eseguito.
La soluzione "sporca" è stato mettere uno script in cron da eseguire
ogni 5 minuti che controlla se ci sono chiamate. Lo script è questo:
--------------
#!/bin/bash
if test -z `asterisk -Rx "sip show channels" | grep 201`
then
    /sbin/fine_chiamata
fi
--------------
Se qualcuno ha qualche idea migliore io lo ascolto volentieri :)
Ciao
InSa
Ps: 201 è l'interno da controllare


Non sono sicuro al 100% di quello che ti sto per dire, devi
verificare.
Soluzione 1: chiami  System(/sbin/fine_chiamata) prima di fare
l'Hangup
Soluzione 2: se non sbaglio, Hangup dopo la sua esecuzione, ti manda
all'extension h,1
Li dovresti invocare System(/sbin/fine_chiamata).
Saluti.
Cristiano

 Li dovresti invocare System(/sbin/fine_chiamata).
Quindi, seguendo questa soluzione, basterebbe aggiungere 
exten => h,1,System(/sbin/fine_chiamata)
ed ogni volta che una _qualsiasi_ chiamata viene terminata viene
eseguito "/sbin/fine_chiamata"?
Ed il dialplan resta questo.
; USCITA
exten => _X.,1,System(/sbin/inizia_chiamata)
exten => _X.,2,Dial(SIP/${EXTEN:0}@voipcheap,60,wW)
exten => _X.,3,Hangup 
Confermi/qualcuno può confermare? :)
Grazie e ciao
InSa
-- 
