PDA

Voir la version complète : Emission d'appels automatique sur Asterisk



stepatchin
12/10/2010, 11h01
Bonjour a tous
merci d'abord pour ce site il m'aide énormément. Sinon ma question est est il possible d'émettre des appels automatiquement vers des numero pré-configurer pour leurs envoyer des messages vocaux ??

Merci a tous

cedricscha
12/10/2010, 11h28
jette un coups d'oeil sur les fichier d'appel avec asterisk ici (http://www.voip-info.org/tiki-index.php?page=Asterisk+auto-dial+out)

cela devrait combler tes besoins de bases.

Ensuite tu fais un petit script qui te cree les fichier avec la date et l'heure d'appel que tu souhaites et tu mets cela dans un cron.

napster
12/10/2010, 11h44
Salut,
voici un exemple simplifié d'un script qui génère un appel, si cela peut t'aider.


#!/bin/bash
# Date : 20/08/2009
name_file=$$.txt

echo "Channel: Local/$1@$context
MaxRetries: 0
RetryTime: 60
WaitTime: 30
Context: outgoing
Extension: 800
Priority: 1
Set: Mavariable=$2"> /tmp/tmpcallme/$name_file

/bin/chmod 777 /tmp/tmpcallme/$name_file
/bin/cp -a /tmp/tmpcallme/$name_file /var/spool/asterisk/outgoing
/bin/rm -f /tmp/tmpcallme/$name_file

ramsesthebest
12/10/2010, 13h10
Bonjour,
ce script, me semble t-il emet un appel vers un destinataire particulier. mais comment faire si je veux annncer un message à tous les utilisateurs du système ?

Merci.

cedricscha
12/10/2010, 14h36
soit tu multiplie le script par ton nombre d'utilisateurs, soit tu crée dans un de tes contextes, un groupe d'appel qui te permet cette fonctionnalité.

stepatchin
12/10/2010, 16h42
merci a vous
pour etre plus clair, le but c d'emettre un message vocal a une personne a domicile pour lui dire qu'il ya un probleme sur le systeme a cote (qui émet un signal d'erreur) et demande au technicien d'appuyer sur une touche pour confirmer son intervention. je suis pas programmeur je suis plutot réseaux alors ce petit script va m'aider merci a vous

stepatchin
12/10/2010, 17h54
bon j'ai trouv un site qui explique une des techniques
ca pourrai aider quelqu'un (surtout moi)
http://www.samuel-levy.eu/2008/07/commander-asterisk-avec-des-fichiers.html
j'ai essayer de bidouiller un fichier mais bon dabord installe un asterisknow qui me prend la tete :mouais:

fastm3
12/10/2010, 19h38
Salut,
voici un exemple simplifié d'un script qui génère un appel, si cela peut t'aider.


#!/bin/bash
# Date : 20/08/2009
name_file=$$.txt

echo "Channel: Local/$1@$context
MaxRetries: 0
RetryTime: 60
WaitTime: 30
Context: outgoing
Extension: 800
Priority: 1
Set: Mavariable=$2"> /tmp/tmpcallme/$name_file

/bin/chmod 777 /tmp/tmpcallme/$name_file
/bin/cp -a /tmp/tmpcallme/$name_file /var/spool/asterisk/outgoing
/bin/rm -f /tmp/tmpcallme/$name_file

Jamais de copy pour les call files. Il faut faire un move qui remplacera efficacement tes 2 lignes.
Fastm3.

napster
13/10/2010, 16h33
Jamais de copy pour les call files. Il faut faire un move qui remplacera efficacement tes 2 lignes.
Fastm3.

Salut fastm,
EN faite ce script, je l’exécute depuis le dialplan, et quand je faisait un mv, souvent l'appel mettait du temps à se générer.
Avec le cp j'ai jamais eu de problème pour émettre un appel.

Mais j'ai pas compris en quoi le cp pose problème?

fastm3
13/10/2010, 19h33
Salut fastm,
EN faite ce script, je l’exécute depuis le dialplan, et quand je faisait un mv, souvent l'appel mettait du temps à se générer.
Avec le cp j'ai jamais eu de problème pour émettre un appel.
Mais j'ai pas compris en quoi le cp pose problème?
Le cp n'est pas une operation unitaire. Theoriquement, il est possible que Asterisk traite un call files alors que l'ecriture complete n'est pas terminé. Asterisk traitera donc un call file incomplet avec des erreurs a la clé. C'est pour ca qu'on recommande mv plutot que cp.
Sur une machine chargée et avec un nombre de call files importants, le risque est loin d'etre nul.
Fastm3.

stepatchin
19/10/2010, 15h07
pouvez vous svp m'expliquer quelque lignes de ce code ?

#!/bin/bash
# Date
name_file=$$.txt

echo "
Channel: Local/$1@$context
MaxRetries: 0
RetryTime: 60
WaitTime: 30
Context: outgoing
Extension: 800
Priority: 1
Set: Mavariable=$2"> /tmp/tmpcallme/$name_file <

/bin/chmod 777 /tmp/tmpcallme/$name_file
/bin/cp -a /tmp/tmpcallme/$name_file /var/spool/asterisk/outgoing
/bin/rm -f /tmp/tmpcallme/$name_file <

napster
19/10/2010, 16h02
$$.txt
Cela te genere un nom de fichier unique et au hasard


echo "
Channel: Local/$1@$context
MaxRetries: 0
RetryTime: 60
WaitTime: 30
Context: outgoing
Extension: 800
Priority: 1
Set: Mavariable=$2"> /tmp/tmpcallme/$name_file
L'ensemble du contenu du résultat "echo" et l'écrit dans le fichier tmp/tmpcallme/(nomdufichierunique)



/bin/cp -a /tmp/tmpcallme/$name_file /var/spool/asterisk/outgoing
/bin/rm -f /tmp/tmpcallme/$name_file
Prends le fichier et le copie dans /var/spool/asterisk/outgoing, et asterisk va ensuite generer ton appel.
Le rm -f va supprimer ton fichier sans demande de confirmation.

Si tu lis les posts précédents, il est conseille de faire directement un

/bin/mv /tmp/tmpcallme/$name_file /var/spool/asterisk/outgoing/

stepatchin
28/10/2010, 09h16
Bonjour
Grand merci pour ce petit script :) je suis pas tres doué pour ca et ma formation en php ne commence que l'annee prochaine ;)
j'aimerai pose une question par rapport au contexte : est-il possible que le message dans le context change automatiquement ? pour expliqué, selon l'etat d'une variable le message dans le context outgoing change et le destinataire aussi .
merci :)

ffossard
28/10/2010, 11h36
On ne le répètera jamais assez, pas de "cp" pour les fichiers .call, il vaut mieux un "mv" :redface:

stepatchin
28/10/2010, 13h56
On ne le répètera jamais assez, pas de "cp" pour les fichiers .call, il vaut mieux un "mv" :redface:

excuse moi mais j'ai pas compris ta remarque, je veux juste paramétre le context pour varier le message vocal ainsi que le numero du destinataire
merci :)

jean
28/10/2010, 14h48
Bonjour
ma formation en php ne commence que l'annee prochaine ;)


envisage aussi une formation au shell (bash), parce que là, y'a pas la moindre ligne de php

stepatchin
28/10/2010, 15h27
Surement sinon ya d'autres perosnne pour faire le script faut juste que je comprenne le fonctionnement

sunny
28/10/2010, 15h36
si il s'agit juste de comprendre un script en shell, je pense que tu auras moins de mal, il suffit de taper les mots sur la ligne dans google pour avoir la réponse.

Au pire, prend 30 min pour apprendre un peut le shell (les tuto sur internet sont très bien fait pour ça, et pas forcement très long) et tu comprendra assez vite se que je veux dire.

Je parle par expérience récente là :)

stepatchin
28/10/2010, 15h47
C'est ce que je compte faire, ma question était , si on peut paramétré le message vocal dans le contexte pour pouvoir le changer c tout
merci :)

cedricscha
28/10/2010, 15h52
tu peux faire ce que tu veux dans ton contexte, il suffit de le parametrer.

essaie peut etre d'etre plus détailé dans ce que tu souhaites faire.

Par rapport à quoi ton message change, etc etc.....

Tu peux aussi faire un agi qui te permetrai d'aller chercher tes variables et messages dans une base de donnée par exemple.

plein de solution s'ouvre à toi avec asterisk :D

stepatchin
28/10/2010, 15h58
Si seulement je m'y connais en language (j'ai toujours travailler sur des réseau d'entreprise) du coup j'esssaye de me ratrapper un peu. Ce que je veux faire, ce dans une biblio vocal, on va cherche le message adéquat et le place dans le contexte en changeant le numero de telephone selon la personne.
merci :)

stepatchin
03/11/2010, 18h09
tu peux faire ce que tu veux dans ton contexte, il suffit de le parametrer.

essaie peut etre d'etre plus détailé dans ce que tu souhaites faire.

Par rapport à quoi ton message change, etc etc.....

Tu peux aussi faire un agi qui te permetrai d'aller chercher tes variables et messages dans une base de donnée par exemple.

plein de solution s'ouvre à toi avec asterisk :D

j'ai bidouiller ce petit dialplan apres avoir lu la doc sur asterisk (the future of the telephony) si quelqu'un peu me donné un avis (je peux pas encore le tester sur asterisk alors je prepare mes test)
Test Dialplan

Exten => 1234,1, Answer
Exten => 1234,2, Wait(2)
Exten => 1234,3, Record (message :ulaw)
Exten => 1234,4, Wait(2)
Exten => 1234,5, Playback(message)
Exten => 1234,6, Wait(2)
Exten => 1234,7, Hangup

[Message]
Exten => s, 1, Wait (2)
Exten => s, 2, Playback (message)
exten => s, 3, Background (enter-ext-of-person)
exten => s, n, WaitExten()

exten => 1,1, Playback (digits/1)
exten => 1,n, Hangup()

exten => 2,1, Playback (digits/2)
exten => 2,n, Hangup()

exten => 3,1, Playback (digits/3)
exten => 3,n, Hangup()

exten => i,1, Playback (pbx-invalid)
exten => i,n, Hangup()

exten => t,1, Playback (vm-goodbye)
exten => t,n, Hangup()

Merci :)

ffossard
03/11/2010, 18h38
Rien de spécial à dire, il faut le tester. Tu peux remplacer tes priorités 1, 2, 3, .. 7 par des "n" comme tu as fait ailleurs.

stepatchin
03/11/2010, 18h55
je vais l'essaye dés que je reçoit les téléphones et le serveur de test
merci :)

ffossard
03/11/2010, 19h17
je vais l'essaye dés que je reçoit les téléphones et le serveur de test
merci :)

Ça peut s'essayer avec un vieux pc d'il y'a 10 ans et un softphone gratuit :wink:

stepatchin
04/11/2010, 09h59
Ça peut s'essayer avec un vieux pc d'il y'a 10 ans et un softphone gratuit :wink:
Je sais, j'ai étudier Asterisk comme ca sur un vieux coucou PIII mais dans ma boite je suis obligé de suivre les regles, on attend le matos a dit le boss
je vous tiens au courant pour les test
Merci :)

survivant
07/11/2010, 22h59
soit tu multiplie le script par ton nombre d'utilisateurs, soit tu crée dans un de tes contextes, un groupe d'appel qui te permet cette fonctionnalité.

Comme on fait un groupe d'appel ?

en gros.. est-ce possible de faire un lookup dans une DB et appeller tous le monde dans une table ? J'ai pas trouvé de cas comme ca.. Juste un exemple d'un appel lancé par un site web.. mais un à un.

survivant
07/11/2010, 23h02
j'ai bidouiller ce petit dialplan apres avoir lu la doc sur asterisk (the future of the telephony) si quelqu'un peu me donné un avis (je peux pas encore le tester sur asterisk alors je prepare mes test)
Test Dialplan

Exten => 1234,1, Answer
Exten => 1234,2, Wait(2)
Exten => 1234,3, Record (message :ulaw)
Exten => 1234,4, Wait(2)
Exten => 1234,5, Playback(message)
Exten => 1234,6, Wait(2)
Exten => 1234,7, Hangup

[Message]
Exten => s, 1, Wait (2)
Exten => s, 2, Playback (message)
exten => s, 3, Background (enter-ext-of-person)
exten => s, n, WaitExten()

exten => 1,1, Playback (digits/1)
exten => 1,n, Hangup()

exten => 2,1, Playback (digits/2)
exten => 2,n, Hangup()

exten => 3,1, Playback (digits/3)
exten => 3,n, Hangup()

exten => i,1, Playback (pbx-invalid)
exten => i,n, Hangup()

exten => t,1, Playback (vm-goodbye)
exten => t,n, Hangup()

Merci :)


si je comprend. Tu enregistres un message dans et le contexte : Message tu le fais rejouer.. et tu attends la réponse de l'usagé.

sais-tu comment sauvegarder la réponse entrée par l'usagé ?

stepatchin
08/11/2010, 10h23
Normalement et d'aprés ce que j'ai cherché, aprés les playback, il ya des goto pour t'orienter vers d'autres contexte ou tu pourra avoir la réponse de l'utilisateur si c pas bon corrigez moi
merci :)

Comdif
08/11/2010, 12h25
il n'y a même pas besoins de goto le numéro entré est recherché dans le dialplan et envoyé

Par exemple si on entre 3 on part sur l'exten 3 et son scénario

par exemple pour une campagne d'appel inter-active ou les appels sont envoyés à partir d'une BDD mysql.
pour enregistrer la réponse "3" dans la db mysql appelée db sur la table liste

exten => 3,1,MYSQL(Connect connid localhost login password db)
exten => 3,2,MYSQL(Query resultid ${connid} UPDATE liste SET reponse='3' WHERE numero='${CDR(accountcode)}'

stepatchin
08/11/2010, 14h20
il n'y a même pas besoins de goto le numéro entré est recherché dans le dialplan et envoyé

Par exemple si on entre 3 on part sur l'exten 3 et son scénario

par exemple pour une campagne d'appel inter-active ou les appels sont envoyés à partir d'une BDD mysql.
pour enregistrer la réponse "3" dans la db mysql appelée db sur la table liste

exten => 3,1,MYSQL(Connect connid localhost login password db)
exten => 3,2,MYSQL(Query resultid ${connid} UPDATE liste SET reponse='3' WHERE numero='${CDR(accountcode)}'

C pas mal comme idée l'enregistrement sur la BDD, je vais surement en avoir besoin. Par contre j'ai pas bien compris ce que tu voulais dire avec "les appels sont envoyés a partir d'un BDD mysql" ???

Comdif
08/11/2010, 15h34
Oui j'ai fait quelques fois ce genre d'appli pour des sociétés
Une db avec les nums de tel + la date pour réaliser l'appel + quelques champs
pour remonter les résultats

Ensuite un cron serveur vas lire la base régulièrement et quand c'est l'heure
un call file est envoyé dans le spool

Simple et efficace

survivant
08/11/2010, 15h54
Oui j'ai fait quelques fois ce genre d'appli pour des sociétés
Une db avec les nums de tel + la date pour réaliser l'appel + quelques champs
pour remonter les résultats

Ensuite un cron serveur vas lire la base régulièrement et quand c'est l'heure
un call file est envoyé dans le spool

Simple et efficace

merci

c'est exactement ca que je cherchais.

j'ai été capable de faire un appel sortant avec Originate, mais je ne savais pas comment enregistrer les résultats du client.

mais.. il reste un point important. Comment on peut tracker les appels non répondu ? dans le CDR, on garde une trace de tous les appels actifs.. mais si une personne refuse l'appel, on n'a pas de trace dans le CDR. Comme le dialplan semble etre exécuté seulement si la personne répond, je ne peux pas faire de insert dans Mysql a cause de ca.. ?

C'est quoi l'info qui me manque ?

merci

stepatchin
08/11/2010, 16h39
Oui j'ai fait quelques fois ce genre d'appli pour des sociétés
Une db avec les nums de tel + la date pour réaliser l'appel + quelques champs
pour remonter les résultats

Ensuite un cron serveur vas lire la base régulièrement et quand c'est l'heure
un call file est envoyé dans le spool

Simple et efficace

Pareil moi aussi ca m'interesse si ca te derange pas trop de m'explique un peu plus ca ca sera tres gentil
merci :)

Comdif
08/11/2010, 20h45
"Comme le dialplan semble etre exécuté seulement si la personne répond, je ne peux pas faire de insert dans Mysql a cause de ca.. ? "


Bien la réponse est dans ta question, quand je fait ce genre d'appli je remonte des codes état au fur et a mesure du déroulement de l'appel, le premier code état
c'est a dire appel envoyé il faut le remonter a partir du script cron par exemple
etat 1

ensuite des qu'on rentre sur le dialplan on remonte les codes au fur et a mesure
avec des requêtes.

Ce qui permet de savoir la ou ça à bloqué.

survivant
09/11/2010, 02h04
"Comme le dialplan semble etre exécuté seulement si la personne répond, je ne peux pas faire de insert dans Mysql a cause de ca.. ? "


Bien la réponse est dans ta question, quand je fait ce genre d'appli je remonte des codes état au fur et a mesure du déroulement de l'appel, le premier code état
c'est a dire appel envoyé il faut le remonter a partir du script cron par exemple
etat 1

ensuite des qu'on rentre sur le dialplan on remonte les codes au fur et a mesure
avec des requêtes.

Ce qui permet de savoir la ou ça à bloqué.

merci. Ce à quoi je m'attendais.

et le code de retour, je comprend le principe. Je fais ca dans mes scripts unix, pour savoir ce qui a été exécuté si jamais ca venait à planter.

mon problème est que je n'ai pas trouvé comment faire ca dans Asterisk.

Aurais-tu un hello world à partager svp.

stepatchin
19/11/2010, 15h59
Bonjour je viens de penser a ces possibilités :
Si l'appel automatique d'asterisk tome sur la messagerie vocal de la personne
Si la personne est injoignable (sonne sans décrocher)
que faire ?????
quelqu'un a une idée ??

stepatchin
19/11/2010, 16h24
peut être que cette commande peut aider, je vienx de tomber dessus
exten => s,1,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,2,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
merci :)

Comdif
19/11/2010, 17h09
Si l'appel automatique d'asterisk tome sur la messagerie vocal de la personne

Oui la technique est de demander de presser une touche avant de continuer
touche non détectée on remonte le code répondeur.
Avec bien sur toujours le problème des appels derrière un standard non FV

Comdif
20/11/2010, 00h20
Et pendant que j'y pense pour ceux qui veulent utiliser Mysql dialplan
il est IMPÉRATIF de penser à fermer la connexion en fin de script et/ou sur le raccroché, la on fonctionne sans filet !!
Et votre script ne vas pas fonctionner longtemps pour planter Mysql si vous oubliez.

stepatchin
22/11/2010, 11h22
est il possible de récuperer le resultat (appui 1 ou 2) mais sans passer par Mysql (car chez moi le serveur voip n'a pas d'écrire sur la base) genre ecrire dans un log ou txt une petite phrase "résultat = 1 ok", "résultat =2 ko" ?
ou bien une commande dan le dialplan pour envoyer le resultat sur réseau (ftps://....)
merci :)

cedricscha
22/11/2010, 11h38
exten = 1,1,system(echo -e "resultat = 1 ok" >> /tmp/retour.txt)

exten = 2,1,system(echo -e "resultat = 2 nok" >> /tmp/retour.txt)

tu devrais t'en sortir avec qquelques choses comme cela....

stepatchin
23/11/2010, 11h11
Bon j'ai enfin pu tout mettre en place (matos, script ..)
mais bon l'autocall ne marche pas :((( voila mes scrpit si vous voyez un pépin :

#!/bin/bash
if [ -z $1 ] ; then LogFile=/tmp/ConvertFile/rapport.log ; else LogFile=$1 ; fi
MsgVocFile=/tmp/ConvertFile
Incident=Incident1
Technicien=Tech1
name_file=/tmp/ConvertFile/$$.txt
context=192.168.2.19
#loginMysql=
#passMysql=

#commandeMysql="USE nomBase ; SELECT numTel FROM tableTechnicien #WHERE nomTechnicien = ResTechnicien

################################################## ##################################

#des trucs qui marche bien

echo "message texte" > ${MsgVocFile}/Msgvocal.txt

liambrola -f Msgvocal.txt -o Msgvocal.wav

#$ResTechnicien
echo "Channel: SIP/4000@192.168.2.19"> $name_file
echo "MaxRetries: 0">> $name_file
echo "RetryTime: 60">> $name_file
echo "WaitTime: 30">> $name_file
echo "Context: outboundmsg1">> $name_file
echo "Extension: 800">> $name_file
echo "Priority: 1">> $name_file
echo "Set: Mavariable=$2">> $name_file

chmod 777 $name_file
mv $name_file /var/spool/asterisk/outgoing
#rm -f $name_file #Msgvocal.wav Msgvocal.txt #$LogFile
les fichiers $name_file Msgvocal.wav Msgvocal.txt se crée et sont valide sur le $name_file j'ai ca :
Channel: SIP/4000@192.168.2.19
MaxRetries: 0
RetryTime: 60
WaitTime: 30
Context: outboundmsg1
Extension: 800
Priority: 1
Set: Mavariable=

il se crée dans var/spool/astrisk/out... mais l'appel n'abouti pas :((

ah oui voila les contexte que j'ai mis dans extensions_custum.conf (je ajouter les contexte dans from-internal-custom] avec un include)
[outboundmsg1]
exten => s,1,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,2,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,3,Answer
exten => s,4,Wait(1)
exten => s,5,Background(tmp/ConvertFile/Msgvocal) ; "play outbound msg"
exten => 1,1,Goto(s,5) ; replay message
exten => 2,1,Goto(msgack,s,1) ; acknowledge message
exten => 3,1,Goto(msgnoack,s,1) ; acknowledge message
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup

[msgack]
exten = s,1,system(echo -e "resultat = 1 ok" >> tmp/ConvertFile/retour.txt)
exten => s,2,Playback(tmp/ConvertFile/aurevoir)
exten => s,3,Playback(vm-goodbye)
exten => s,4,Hangup

[msgnoack]
exten = s,1,system(echo -e "resultat = 2 nok" >> tmp/ConvertFile/retour.txt )
exten => s,2,Playback(tmp/ConvertFile/negatif)
exten => s,3,Playback(tmp/ConvertFile/aurevoir)
exten => s,4,Playback(vm-goodbye)
exten => s,5,Hangup

merci :)

stepatchin
23/11/2010, 11h11
ah oui
c mon premier script alors rigolez pas :)

stepatchin
23/11/2010, 18h54
Je pense que le probleme vient de cette ligne :
echo "Channel: SIP/4000@192.168.2.19"> $name_file
dés que j'ai enlve @192.168.2.19 l'appel marche :)
mais bon quand je décrohe j'entend rien je suis sure qu'il n'aime pas trop mon message que j'ai crée avec Liambrola car si je le change par un message original d'asterisk ca marche :(
quelqu'un a une idée SVP merci

stepatchin
24/11/2010, 11h13
exten = 1,1,system(echo -e "resultat = 1 ok" >> /tmp/retour.txt)

exten = 2,1,system(echo -e "resultat = 2 nok" >> /tmp/retour.txt)

tu devrais t'en sortir avec qquelques choses comme cela....

j'ai essaye le code que tu ma filer mais ca ne marche pas

cedricscha
24/11/2010, 12h19
[msgack]
exten = s,1,system(echo -e "resultat = 1 ok" >> /tmp/ConvertFile/retour.txt)
exten => s,2,Playback(tmp/ConvertFile/aurevoir)
exten => s,3,Playback(vm-goodbye)
exten => s,4,Hangup

[msgnoack]
exten = s,1,system(echo -e "resultat = 2 nok" >> /tmp/ConvertFile/retour.txt )
exten => s,2,Playback(tmp/ConvertFile/negatif)
exten => s,3,Playback(tmp/ConvertFile/aurevoir)
exten => s,4,Playback(vm-goodbye)
exten => s,5,Hangup


y te manquerai pas le premier "/" ?

quelle est le message d'erreur dans la CLI ?

stepatchin
24/11/2010, 12h40
Verbosity is at least 3
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
-- Attempting call on SIP/4000 for s@outboundmsg1:1 (Retry 1)
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
== Manager 'admin' logged on from 127.0.0.1
-- Executing [s@outboundmsg1:1] Set("SIP/4000-0000002c", "TIMEOUT(digit)=5") in new stack
-- Digit timeout set to 5.000
-- Executing [s@outboundmsg1:2] Set("SIP/4000-0000002c", "TIMEOUT(response)=10") in new stack
-- Response timeout set to 10.000
-- Executing [s@outboundmsg1:3] Answer("SIP/4000-0000002c", "") in new stack
-- Executing [s@outboundmsg1:4] Wait("SIP/4000-0000002c", "1") in new stack
-- Executing [s@outboundmsg1:5] BackGround("SIP/4000-0000002c", "outboundmsgs/Msgvocal") in new stack
-- <SIP/4000-0000002c> Playing 'outboundmsgs/Msgvocal.slin' (language 'en')
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
-- Executing [2@outboundmsg1:1] Goto("SIP/4000-0000002c", "msgack,s,1") in new stack
-- Goto (msgack,s,1)
-- Executing [s@msgack:1] Playback("SIP/4000-0000002c", "outboundmsgs/aurevoir") in new stack
-- <SIP/4000-0000002c> Playing 'outboundmsgs/aurevoir.slin' (language 'en')
-- Executing [s@msgack:2] Hangup("SIP/4000-0000002c", "") in new stack
== Spawn extension (msgack, s, 2) exited non-zero on 'SIP/4000-0000002c'



je vouslais aussi posé une question par rapport au :
== Manager 'admin' logged off from 127.0.0.1
C quoi ..???

stepatchin
24/11/2010, 12h52
Je voulais aussi savoir une autre chose : a la fin du message " pour le 3eme choix appuyez sur la touche trois" si j'appuie après la fin il prend pas en compte les GOTO. ya il un paramettre pour ralonger ca ?
---------------------------------------
j'ai trouve c le waitexten() désole
(dommage qu'on peut pas supprimer un message)

cedricscha
24/11/2010, 13h17
dans ton extrait de cli, je vois pas la partie system s'afficher, est-tu sur que tu as reloader ?

mais un noop avant et apres afin de pouvoir l'isoler.

stepatchin
24/11/2010, 15h28
Asterisk 1.6.2.14, Copyright (C) 1999 - 2010 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
================================================== =======================
== Parsing '/etc/asterisk/asterisk.conf': == Found
Connected to Asterisk 1.6.2.14 currently running on localhost (pid = 11174)
Verbosity is at least 3
== Manager 'admin' logged off from 127.0.0.1
-- Attempting call on SIP/4000 for s@outboundmsg1:1 (Retry 1)
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
== Manager 'admin' logged on from 127.0.0.1
-- Executing [s@outboundmsg1:1] Set("SIP/4000-0000002f", "TIMEOUT(digit)=5") in new stack
-- Digit timeout set to 5.000
-- Executing [s@outboundmsg1:2] Set("SIP/4000-0000002f", "TIMEOUT(response)=10") in new stack
-- Response timeout set to 10.000
-- Executing [s@outboundmsg1:3] Answer("SIP/4000-0000002f", "") in new stack
-- Executing [s@outboundmsg1:4] Wait("SIP/4000-0000002f", "1") in new stack
-- Executing [s@outboundmsg1:5] BackGround("SIP/4000-0000002f", "outboundmsgs/Msgvocal") in new stack
-- <SIP/4000-0000002f> Playing 'outboundmsgs/Msgvocal.slin' (language 'en')
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
-- Executing [2@outboundmsg1:1] Goto("SIP/4000-0000002f", "msgack,s,1") in new stack
-- Goto (msgack,s,1)
-- Executing [s@msgack:1] Playback("SIP/4000-0000002f", "outboundmsgs/aurevoir") in new stack
-- <SIP/4000-0000002f> Playing 'outboundmsgs/aurevoir.slin' (language 'en')
== Manager 'admin' logged on from 127.0.0.1
-- Executing [s@msgack:2] Hangup("SIP/4000-0000002f", "") in new stack
== Spawn extension (msgack, s, 2) exited non-zero on 'SIP/4000-0000002f'
== Manager 'admin' logged off from 127.0.0.1




C tous ce que de CLI a donné meme avec des noop avant et apres je comprend rien, peu etre il faut utilise trysystem()

cedricscha
24/11/2010, 16h15
peu etre que je vois mal, mais je vois pas de trace des noop dans ton extrait de cli......

as-tu bien recharger le dialplan ?

Peux-tu coller le dialplan que tu as tester, avec les noop ici.....

cedricscha
24/11/2010, 16h18
que donne un :
dialplan show s@msgack

dans la CLI ?

stepatchin
24/11/2010, 16h35
[outboundmsg1]
exten => s,1,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,2,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,3,Answer
exten => s,4,Wait(1)
exten => s,5,Playback(outboundmsgs/Msgvocal);
exten => s,6,Background(outboundmsgs/choix);
exten => s,7,WaitExten()

exten => 1,1,Goto(s,5) ; replay message
exten => 2,1,Goto(msgack,s,1) ; acknowledge message
exten => 3,1,Goto(msgnoack,s,1) ; acknowledge message
exten => i,1,Playback(outboundmsgs/erreur)
exten => i,n,Goto(s,5)

exten => t,1,Playback(outboundmsgs/byefr)
exten => t,2,Hangup

[msgack]
noop
exten => s,1,Playback(outboundmsgs/byefr)
exten => s,2,Hangup
exten => s,3,system(echo -e "resultat = 1 ok" >> /tmp/ConvertFile/retour.txt)
noop
[msgnoack]
exten => s,1,Playback(outboundmsgs/negatif)
exten => s,2,Playback(outboundmsgs/byefr)
exten => s,3,Hangup
exten => s,4,system(echo -e "resultat = 2 nok" >> /tmp/ConvertFile/retour.txt )

cedricscha
24/11/2010, 16h40
Ben la réponse est dans ton dialplan...... je le redis encore une fois, lit le bouquin d'oreilly........

tu ne peux pas arriver a faire quelques chose de fonctionnel, si tu n'y mets pas un peu du tien, fais au moins quelques recherche sur internet, documente toi...... prends des cours........

si tu fais un hangup....... comment veux tu que ce qu'il y a apres fonctionne ?

utilise les priorités a bon escient.......

voici ce que tu aurais du trouver tout seul, en ayant lu au moins les tutos disponible sur ce site...........


[msgack]
exten = s,1,Playback(outboundmsgs/byefr)
exten = s,n,NoOp(Ecriture dans le fichier retour.txt)
exten = s,n,system(echo -e "resultat = 1 ok" >> /tmp/ConvertFile/retour.txt)
exten = s,n,Hangup()

[msgnoack]
exten = s,1,Playback(outboundmsgs/negatif)
exten = s,n,Playback(outboundmsgs/byefr)
exten = s,n,NoOp(Ecriture dans le fichier retour.txt)
exten = s,n,system(echo -e "resultat = 2 nok" >> /tmp/ConvertFile/retour.txt )
exten = s,n,Hangup

fais attention egalement a poster, le diaplan que tu utilise et non pas un autre...... si tu veux que l'on te dépanne dessus.

tu peux egalement faire ainsi si tu veux que ton écriture ce fasse après le hangup() :


[msgack]
exten = s,1,Playback(outboundmsgs/byefr)
exten = s,n,NoOp(Ecriture dans le fichier retour.txt)
exten = s,n,Hangup()

exten = h,1,system(echo -e "resultat = 1 ok" >> /tmp/ConvertFile/retour.txt)

[msgnoack]
exten = s,1,Playback(outboundmsgs/negatif)
exten = s,n,Playback(outboundmsgs/byefr)
exten = s,n,NoOp(Ecriture dans le fichier retour.txt)
exten = s,n,Hangup

exten = h,1,system(echo -e "resultat = 2 nok" >> /tmp/ConvertFile/retour.txt )

Mais cela aussi tu le saurais, si tu avais lu les tutos dispo sur ce site.......

stepatchin
24/11/2010, 17h18
je me suis dis la meme chose t'inquiete, c'etait avant la hangup mais j'ai essaye de la mettre apres et meme sur le livre (fr comme en) il explique pas bien la fonction System()

en tou cas je vais essaye et je te tiens au courant

sunny
24/11/2010, 17h23
Pour faire des actions après le hangup, il faut utilisé l'extension h.

la fonction système te permet simplement d'accédé au système, donc d'utiliser des commandes bash.

stepatchin
24/11/2010, 17h26
Oui je vois
merci en tout cas
sinon ya moyen de faire jouer le message en boucle et que le choix d'un bouton l'interronpe ??

sunny
24/11/2010, 17h34
La fonction background fait ça je crois...

hésite pas à aller jeter un cout d'oeil à voip-info.com quand tu as une question comme ça (tape command asterisk dans google, ça devrait suffire), on trouve souvent pas mal de réponse sur les fonctions du dialplan.

stepatchin
24/11/2010, 18h29
Sur le oreilly c marquer qu'il faut ajouter l'option m
Background(filename1[,m])
mais ca marche pas si comme ni meme comme ca
Background(filename1,m)
Background(filename1,[m])
c peu etre uune différence entre asterisk1.4 et 1.6

cedricscha
25/11/2010, 09h03
ce sera :


Background(fichierson,m)

pour savoir comment s'utilise les applications du dialplan :


core show application et donc pour ton cas :


core show application BackGround

ce qui te donnera toute l'explication que tu as besoin........

et plus particulièrement :


m - Only break if a digit hit matches a one digit
extension in the destination context.


ce que l'on peut traduire grossièrement par :


le fichier son, sera arrêter seulement si on compose un chiffre d'une extension du contexte de destination.

c'est belle et bien ce que tu veux, il ne te manque que la répétition du message......

alors, voici une solution :


[outboundmsg1]
exten => s,1,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,n,Answer
exten => s,n,Wait(1)
exten => s,n,Playback(outboundmsgs/Msgvocal)
exten => s,n(boucle),Background(outboundmsgs/choix,m)
exten => s,n,Goto(boucle)


exten => 1,1,Goto(boucle) ; replay message
exten => 2,1,Goto(msgack,s,1) ; acknowledge message
exten => 3,1,Goto(msgnoack,s,1) ; acknowledge message
exten => i,1,Playback(outboundmsgs/erreur)
exten => i,n,Goto(s,5)

exten => t,1,Playback(outboundmsgs/byefr)
exten => t,2,Hangup

stepatchin
25/11/2010, 10h22
Merci :) je vais essayer ca

cedricscha
25/11/2010, 10h33
ah oui, tant que tu y est, se serait pas mal de dire si tes premiers problème sont ok ou non...

stepatchin
25/11/2010, 10h52
C bon ca marche bien malgré la qualité moyenne (voir basse) de Liambrola mais bon on fait avec j'ai pas trouve mieux en open source.
Mais ya juste le fichier retour.txt qui sert a recuperer le resultat de la manip je peux pas le traiter dans mon script car le autocall s'effectu apres la fin du script
je sais pas quoi faire surtout que je veux le transferer par FTP ou FTPS ou partage Samba au gestionnaire des erreurs pour lui dire ok la personne viendra ou non

cedricscha
25/11/2010, 11h01
je comprends pas ton problème ?

stepatchin
25/11/2010, 11h06
je lance le script qui genere le message vocal et qu'il copie le fichier call dans /outgonig d'asterisk, le script fini son deroulement , l'appel automatique sonne mais j'aimerai que dans ce meme script je puisse recupere le contenu du fichier retour.txt qui contien la touche que la personne a choisi
d'autres terme le script ne s'arrete qu'a la fin de l'appel (hangup)

cedricscha
25/11/2010, 11h11
Pourquoi ne lance tu pas un deuxième script a la fin de l'appel ?

stepatchin
25/11/2010, 11h20
Avec la fonction system() ???
Mais si s'il n'y pas d'appel (la personne ne decroche pas) comment le script cva demarer ?

sunny
25/11/2010, 11h31
tu peux utiliser l'option NOANSWER de DIALSTATUS pour ce cas.

cedricscha
25/11/2010, 11h44
tu as aussi la fonction AGI, pour lancer un script depuis le dialplan.



[msgack]
exten = s,1,Playback(outboundmsgs/byefr)
exten = s,n,NoOp(Ecriture dans le fichier retour.txt)
exten = s,n,Hangup()

exten = h,1,system(echo -e "resultat = 1 ok" >> /tmp/ConvertFile/retour.txt)
exten = h,n,AGI(MonAgi.agi)


qui se lancera, dans cet exemple, lorsque tu raccrocheras après avoir obtenu le message msgack.

stepatchin
25/11/2010, 12h04
je vais plutot utiliser le AGI c pas mal comme ca je pourrai composer mon message acquitement en ajoutant des details (reference date ..) et FTP apres
merci a vous :)

stepatchin
25/11/2010, 12h57
peux-je abuser un peu et demander un petit coup de main pour comprendre :D, j'ai trouver en cherchant ca:

[macro-localcallout]
exten => s,1,Dial(${ZAP/1/${ARG1},,T)
exten => s,n,NoOp( Dial Status: ${DIALSTATUS})
exten => s,n,Goto(s-${DIALSTATUS},1)

exten => s-NOANSWER,1,Hangup
exten => s-CONGESTION,1,Congestion
exten => s-CANCEL,1,Hangup
exten => s-BUSY,1,Busy
exten => s-CHANUNAVAIL,1,SetCallerId(${CALLERIDNUM})
exten => s-CHANUNAVAIL,2,Dial(SIP/sippeer/${LOCALAREACODE}${ARG1},,T)

D'aprés ce que j'ai compris, selon le statut de l'appel il fait quelque chose mais les deux derniere j'ai pas compris a quoi il serve (CHANUNAVAIL c pour les munero invalide)

J'ai fait un petit test pour voir si ca marche

exten => s,1,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,n,Goto(s-${DIALSTATUS},1)

exten => s-NOANSWER,1,Hangup
exten => s-NOANSWER,2,system(echo -e "resultat = injoignable" >> /tmp/ConvertFile/retour.txt)
exten => s-NOANSWER,3,AGI(/tmp/ConvertFile/test_2.agi)

exten => s,n,Answer
exten => s,n,Wait(1)
....


mais ca marche pas
merci

ffossard
25/11/2010, 21h11
mais ca marche pas

On est bien avancé avec ça ...

Regarde ce qui se passe dans ta CLI, il faut déboguer ligne par ligne, voir où ça échoue, puis rajouter des tests afin de savoir pourquoi.

stepatchin
26/11/2010, 10h03
Bon j'ai cherche toute la nuit hier et j'ai pas avancé pour autant :)

sinon ce matin j'ai fais un test : lancement d'un appel auto mais j'ai pas repondu normalement la NOANSWER devrait s'appliquer mais non, voila le CLIdebeug :

exten => s,1,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,n,Goto(s-${DIALSTATUS},1)

exten => s-NOANSWER,1,Hangup
exten => s-NOANSWER,2,system(echo -e "resultat = injoignable" >> /tmp/ConvertFile/retour.txt)
exten => s-NOANSWER,3,AGI(/tmp/ConvertFile/test_2.agi)

et apres plus rien :s bizarre

voila la dialplan complet (j'espere qu'il ya pas de faute)

exten => s,1,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,n,Goto(s-${DIALSTATUS},1)

exten => s-NOANSWER,1,Hangup
exten => s-NOANSWER,2,system(echo -e "resultat = injoignable" >> /tmp/ConvertFile/retour.txt)
exten => s-NOANSWER,3,AGI(/tmp/ConvertFile/test_2.agi)

exten => s,n,Answer
exten => s,n,Wait(1)
exten => s,n(boucle),Background(outboundmsgs/Msgvocal,m)
exten => s,n,Goto(boucle)


exten => 1,1,Goto(boucle) ; replay message
exten => 2,1,Goto(msgack,s,1) ; acknowledge message
exten => 3,1,Goto(msgnoack,s,1) ; acknowledge message
exten => i,1,Playback(outboundmsgs/erreur)
exten => i,n,Goto(s,5)

exten => t,1,Playback(outboundmsgs/byefr)
exten => t,2,Hangup

F6HQZ
26/11/2010, 10h37
Bonjour,

DIALSTATUS ne marche qu'après une instruction DIAL puisque c'est une variable qui vient en retour de cette application.
Où donc est-elle dans ce dernier listing du Dialplan annoncé "complet" ?
Il vaudrait mieux copier l'ensemble du fichier extensions.conf, non ?

Cordialement,
Francois

stepatchin
26/11/2010, 11h11
Y pas Dial ici, car c un system demission d'appel auto, l'appel est fait dans un script donc pas de dial, mais est tu sure que le DIALSTATUS ne marche qu'avec Dial ????

ffossard
26/11/2010, 14h41
Oui c'est certain.

Mettez des balises [ CODE] [ /CODE] autour de votre code, ça sera plus lisible! (dans la barre d'édition, c'est un bouton "#" sur la droite)

A ce niveau si on a pas l'ensemble des données, on ne pourra pas vous aider.

stepatchin
26/11/2010, 15h47
Ceci est le extensions_custum.conf , la ou j'ai tout ecrit


[from-internal-custom]
exten => 1234,1,Playback(demo-congrats) ; extensions can dial 1234
exten => 1234,2,Hangup()
exten => h,1,Hangup()
include => custom-recordme
include => test-vocal
include => outboundmsg1
include => outboundmsg2
include => msgack
include => msgnoack

[custom-recordme]
exten => 5678,1,Wait(2)
exten => 5678,2,Record(/var/lib/asterisk/sounds/outboundmsgs/msg4:gsm)
exten => 5678,3,Wait(2)
exten => 5678,4,Playback(/var/lib/asterisk/sounds/outboundmsgs/msg4)
exten => 5678,5,Wait(2)
exten => 5678,6,Hangup

[outboundmsg1]
exten => s,1,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,2,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,3,Answer
exten => s,4,Wait(1)
exten => s,5(boucle),Background(outboundmsgs/Msgvocal,m)
exten => s,6,Goto(boucle)
exten => 1,1,Goto(s,5) ; replay message
exten => 2,1,Goto(msgack,s,1) ; acknowledge message
exten => 3,1,Goto(msgnoack,s,1) ; acknowledge message
exten => i,1,Playback(outboundmsgs/erreur)
exten => i,n,Goto(s,5)
exten => t,1,Playback(outboundmsgs/byefr)
exten => t,2,Hangup

[outboundmsg2]
exten => s,1,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Hangup
exten => s-NOANSWER,2,system(echo -e "resultat = injoignable" >> /tmp/ConvertFile/retour.txt)
exten => s-NOANSWER,3,AGI(/tmp/ConvertFile/test_2.agi)
exten => s,n,Answer
exten => s,n,Wait(1)
exten => s,n(boucle),Background(outboundmsgs/Msgvocal,m)
exten => s,n,Goto(boucle)


exten => 1,1,Goto(boucle) ; replay message
exten => 2,1,Goto(msgack,s,1) ; acknowledge message
exten => 3,1,Goto(msgnoack,s,1) ; acknowledge message
exten => i,1,Playback(outboundmsgs/erreur)
exten => i,n,Goto(boucle)
exten => t,1,Playback(outboundmsgs/byefr)
exten => t,2,Hangup

[msgack]
exten => s,1,Playback(outboundmsgs/byefr)
exten => s,n,NoOp(Ecriture dans le fichier retour.txt)
exten => s,n,Hangup()
exten => h,1,system(echo -e "resultat : 1 ok" >> /tmp/ConvertFile/retour.txt)
exten => h,n,AGI(/tmp/ConvertFile/test_2.agi)

[msgnoack]
exten => s,1,Playback(outboundmsgs/negatif)
exten => s,n,Playback(outboundmsgs/byefr)
exten => s,n,NoOp(Ecriture dans le fichier retour.txt)
exten => s,n,Hangup()
exten => h,1,system(echo -e "resultat : 1 no ok" >> /tmp/ConvertFile/retour.txt)
exten => h,n,AGI(/tmp/ConvertFile/test_2.agi)


Dans la CLI ya que ca (pour un appel sans reponse)



[root@localhost asterisk]# asterisk -r
Asterisk 1.6.2.14, Copyright (C) 1999 - 2010 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
================================================== =======================
Connected to Asterisk 1.6.2.14 currently running on localhost (pid = 2472)
Verbosity is at least 3
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
-- Attempting call on SIP/4000 for s@outboundmsg1:1 (Retry 1)
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
== Manager 'admin' logged on from 127.0.0.1
== Manager 'admin' logged off from 127.0.0.1
localhost*CLI> exit

_AK_
27/11/2010, 22h07
j'ai édité ton message pour les balises codes, il ne faut pas mettre d'espace sinon elles ne sont pas interprétées.

stepatchin
29/11/2010, 10h52
Bonjour
Alors pas de réponse sur le DIALSTATUS ??? Il faut l'utiliser seulement qu'avec DIAL ?? pour ma part tout les exemples que j'ai trouver yavait toujours un DIAL avant du coup ca marchera pas avec mon exemple :confused:

sunny
29/11/2010, 11h11
http://www.voip-info.org/wiki/view/Asterisk+variable+DIALSTATUS

essai de lire attentivement cette doc. Il est écris que ceci à un moment:
${HANGUPCAUSE}

It may be possible to get a more detailed response by checking the variable ${HANGUPCAUSE}.
See Asterisk variable HANGUPCAUSE
Note: Asterisk 1.8 will allow to read SIP response codes in the dialplan via {HASH(SIP_CAUSE,<channel-name>)}

je pense que cela pourrait t'aider. Ceci étant, il me semble bien que pour avoir des informations sur un appel, il faut au moins un dial, pour faire un appel justement.

Ceci étant, j'apporte une aide, mais je ne suis pas très calé sur la chose...

stepatchin
29/11/2010, 12h11
J'ai bien lu, cassez interresant mais bon j'ai pas vraiment compris comment l'utiliser, telement de données telement de lignes je me perd (deja que j'ai une bonne centaine de pages PHP coté a mettre en place plus les dixièmes de serveurs a installer et tester pour la prod du coup ses codes j'arrive pas trop a suivre)
Une petite explication rapide pour me mettre sur le chemin ;)
merci

stepatchin
01/12/2010, 10h04
Bonjour
Pas d'idées pour le DialStatus ??
Limite si ca marche pas je vais me tourner vers un script qui vérifie s'il y a une touche digit de choisi sinon c considère comme occupé ou non répondu

Allez merci a tous ;)

skyman
08/12/2010, 16h44
Bonjour
Pas d'idées pour le DialStatus ??
Limite si ca marche pas je vais me tourner vers un script qui vérifie s'il y a une touche digit de choisi sinon c considère comme occupé ou non répondu

je ne sais pas si ton message toujours d'actualité, mais j'ai l'impression que tu confond deux choses : le 'dialstatus' et le 'failed'.
1) le 'dialstatus' qui est lié à l'ordre dial() c'est a dire un appel généré dans ton code Asterisk.
perso je l'utilise comme cela :

[Debut]
exten => s,1,Noop(emission d'appel)
exten => s,n,Dial(SIP/0XXXXXXX@fournisseur,60,rg)
exten => s,n,Goto(s-${DIALSTATUS},1)

; le correspondant a raccrocher avant le connecte
exten => s-ANSWER,1,Playback(bye)
exten => s-ANSWER,n,Hangup()

; le correspondant n'a pas decrocher
exten => s-.,1,Goto(Repondeur,s,1)

; le connecte a raccrocher avant le correspondant
exten => h,1,NoOp(Raccrochage)

2) le 'failed' qui correspond a un appel emis par fichier call :

[Accueil] ; le bloc appele dans le fichier call
exten => _X.,1,Wait(1)
exten => _X.,n,Goto(suite,${EXTEN},1)

; si personne ne repond ou busy
exten => failed,1,Noop(Injoignable)

en esperant que ca t'aide.

stepatchin
15/12/2010, 12h22
Merci Pour ton explication
J'ai essayer de récupérer la cause de l'echec de l'appel avec l'extension "Failed" en utilisant un truc simple


exten => failed, 1, system(echo -e $REASON >> chemin/fichier.log


Mais ca marche pas, coté CLI ca donne ca (pour un appel vers une personne occupé par exemple) :



-- Got SIP response 486 "Busy Here" back from 192.168.2.22
-- Executing [failed@outboundmsg2:1] System("OutgoingSpoolFailed", "echo -e $REASON >> /tmp/ConvertFile/fichier.log") in new stack
-- Auto fallthrough, channel 'OutgoingSpoolFailed' status is 'UNKNOWN'
-- Attempting call on SIP/5000 for s@outboundmsg2:1 (Retry 1)


et j'ai un petite question par rapport a un AGI, si par exemple je veux utiliser $REASON comme paramètre dans un AGI je fais ca, ca marcherai ????



exten => failed, 1, AGI(monagi.agi | $REASON)

ffossard
15/12/2010, 13h21
et j'ai un petite question par rapport a un AGI, si par exemple je veux utiliser $REASON comme paramètre dans un AGI je fais ca, ca marcherai ????



exten => failed, 1, AGI(monagi.agi | $REASON)


Comme toute variable tu peux la passer en paramètre à un agi.
Affiche le contenu de ta variable dans le dialplan avec un noop() avant, pour vérifier ce qu'elle contient.

stepatchin
15/12/2010, 14h42
Merci pour l'info, j'ai fait "failed,1, NoOp($REASON)" mais ca donnait ca :



-- Attempting call on SIP/5000 for s@outboundmsg2:1 (Retry 1)
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Got SIP response 486 "Busy Here" back from 192.168.2.22
> Channel SIP/5000-00000009 was never answered.
-- Executing [failed@outboundmsg2:1] NoOp("OutgoingSpoolFailed", "$REASON") in new stack
-- Auto fallthrough, channel 'OutgoingSpoolFailed' status is 'UNKNOWN'


Ca na rien afficher, alors qui devait faire : NoOP ( la raison) ici Busy, je vais essayer d'écrire l'AGI qui ,selon la raison de la non réponse ,fait des rappels ou non et je vais voir si la variable passe ou non

cedricscha
15/12/2010, 14h54
euh, tu ne devrait pas utiliser plutot : ${REASON}

stepatchin
15/12/2010, 16h58
Mrd telment enervé que j'ai oublié ca merci beaucoup , il me reste juste a faire mon petit AGI ou DeadAGI je sais pas, c juste pour faire rappeller la personne si £REASON est égal (0 ou...ou 8)
le script est trés simple


#!/bin/bash
EtatLigne=$1
if [ $EtatLigne -eq "0" ] || [ $EtatLigne -eq "1" ] || [ $EtatLigne s-eq "3" ]|| [ $EtatLigne -eq "5" ] || [ $EtatLigne -eq "8" ] ; then
./test_1.sh;
fi


et coté Dialplan j'ai mis ca :


exten => failed,1,AGI(/tmp/ConvertFile/script_test.agi |${REASON})

Merci

stepatchin
21/11/2011, 12h06
Bonjour a tous les ami
ca fait longtemps que je me suis pas connecte pour avoir vos conseils ;)
je me remet sur Asterisk encore une fois.
Mon soucis ce toujours le Auto call out, si je met : +336XXXXXXXX ca marche pas alors qu'avec 06XXXXXXXX ca marche.
Y a il un config spécial a faire pour des dial Plan ou bien des dial patters .?
Merci

cedricscha
21/11/2011, 12h09
Cole ce qu'il se passe dans la CLI pendant un appel qui ne fonctionne pas.

stepatchin
21/11/2011, 12h24
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
> Channel SIP/SPA400-00000019 was answered.
-- Executing [s@outboundmsg11:1] Set("SIP/SPA400-00000019", "TIMEOUT(digit)=5") in new stack
-- Digit timeout set to 5.000
-- Executing [s@outboundmsg11:2] Set("SIP/SPA400-00000019", "TIMEOUT(response)=10") in new stack
-- Response timeout set to 10.000
-- Executing [s@outboundmsg11:3] Wait("SIP/SPA400-00000019", "10") in new stack
-- Executing [s@outboundmsg11:4] Answer("SIP/SPA400-00000019", "") in new stack
-- Executing [s@outboundmsg11:5] BackGround("SIP/SPA400-00000019", "/tmp/ConvertFile/Son/Message_1") in new stack
-- <SIP/SPA400-00000019> Playing '/tmp/ConvertFile/Son/Message_1.slin' (language 'en')
-- Executing [s@outboundmsg11:6] WaitExten("SIP/SPA400-00000019", "10") in new stack
== Spawn extension (outboundmsg11, s, 6) exited non-zero on 'SIP/SPA400-00000019'
-- Executing [h@outboundmsg11:1] System("SIP/SPA400-00000019", "echo -e "echec" >> /tmp/ConvertFile/retour.txt") in new stack
-- Executing [h@outboundmsg11:2] DeadAGI("SIP/SPA400-00000019", "/tmp/ConvertFile/script_retour.agi") in new stack
-- Launched AGI Script /tmp/ConvertFile/script_retour.agi
-- <SIP/SPA400-00000019>AGI Script /tmp/ConvertFile/script_retour.agi completed, returning 0
-- Attempting call on SIP/SPA400/+33XXXXXXXXX for s@outboundmsg11:1 (Retry 1)

stepatchin
21/11/2011, 12h27
je pense le probleme est ici

== Spawn extension (outboundmsg11, s, 6) exited non-zero
peu etre ca vient de la outbound routes je l'ai configuré de la sorte :

0|.
j'ai meme testé ca :


0|.
+|.

mais ca na pas marché

jean
21/11/2011, 15h39
C'est un pbm de dialplan et pas de appel automatique

de mémoire, le + est pas franchement autorisé en SIP, et en tous cas, souvent mal supporté par les fournisseurs

il faut que ton client numerote en 00336 et pas +336

sinon; il faut essayer une regle genre exten => _+.,1,Goto(00${EXTEN:1}) mais je suis pas sur que * accepte le +