PDA

Voir la version complète : AMI & Asterisk



asteriskAGI
01/04/2014, 00h44
Salut,

Je cherche à réaliser un programme python (depuis une machine 1) interagissant avec manager.conf (sur une autre machine 2) afin de pouvoir effectuer des appels entre deux soft phones (x-lite) (chacun sur une machine différente).
Après une longue recherche, j'ai effectué le programme suivant (en m'appuyant sur des scripts trouvés sur le net):

from asterisk import manager
import sys,time

m = manager.Manager()
try:
resp = m.connect(host='192.168.129.130')
except manager.ManagerSocketException, e:
print "Pb de connexion au asterisk:",e
sys.exit(1)

try:
resp = m.login(username='admin', secret='secret')
except manager.ManagerAuthException, e:
print "Login ou password incorrect:",e
sys.exit(1)

m.originate(channel=SIP/300, exten=301, context='default', priority='1', caller_id=301)

m.logoff()
m.quit()


En l’exécutant, j'obtiens l'erreur suivante: NameError: name 'managerSocketException' is not defined
(ma version de Python est 2.7.4, je travaille sur Ubuntu )

J'aimerais tant vous écouter, vos suggestions (Je suis nouvelle dans le domaine ...)
Grand merci

asteriskAGI
02/04/2014, 05h55
Alors je donne plus de détail, j'ai configuré le fichier manager comme suivant:

[general]
enabled=yes
port=5038
bindaddr=127.0.0.1

[admin]
secret=secret
deny=0.0.0.0/0.0.0.0
permit=192.168.129.140/255.255.255.255 (l'@ de la machine contenant le pge python)
permit=127.0.0.1/255.255.255.0
read=system,call,log,verbose,command,agent,user
write=system,call,log,verbose,command,agent,user

Merci de me donner un coup de main SVP

lstep
02/04/2014, 08h59
Bonjour,
Où as-tu trouvé ce module ? C'est tellement vieux que je n'en ai même plus de trace sur mon disque :-)
Je te recommande d'utiliser pyajam plutôt, il est beaucoup plus à jour, et fonctionne avec les asterisk récents (1.6 et 1.8) vu que la fonction originate n'a été introduite qu'après Asterisk 1.6.2 il me semble (voir http://www.voip-info.org/wiki/view/Asterisk+cmd+Originate).
Pour faire ton originate, utilise la méthode 'command()' de Pyajam (http://devedge.bour.cc/resources/pyajam/doc/index.html?highlight=command#pyajam.Pyajam.command ) en spécifiant les paramètres détaillés dans http://www.voip-info.org/wiki/view/Asterisk+cmd+Originate
Si tu récupère la toute dernière version de Pyajam (qui a le support d'Asterisk 1.8), tu auras directement la fonction 'dial' (porte mal son nom :-) qui fait un originate. https://github.com/gbour/PyAjam/commit/e74c10c11c62e9498634a83a6e909e130d2a8188


Salut,

Je cherche à réaliser un programme python (depuis une machine 1) interagissant avec manager.conf (sur une autre machine 2) afin de pouvoir effectuer des appels entre deux soft phones (x-lite) (chacun sur une machine différente).
Après une longue recherche, j'ai effectué le programme suivant (en m'appuyant sur des scripts trouvés sur le net):

from asterisk import manager
import sys,time

m = manager.Manager()
try:
resp = m.connect(host='192.168.129.130')
except manager.ManagerSocketException, e:
print "Pb de connexion au asterisk:",e
sys.exit(1)

try:
resp = m.login(username='admin', secret='secret')
except manager.ManagerAuthException, e:
print "Login ou password incorrect:",e
sys.exit(1)

m.originate(channel=SIP/300, exten=301, context='default', priority='1', caller_id=301)

m.logoff()
m.quit()


En l’exécutant, j'obtiens l'erreur suivante: NameError: name 'managerSocketException' is not defined
(ma version de Python est 2.7.4, je travaille sur Ubuntu )

J'aimerais tant vous écouter, vos suggestions (Je suis nouvelle dans le domaine ...)
Grand merci

asteriskAGI
02/04/2014, 19h58
Et oui je l'ai bien dit je suis nouvelle ici, n'importe quelle bêtise me serait pardonnable, encore plus un module ancien .... ;)
Dans toute la documentation que j'ai faite, jamais avoir vu pyajam, je vais voir avec, faire le test, et vous faire le retour

Je n'oublie pas de te remercier, Istep, pour le temps consacré à me répondre :)