*

Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Pagine: [1]
  Stampa  
Autore Discussione: Devo fare una cosa difficile.... mi aiutate?  (Letto 230 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.

Devo fare una cosa difficile.... mi aiutate?

linuxman74
Advanced
***
Messaggi: 122


Mostra profilo
Novembre 20, 2008, 12:59:17 pm

Allora mi e' stato richiesto di fare questo.
Quando arriva una chiamata ad una coda e non si riceve nessuna risposta dopo 30 secondi deve squillare un' altra coda.
Ma attenzione, questo deve avvenire SOLO se gli interni della coda sono Idle e non rispondono.
Ovviamente se anche un solo interno della coda e' busy e' giusto che chi sta in coda aspetti il suo turno.
Mentre invece se ci sono tre telefoni in Idle e nessuno risponde, dopo un tot di tempo devo immaginare che gli operatori sono fuori sede e si sono dimenticati di chiudere X-Lite ed e' inutile che il cliente rimane in coda sentendo perennemente "siete i primi in coda e verrete risposti appena possibile..."
Come potrei fare?
Registrato
VoceSuIP.com
« inserita:: Novembre 20, 2008, 12:59:17 pm »


Centralino IP PBX - 3CX. Scarica la versione Gratuita!
 Registrato

#1 Re: Devo fare una cosa difficile.... mi aiutate?

crimson
Advanced
***
Messaggi: 335


"Nn ricevo piu il fax!"..."guardi la mail.." :)


Mostra profilo
Novembre 20, 2008, 03:32:19 pm

con asterisk 1.6 puoi controllare lo stato degli interni quindi puoi prima di far entrare il chiamante in coda controllare lo stato degli interni e nel caso siano tutti idle non lo fai nemmeno entrare. se almeno uno è libero o busy il controllo è ok e ridirigi sulla cosa.

per la 1.4 la cosa va pensata un attimino... Occhi al cielo
Registrato

#2 Re: Devo fare una cosa difficile.... mi aiutate?

linuxman74
Advanced
***
Messaggi: 122


Mostra profilo
Novembre 20, 2008, 03:58:52 pm

con asterisk 1.6 puoi controllare lo stato degli interni quindi puoi prima di far entrare il chiamante in coda controllare lo stato degli interni e nel caso siano tutti idle non lo fai nemmeno entrare. se almeno uno è libero o busy il controllo è ok e ridirigi sulla cosa.

per la 1.4 la cosa va pensata un attimino... Occhi al cielo

Ti ringrazio molto, ma ho la 1.4 e ti assicuro che per uno po di tempo deve rimanere cosi'... non posso prprio toccarlo il centralino.
Non riesco a trovare un modo per fare questa cosa. Il timeout del comando Queue non ha molto senso.... dovrebbe funzionare meglio!
Che senso ha andare in timeout se sono in coda e ci sono operatori "attivi" ma occupati? Il timeout dovrebbe attivarsi solo se nonostante tutti gli operatori sono idle nessuno risponde no?
Registrato

#3 Re: Devo fare una cosa difficile.... mi aiutate?

linuxman74
Advanced
***
Messaggi: 122


Mostra profilo
Novembre 20, 2008, 04:10:55 pm

Ok... semplifichiamo il tutto e riformuliamo la domanda.
C'e' una funzione che mi ritorna "true" se "almeno" 1 operatore di una determinata coda e' idle?
Se esistesse potrei usare un oeratore ternario che in quel caso avvia il timeout, else no timeout?

Uno script tipo
asterisk -rx "queue show $coda" |grep "Not in use" |wc -l
per esempio? se questo torna un numero >0  vuoldire che ci sono operatori "liberi" ma che non rispondono (quindi si presume che siano altrove e si sono scordati di mettere off-line il telefono), quindi il cliente dopo un timeout e' giusto che venga dirottato presso un altro gruppo in modo che non attenda invano. Giusto?

« Ultima modifica: Novembre 20, 2008, 04:15:45 pm da linuxman74 » Registrato

#4 Re: Devo fare una cosa difficile.... mi aiutate?

polpys
Janitor Easypbx
Beginner
**
Messaggi: 37


Mostra profilo
Novembre 20, 2008, 04:16:13 pm

Con una funzione o script agi interroghi un contattore (che ti sei settato come variabile nel contesto Inbound) o esegui un comando Show Hint e ti ricavi lp Status dei telefoni.
 

Prova un Fail-Back di questo genere... se entro N° secondi nessuno ti ha risposto, passi ad un' altra coda.

[queue_27]
exten=>_X.,1,NoOp('TRACE: [queue_27] => _X.,1')
exten=>_X.,2,Answer
exten=>_X.,3,NoOp('TRACE: [queue_27] => _X.,3, moh id is 44623')
exten=>_X.,4,Queue(queue_27_p2,nwt,,,12)
exten=>_X.,5,Queue(queue_27_p1,wt,,,)
exten=>_X.,6,Hangup
Registrato

Janitor of Easypbx - Hybrid PBX Console Management
Asterisk Developer
VoipLinux Distro Developer

#5 Re: Devo fare una cosa difficile.... mi aiutate?

linuxman74
Advanced
***
Messaggi: 122


Mostra profilo
Novembre 20, 2008, 04:58:58 pm

Potrei usare
System(asterisk -rx "queue show $QUEUE" |grep "Not in use" |wc -l)
Questa shell torna un numero >0 se la coda $QUEUE ha almeno un operatore "Not in use" quindi Idle.

Come faccio a catturare dentro il dialplan il valore restituito da System?
Dai che ci siamo quasi.....
Registrato

#6 Re: Devo fare una cosa difficile.... mi aiutate?

starlab
Moderator
Guru
*****
Messaggi: 1230



Mostra profilo
Novembre 20, 2008, 05:16:13 pm

AGI
Registrato

Certificato Digium-Certified Asterisk Professional (dCAP)

Certificato Inalp Patton

#7 Re: Devo fare una cosa difficile.... mi aiutate?

polpys
Janitor Easypbx
Beginner
**
Messaggi: 37


Mostra profilo
Novembre 20, 2008, 06:18:08 pm

Genera un file e poi lo vai a leggere: System(echo "${L}" >> /var/log/asterisk/extentionbusy.log)

Ma è più semplice settare una Variabile generica
Registrato

Janitor of Easypbx - Hybrid PBX Console Management
Asterisk Developer
VoipLinux Distro Developer

#8 Re: Devo fare una cosa difficile.... mi aiutate?

linuxman74
Advanced
***
Messaggi: 122


Mostra profilo
Novembre 21, 2008, 05:00:26 pm

Genera un file e poi lo vai a leggere: System(echo "${L}" >> /var/log/asterisk/extentionbusy.log)

Ma è più semplice settare una Variabile generica


Ho fatto uno script:
/var/lib/asterisk/agi-bin/codalibera.agi

#!/bin/bash
coda=$1
membri=`asterisk -rx "queue show $coda" |grep SIP |wc -l`
offline=`asterisk -rx "queue show $coda" |grep "Unavailable" |wc -l`
liberi=`asterisk -rx "queue show $coda" |grep "Not in use" |wc -l`
occupati=`asterisk -rx "queue show $coda" |grep "Busy" |wc -l`
attesa=`asterisk -rx "queue show $coda" |grep "Hold" |wc -l`

ret=`expr $membri - $occupati - $attesa - $offline`

if [ $ret -gt 0 ];then
        # Ci sono operatori disponibili
        return 1
else
        # Non ci sono operatori disponibili
        return 0
fi

E lo richiamo
exten => s,1,AGI(codalibera.agi|${CODA})

Ma non capisco come posso nel associare ad una variabile del dialplan il rosultato 0/1 che ritorna lo script.

Mi aiutereste?

Registrato
VoceSuIP.com
   

 Registrato
Pagine: [1]
  Stampa  

 
Vai a:  

utenti
Utenti in totale: 5231
Ultimo utente: syncom
Stats
Messaggi in totale: 67778
Discussioni in totale: 9511
Online Oggi: 71
Presenze Massime Online: 270
(Aprile 17, 2008, 04:22:27 pm)
Utenti online
Utenti: 11
Visitatori: 52
Totale: 63