D'après ce que j'entends de vos symptômes, il ne semble pas que c'est spécifiquement un problème d'Asterisk, mais pourrait être un problème avec votre script. Voici un certain nombre de conseils sur la façon dont je voudrais déboguer une application sans aucune connaissance de ce qui se passe dans les coulisses du script AGI lui-même ...
Premièrement, AGI Script script.php completed, returning 4
signifie que votre script se termine sans un code d'état de sortie propre . returning 0
est ce que vous aimeriez voir. Vous pouvez voir le dernier code d'état de sortie à l'invite bash en exécutant un script, puis en vérifiant le code d'état avec la variable $?
. Comme ça:
[[email protected] ~]$ ./script.php
[[email protected] ~]$ echo $?
0
Asterisk vous dit ce qui est arrivé à votre script. Tout ce qui n'est pas zéro est "quelque chose ne va pas ici". Généralement, vous pouvez les personnaliser à votre goût, donc spécifiquement 4, je ne suis pas sûr.
Une chose que vous voulez faire est activer le débogage AGI comme ceci:
host*CLI> agi set debug on
Ensuite, exécutez votre script, et voyez si vous pouvez trouver que votre script php est crachait toute erreur.
Une autre recommandation que j'aurais est de vous assurer que votre php est à votre syslog exploitation forestière afin que vous puissiez trouver des erreurs dans/var/log/messages. Vous pouvez le faire en mettant dans votre /etc/php.ini
cette ligne:
error_log = syslog
Enfin, pour essayer de reproduire l'erreur, je suggère d'utiliser une boîte de développement, et l'origine d'un tas d'appels pour vous-même, et de construire un script au create a bunch of "call files".
est ici un fichier d'appel pour vous aider à démarrer:
Channel: LOCAL/[email protected]
MaxRetries: 2
RetryTime: 60
WaitTime: 30
Application: Wait
Data: 30
Lorsque vous avez créé un fichier, le déplacer vers /var/spool/asterisk/outgoing
(déménagement est important, vous voulez que le déplacement du pointeur, car astérisque peut prendre le fichier trop tôt si vous écrivez dans ce répertoire d'abord).
Vous pouvez également lancer un appel sur une extension de la CLI:
host*CLI> channel originate LOCAL/[email protected] application Wait 5
Vous pouvez également utiliser d'autres options dans le fichier d'appel, comme CallerID: John Doe <8005551212>
afin de fournir des données intéressantes à votre Application AGI pendant que vous créez des tests pour répliquer le problème.
Je vous remercie pour votre réponse détaillée, mais je ne pense pas que ce problème est lié au script, car il ne se passe que pour 3% des appels. J'ai déjà essayé d'exécuter le script directement, activé le débogage agi, activé le journal des erreurs PHP dans le fichier, etc. Aujourd'hui, j'ai trouvé cette discussion: http://lists.digium.com/pipermail/asterisk-users/2011-September /266522.html et je pense que je suis confronté au même problème. Je vais essayer d'utiliser System() au lieu de AGI(). Je vous ferai connaître les résultats. – k4h
Quelle version utilisez-vous?/Avez-vous essayé une autre version? – dougBTV
En outre, consultez ce rapport de bogue/correctif, se rapportant à la version 1.8.7 - https://issues.asterisk.org/jira/browse/ASTERISK-18811 – dougBTV