Voir la version complète : Allopass
Bonjour,
Je suis nouveau sur asterisk.
Je souhaiterai créer un système similaire à allopass avec asterisk.
j'ai réussi à faire dialplan, mais, je ne sais pas comment faire en sorte que lorsque j'appelle mon service, celui-ci me génère un code automatiquement.
Si qqun sait comment faire, je suis très intéressé.
Cordialement.
Bonjour
Recherche du coté de AGI. Tu pourra créer un code php ou perl qui dialogera avec l'asterisk
oula oula,
peux-tu m'en dire un peu plus, , et des liens, si possible, car, je ne sais malheureusement pas ce que veut dire AGI.
Désolé, je suis nouveau, et je débute ^^
Bonjour
Déjà, il faut maitriser un langage, du genre php. Si tu veux faire comme allopass, j'imagine que tu a un site web, donc ça devrais aller. Pour l'explication détaillée d'agi, tu peux chercher sur internet, je vais cependant te montrer un exemple minimal pour voir le principe
Dans mon dialplan asterisk j'ai
[ext-did-custom]
exten => 0524573708,1,Macro(user-callerid,)
exten => 0524573708,n,AGI(random.php) ;
Quand quelqu'un appelle le 0524573708 ( tu peux appeler si tu veux voir ), ça va exécuter mon code php random.php.
Si tu regarde mon exemple,
Ligne 37/38 on déclare l'agi est on décroche.
Ligne 41 on récupère le numéro de l’appelant.
Ligne 18/19 on prononce des numéros.
Ligne 46 on lit un fichier audio
Ligne 54 ça raccroche
Le reste c'est du php classique
1 #!/usr/bin/php -q
2 <?php
3
4 function lire_numero( $agi, $numero ) {
5 $longeur_numero=strlen( $numero ) ;
6 $i = 0 ;
7
8 while ( $i < $longeur_numero )
9 {
10 // si numero les deux chiffres sont 05, l'asterisk doit dire zero cinq
11 $sub2chiffres=substr( $numero, $i , 2 ) ;
12 $sub1chiffre=substr( $numero, $i , 1 ) ;
13 $sub1chiffresuivant=substr( $numero, $i + 1 , 1 ) ;
14
15 if ( $sub1chiffre == "0" )
16 {
17 $agi->say_number(intval($sub1chiffre));
18 $agi->say_number(intval($sub1chiffresuivant));
19 }
20 else {
21 $agi->say_number(intval($sub2chiffres));
22 }
23
24 $i = $i + 2 ;
25
26 usleep(600000);
27
28 }
29
30 }
31
32
33 // fin des fonctions
34
35 require("phpagi.php" );
36
37 $agi = new AGI() ;
38 $agi->answer();
39
40
41 $numero = $agi->request[agi_callerid];
42 $code = rand(100000,999999);
43
44 sleep(1);
45
46 $agi -> stream_file('welcome' );
47 lire_numero( $agi, $numero ) ;
48
49 $agi -> stream_file('vm-password');
50 lire_numero( $agi, $code ) ;
51
52
53 $agi -> stream_file('goodbye') ;
54 $agi->hangup();
55 ?>
Pour les fonctions ( identique en php qu'en perl ) http://search.cpan.org/~jamesgol/asterisk-perl/lib/Asterisk/AGI.pm
hello,
Même pas besoin d'agi : tu peux utiliser la fonction RAND.
Exemple :
exten = 7,1,Set(magic=${RAND(00,99)})
Pour plus d'info :
https://wiki.asterisk.org/wiki/display/AST/Function_RAND
asterisk*CLI> core show function RAND
Il est possible de faire quelques trucs via asterisk directement, je pense cependant que ce n'est pas adapté dés que l'on veut faire un algorithme un peu évolué avec des conditionnelles et boucles imbriquées, un lien avec une base mysql etc...
Ok,
merci beaucoup.
Je vais testé tout cela ce soir et demain matin.
par contre, après, comment se fait la validation du code généré?
cordialement.
Pas faux, tout depend ce ce que tu veux/sais faire.
Ce qui est sur c'est que lancer une agi prend plus de resource que du dialplan.
Pour de meilleurs performances, il vaux mieux utiliser FastAGI.
J'ai donné une piste pas une solution finie.
On peut imaginer que les codes générées soient envoyés dans une base mysql.Le site payant serait lié a cette même base, l'utilisateur du site entre le code qu'il a eu par téléphone, tu vérifie si le code est bien dans la base, Mais là c'est une question de développement pure, ça n'a plus rien avoir avec asterisk
Bonjour,
Merci pour toutes vos réponses, je viens d'avoir du temps pour m'y mettre....
désolé donc, ne pas vous avoir tous remercier plus tôt, j'en suis vraiment navré.
juste une question tanguyd, le code PHP, je mets à quel endroits :gratgrat::confused:
Encore merci pour vos réponses!
Bonjour,
Déjà, il faut maitriser un langage, du genre php. Si tu veux faire comme allopass, j'imagine que tu a un site web, donc ça devrais aller. Pour l'explication détaillée d'agi, tu peux chercher sur internet, je vais cependant te montrer un exemple minimal pour voir le principe
je crois que Tanguyd vous a indique la marche a suivre. Ensuite AGI veut dire "Asterisk Gateway Interface" donc il faut peut etre 'googler' ou
voir http://www.voip-info.org/wiki/view/Asterisk+AGI.
le repertoire par defaut est /var/lib/asteris/agi-bin repertoire ou se trouvera le script PHP ou autre.....
A+
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. Tous droits réservés