Rechercher : dans
Par :

Probleme - Trixbox - AGI - PHP - IPPI

Dernière réponse le 29 avr 2008 à 14:52:34 Mopade, le 28 avr 2008 à 10:36:58 
 Signaler ce message aux modérateurs

Bonjour à tous,
Je viens vous demander un peu d'aide car là je suis perdu.

En fait j'ai installé trixbox en local ( Emulation sous VMware ) depuis plusieurs jour maintenant et j'ai créé des comptes SIP : 201/202/202 utilisés par des softphones ( Wengophone, X-Lite, SJPhone ). Ca marche très bien.
Ensuite j'ai créé une interface click to call qui permet de renseigner le numéro du destinataire et le script php/agi nous appelle et nous met en relation tous les 2. Ca marche très bien aussi.

J'ai récupéré un compte VoIP chez Ippi.fr et je peux maintenant appeler à l'extérieur ( j'ai configuré le trunk et les routes sortantes seulement je ne gère pas les appels entrants, je m'en fiche pour l'instant ). Ca marche très bien depuis mes softphones.

Exemple sous WengoPhone : je tape 90298065421 ( par exemple ) sachant que le 9 du début signale qu'il faut appeler à l'extérieur du réseau.


Maintenant voici le code php/agi utilisé : ( version sommaire sans les variables $_SESSION, $_POST, juste le code initial qui marche très bien en local ).

[code]
<?php
require_once('phpagi-asmanager.php');

$number1 = '201';
$number2 = '0298065421';
$asm = new AGI_AsteriskManager();
if($asm->connect())
{
$call = $asm->send_request('Originate',
array('Channel'=>"SIP/$number1",
'Context'=>'dialout-trunk',
'Priority'=>1,
'Callerid'=>$number2,
'Exten' =>$number2));
$asm->disconnect();
}
?>
/code

Et là ça ne marche pas :-S, le 201 est bien appelé ( Wengophone ) mais l'autre numéro n'est pas appellé et ça raccroche ...

Avant j'avais ça par exemple :

[code]
<?php
require_once('phpagi-asmanager.php');

$number1 = '201';
$number2 = '202';
$asm = new AGI_AsteriskManager();
if($asm->connect())
{
$call = $asm->send_request('Originate',
array('Channel'=>"SIP/$number1",
'Context'=>'default',
'Priority'=>1,
'Callerid'=>$number2,
'Exten' =>$number2));
$asm->disconnect();
}
?>
/code

Et Wengophone et X-lite étaient appelés tous les 2 et étaient mis en relation.


Avez vous une idée ?

Voici des infos Ippi.fr si ça vous aide :

[code]
*** PEER Details :
allow=g729&ilbc&ulaw&alaw
bandwidth=low
context=from-trunk
fromdomain=ippi.fr
fromuser=[IDENTIFIANT IPPI]
host=ippi.fr
insecure=very
qualify=yes
secret=[MOT DE PASSE IPPI]
type=peer
username=[IDENTIFIANT IPPI]

*** USER Details :
bandwidth=low
canreinvite=no
context=from-trunk
fromuser=[IDENTIFIANT IPPI]
qualify=no
secret=[MOT DE PASSE IPPI]
type=user
username=[IDENTIFIANT IPPI]

*** Register String :
[IDENTIFIANT IPPI]:[MOT DE PASSE IPPI]@ippi.fr/[NUM TEL IPPI]
/code


Justement je me pose la question,
Etant passé par freepbx, j'ai eu l'avantage d'avoir accès à une interface graphique mais je ne sais pas toutes les modifications que j'ai vraiment apporté dans les fichiers de configuration.

Voici tout de même leur code :

Une partie de extensions.conf :

[code]

; Customizations to this dialplan should be made in extensions_custom.conf
; See extensions_custom.conf.sample for an example
#include extensions_custom.conf

[from-trunk] ; just an alias since VoIP shouldn't be called PSTN
include => from-pstn

[from-pstn]
include => from-pstn-custom ; create this context in extensions_custom.conf to include customizations
include => ext-did-direct ; MODIFICATOIN (PL) put before ext-did to take precedence
include => ext-did
include => from-did-direct ; MODIFICATOIN (PL) for findmefollow if enabled, should be bofore ext-local
exten => fax,1,Goto(ext-fax,in_fax,1)
/code

une partie de extensions_additional.conf :

[code]

[ext-test]
include => ext-test-custom
exten => 7777,1,Goto(from-pstn,s,1)
exten => 666,1,Goto(ext-fax,in_fax,1)
exten => h,1,Macro(hangupcall,)

; end of [ext-test]


[ext-did]
include => ext-did-custom
exten => fax,1,Goto(ext-fax,in_fax,1)
exten => 0222060512,1,Set(FROM_DID=0222060512)
exten => 0222060512,n,Goto(app-blackhole,hangup,1)
exten => s,1,Noop(No DID or CID Match)
exten => s,n,Answer
exten => s,n,Wait(2)
exten => s,n,Playback(ss-noservice)
exten => s,n,SayAlpha(${FROM_DID})
exten => _[*#X].,1,Set(FROM_DID=${EXTEN})
exten => _[*#X].,n,Noop(Received an unknown call with DID set to ${EXTEN})
exten => _[*#X].,n,Goto(ext-did,s,1)

; end of [ext-did]


[ext-did-direct]
include => ext-did-direct-custom
exten => fax,1,Goto(ext-fax,in_fax,1)

; end of [ext-did-direct]


[ext-local]
include => ext-local-custom
exten => 201,1,Macro(exten-vm,novm,201)
exten => 201,n,Hangup
exten => 201,hint,SIP/201
exten => 202,1,Macro(exten-vm,202,202)
exten => 202,n,Hangup
exten => 202,hint,SIP/202
exten => ${VM_PREFIX}202,1,Macro(vm,202,DIRECTDIAL)
exten => ${VM_PREFIX}202,n,Hangup
exten => 203,1,Macro(exten-vm,203,203)
exten => 203,n,Hangup
exten => 203,hint,SIP/203
exten => ${VM_PREFIX}203,1,Macro(vm,203,DIRECTDIAL)
exten => ${VM_PREFIX}203,n,Hangup

; end of [ext-local]


[outbound-allroutes]
include => outbound-allroutes-custom
include => outrt-001-9_outside
include => outrt-002-9_outside
exten => foo,1,Noop(bar)

; end of [outbound-allroutes]


[outrt-001-9_outside]
include => outrt-001-9_outside-custom
exten => _9.,1,Macro(dialout-trunk,2,${EXTEN:1},,)
exten => _9.,n,Macro(outisbusy,)

; end of [outrt-001-9_outside]


[outrt-002-9_outside]
include => outrt-002-9_outside-custom
exten => _9.,1,Macro(dialout-trunk,2,${EXTEN:1},,)
exten => _9.,n,Macro(dialout-trunk,2,${EXTEN:1},,)
exten => _9.,n,Macro(outisbusy,)

; end of [outrt-002-9_outside]
/code

sip_additional.conf :

[code]
; do not edit this file, this is an auto-generated file by freepbx
; all modifications must be done from the web gui
register=[******]:[******]@ippi.fr/0222060512]

[201]
type=friend
secret=12345
record_out=Adhoc
record_in=Adhoc
qualify=yes
port=5060
nat=yes
mailbox=201@device
host=dynamic
dtmfmode=rfc2833
dial=SIP/201
context=from-internal
canreinvite=no
callerid=device <201>

[202]
type=friend
secret=12345
record_out=Adhoc
record_in=Adhoc
qualify=yes
port=5060
nat=yes
mailbox=202@device
host=dynamic
dtmfmode=rfc2833
dial=SIP/202
context=from-internal
canreinvite=no
callerid=device <202>

[203]
type=friend
secret=12345
record_out=Adhoc
record_in=Adhoc
qualify=yes
port=5060
nat=yes
mailbox=203@device
host=dynamic
dtmfmode=rfc2833
dial=SIP/203
context=from-internal
canreinvite=no
callerid=device <203>

[from_ippi]
username=******
type=user
secret=******
qualify=no
fromuser=******
context=from-trunk
canreinvite=no
bandwidth=low

[ippi]
username=******
type=peer
secret=******
qualify=yes
insecure=very
host=ippi.fr
fromuser=******
fromdomain=ippi.fr
context=from-trunk
bandwidth=low
allow=g729
allow=ilbc
allow=ulaw
allow=alaw
/code

J'ai essayé diverses combinaisons comme 'context'=>'from-trunk' ou 'context'=>'dialout' avec ensuite le numéro de téléphone renseigné dans $number2 ( sans le 9 pour appeler à l'extérieur ou avec ).

Je ne sais plus quoi faire.

J'ai été voir le dialplan et en analysant ce qu'il se passait,
lors de mon appel avec mon softphone qui marche nickel :
[code]
-- Executing Macro("SIP/201-09ed54d8", "dialout-trunk|2|0000000000||") in ne w stack
-- Executing Set("SIP/201-09ed54d8", "DIAL_TRUNK=2") in new stack
-- Executing Set("SIP/201-09ed54d8", "_NODEST=") in new stack
-- Executing Set("SIP/201-09ed54d8", "DIAL_NUMBER=0000000000") in new stack
-- Executing Set("SIP/201-09ed54d8", "ROUTE_PASSWD=") in new stack
-- Executing Set("SIP/201-09ed54d8", "DIAL_TRUNK_OPTIONS=tr") in new stack
-- Executing GotoIf("SIP/201-09ed54d8", "1?noauth") in new stack
-- Goto (macro-dialout-trunk,s,8)
-- Executing Set("SIP/201-09ed54d8", "GROUP()=OUT_2") in new stack
-- Executing Macro("SIP/201-09ed54d8", "user-callerid|SKIPTTL") in new stack
-- Executing NoOp("SIP/201-09ed54d8", "user-callerid: device 201") in new st ack
-- Executing GotoIf("SIP/201-09ed54d8", "0?report") in new stack
-- Executing GotoIf("SIP/201-09ed54d8", "0?start") in new stack
-- Executing Set("SIP/201-09ed54d8", "REALCALLERIDNUM=201") in new stack
-- Executing NoOp("SIP/201-09ed54d8", "REALCALLERIDNUM is 201") in new stack
-- Executing Set("SIP/201-09ed54d8", "AMPUSER=201") in new stack
-- Executing Set("SIP/201-09ed54d8", "AMPUSERCIDNAME=Mikado") in new stack
-- Executing GotoIf("SIP/201-09ed54d8", "0?report") in new stack
-- Executing Set("SIP/201-09ed54d8", "CALLERID(all)=Mikado <201>") in new st ack
-- Executing Set("SIP/201-09ed54d8", "REALCALLERIDNUM=201") in new stack
-- Executing NoOp("SIP/201-09ed54d8", "TTL: ARG1: SKIPTTL") in new stack
-- Executing GotoIf("SIP/201-09ed54d8", "1?continue") in new stack
-- Goto (macro-user-callerid,s,21)
-- Executing NoOp("SIP/201-09ed54d8", "Using CallerID "Mikado" <201>") in ne w stack
-- Executing Macro("SIP/201-09ed54d8", "record-enable|201|OUT") in new stack
-- Executing GotoIf("SIP/201-09ed54d8", "0?2:4") in new stack
-- Goto (macro-record-enable,s,4)
-- Executing DeadAGI("SIP/201-09ed54d8", "recordingcheck|20080423-133543|120 8972143.9") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/recordingcheck
/code

Maintenant j'ai mis comme context dans mon script "dialout-trunk" voici le code rendu :


[code]
> Channel SIP/201-09ed54d8 was answered.
== Starting SIP/201-09ed54d8 at dialout-trunk,XXXXXXXX,1 failed so falling back to exte n 's'
== Starting SIP/201-09ed54d8 at dialout-trunk,s,1 still failed so falling back to context 'default'
-- Executing Playback("SIP/201-09ed54d8", "vm-goodbye") in new stack
-- Playing 'vm-goodbye' (language 'en')
/code

Merci grandement d'avance, je ne sais plus quoi faire :-S

Meilleures réponses pour « Probleme Trixbox AGI PHP IPPI » dans :
PHP - Les fichiers Voir La gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
Télécharger PHP FTP Synchronizer VoirLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Introduction à PHP VoirQu'est-ce que PHP? PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

 Mopade, le 29 avr 2008 à 14:52:34

Personne n'a une idée ? :S

Répondre à Mopade