PDA

Voir la version complète : Dial Plan et PHPAGI



laurentbzh
12/06/2015, 15h17
Bonjour,

Le projet suivant m'a été confié :

Je dois mettre en place un script qui interroge un CRM ( Dolibarr ) lorsque l'entreprise reçoit un appel. Ce script devra être utilisé uniquement pour les appels arrivants sur 2 numéros internes précis. ( ex : SIP/501 SIP/502 )
Le but final étant d'afficher dans Dolibarr une popup avec toutes les infos du client qui appelle ( informations administratives, devis, contrats etc etc ).

Si j'ai bien compris le concept de fonctionnement d'asterisk, je dois donc créer ce que vous appelez un Dial Plan pour exécuter un script AGI.
J'ai donc besoin de votre aide pour créer ce dialplan. ( ps : je pense être capable de me débrouiller seul pour la partie php, mais trop de notions m’échappent quand au DIALPLAN )

Je reste à votre entière disposition pour d’éventuels renseignements complémentaires et suis évidemment ouvert à toutes suggestions.

Cordialement,

Ps : une fois la solution trouvée, je m engage à vous faire un tutoriel complet. Je pense que cela pourra servir à bcp de monde.
Ps2 : Module existant (https://www.dolistore.com/fr/crm-gestion-relation-client/149-Calling---Gestion---suivi-des-appels-t--l--phonique-voip.html) : j'ai connaissance de l existence de ce module, mais pas de possibilités de le tester sans le payer et la doc proposée ne permet pas d être certain qu'il remplisse les objectifs que l'on m a fixe. Donc si quelqu'un à un retour sur ce module, je suis également preneur.

tanguyd
12/06/2015, 16h55
Bonjour

Y'a t'il un asterisk fonctionel avec un phpagi fonctionnel ? Ce qui est le cas par exemple avec freepbx.

Comment est le dialplan actuel ?

Je pense qu'il faut ajouter ce genre de ligne au debut du dialplan du poste 501


exten => MonNumero,1,AGI(script.php) ;
exten => MonNumero,n,SIP/MonNumero

On suppose que le script php est dans /usr/share/asterisk/agi-bin/

laurentbzh
12/06/2015, 17h28
Y'a t'il un asterisk fonctionel avec un phpagi fonctionnel ? Ce qui est le cas par exemple avec freepbx.


L'Asterisk est en production, fonctionne correctement.

[directories]
astetcdir => /etc/asterisk
astmoddir => /usr/lib64/asterisk/modules
astvarlibdir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk

[options]
transmit_silence_during_record = yes
languageprefix=yes
execincludes=yes




/etc/asterisk/phpagi.conf
/usr/src/freepbx-12.0.45/amp_conf/agi-bin/phpagi-asmanager.php
/usr/src/freepbx-12.0.45/amp_conf/agi-bin/phpagi.php
/usr/src/freepbx-12.0.45/amp_conf/astetc/phpagi.conf
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/framework/amp_conf/agi-bin/phpagi-asmanager.php
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/framework/amp_conf/agi-bin/phpagi.php
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/framework/amp_conf/astetc/phpagi.conf
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/fw_langpacks/mo/bg_BG/phpagiconf.mo
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/fw_langpacks/mo/es_ES/phpagiconf.mo
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/fw_langpacks/mo/fr_FR/phpagiconf.mo
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/fw_langpacks/mo/he_IL/phpagiconf.mo
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/fw_langpacks/mo/it_IT/phpagiconf.mo
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/fw_langpacks/mo/ja_JP/phpagiconf.mo
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/fw_langpacks/mo/ru_RU/phpagiconf.mo
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/fw_langpacks/mo/sv_SE/phpagiconf.mo
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/fw_langpacks/mo/zh_CN/phpagiconf.mo
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/superfecta/agi/phpagi-asmanager.php
/usr/src/freepbx-12.0.45/amp_conf/htdocs/admin/modules/superfecta/agi/phpagi.php
/var/lib/asterisk/agi-bin/phpagi-asmanager.php
/var/lib/asterisk/agi-bin/phpagi.php
/var/www/html/admin/modules/superfecta/agi/phpagi-asmanager.php
/var/www/html/admin/modules/superfecta/agi/phpagi.php


Mon problème est justement de trouver le dialplan actuel.
Dans mon extension.conf j'ai cela :


[from-sip-external]
exten => _.,1,NoOp(Received incoming SIP connection from unknown peer to ${EXTEN})
exten => _.,n,Set(DID=${IF($["${EXTEN:1:2}"=""]?s:${EXTEN})})
exten => _.,n,Goto(s,1)
exten => s,1,GotoIf($["${ALLOW_SIP_ANON}"="yes"]?checklang:noanonymous)
exten => s,n(checklang),GotoIf($["${SIPLANG}"!=""]?setlanguage:from-trunk,${DID},1)
exten => s,n(setlanguage),Set(CHANNEL(language)=${SIPLANG})
exten => s,n,Goto(from-trunk,${DID},1)
exten => s,n(noanonymous),Set(TIMEOUT(absolute)=15)
exten => s,n,Log(WARNING,"Rejecting unknown SIP connection from ${CHANNEL(recvip)}")
exten => s,n,Answer
exten => s,n,Wait(2)
exten => s,n,Playback(ss-noservice)
exten => s,n,Playtones(congestion)
exten => s,n,Congestion(5)
exten => h,1,Hangup
exten => i,1,Hangup
exten => t,1,Hangup

Mais je ne suis pas convaincu que cela soit le bon context.

En tout cas, merci de t être pencher sur mon cas, et n’hésite pas à me demander des renseignements complémentaires. Mes connaissances en asterisk sont limitées, mais je pense pouvoir trouver les réponses à tes interrogations.

tanguyd
12/06/2015, 17h40
Ok donc c'est du freepbx

Je pense qu'un truc du genre dans /etc/asterisk/extensions_custom.conf devrait aller ( dans l'exemple 1501 est l'alias qui appel 501 avec le script )



[from-internal-custom]
exten => 1501,1,Macro(user-callerid,)
exten => 1501,n,AGI(script.php) ;
exten => 1501,n,Dial(SIP/501)


Pense à faire un "dialplan reload" dans le cli ou recharger la conf depuis l'interface de freepbx.

laurentbzh
12/06/2015, 19h59
Merci beaucoup, je m en vais tester tout cela :)

Berthe
02/07/2015, 04h53
Salut Laurentbzh au faite j'ai un projet similaire au tien je dois develloper une interface graphique en php pour asterisk
mais je ne sais pas comment mettre en liaison les deux entités a savoir le programme php et asterisk.
J'ai vraiment besoin d'aide toutes les suggestions seront les bienvenues.

jean
03/07/2015, 15h04
xivo fait très bien ce genre de chose.

sinon, la difficulté (loin d'être insurmontable) est d'associer un appel avec le poste d'un agent, et par la suite, sur le poste de l'agent, d'avoir un petit bout de code qui tourne, et qui attend que asterisk lui pousse l'information à popper