0
votes

Appels de fichiers, annuler appel si WebService le dis

J'essaie de développer un système de rappel qui fera un appel automatique pour rappeler à une personne d'un événement spécifique. Pour cela, j'utilise l'astérisque pour effectuer les appels et PHP afin de créer un fichier d'appel pour Asterisk. Je souhaite que le fichier d'appels soit exécuté 30 secondes après l'ajout. Pour ce faire, j'ai défini l'horodatage modifié dans le script PHP. Tout fonctionne bien, sauf que je veux exécuter un chèque à nouveau un service Web pour déterminer s'il est toujours pertinent d'appeler l'utilisateur.

Voici mon script PHP P>

Connected to Asterisk 13.16.0 currently running on hostname (pid = 22261)
    -- Attempting call on Local/0@remind_event for 111@remind_event:1 (Retry 1)
    -- Called 0@remind_event
    -- Executing [0@remind_event:1] NoOp("Local/0@remind_event-00000000;2", "") in new stack
    -- Executing [0@remind_event:2] Dial("Local/0@remind_event-00000000;2", "SIP/voxbeam_outbound/+467<hidden>") in new stack
  == Using SIP RTP CoS mark 5
    -- Called SIP/voxbeam_outbound/+467<hidden>
    -- SIP/voxbeam_outbound-00000000 is making progress passing it to Local/0@remind_event-00000000;2
    -- Local/0@remind_event-00000000;1 is making progress
       > 0xffa3a0 -- Probation passed - setting RTP source address to <hidden ip>:15476
    -- SIP/voxbeam_outbound-00000000 requested media update control 26, passing it to Local/0@remind_event-00000000;2
    -- SIP/voxbeam_outbound-00000000 requested media update control 26, passing it to Local/0@remind_event-00000000;2
    -- SIP/voxbeam_outbound-00000000 is ringing
    -- Local/0@remind_event-00000000;1 is ringing
    -- SIP/voxbeam_outbound-00000000 answered Local/0@remind_event-00000000;2
    -- Local/0@remind_event-00000000;1 answered
[Aug  1 12:18:15] WARNING[22326][C-00000001]: pbx.c:4414 __ast_pbx_run: Channel 'Local/0@remind_event-00000000;1' sent to invalid extension but no invalid handler: context,exten,priority=remind_event,111,1
[Aug  1 12:18:15] NOTICE[22326][C-00000001]: pbx_spool.c:460 attempt_thread: Call completed to Local/0@remind_event
    -- Channel SIP/voxbeam_outbound-00000000 joined 'simple_bridge' basic-bridge <988269c4-fbe9-439f-b0a9-22af873d5118>
    -- Channel Local/0@remind_event-00000000;2 joined 'simple_bridge' basic-bridge <988269c4-fbe9-439f-b0a9-22af873d5118>
    -- Channel Local/0@remind_event-00000000;2 left 'simple_bridge' basic-bridge <988269c4-fbe9-439f-b0a9-22af873d5118>
  == Spawn extension (remind_event, 0, 2) exited non-zero on 'Local/0@remind_event-00000000;2'
    -- Channel SIP/voxbeam_outbound-00000000 left 'simple_bridge' basic-bridge <988269c4-fbe9-439f-b0a9-22af873d5118>


0 commentaires

4 Réponses :


1
votes

Votre fichier d'appels a réessayer Param, alors il pense que l'appel a échoué et réessayez.

Vous avez 3 options ici

1) Supprimer le fichier en cas de besoin

2) Répondez à l'appel avant le raccourci.

3) Supprimer Réessayer.


11 commentaires

Cela ne dirige-t-il pas le service Web à nouveau en cas de réessayer?


Oui, ça devrait. Vérifiez le journal de débogage


Oh dans ce cas, ce doit être autre chose parce que j'ai défini le service Web pour retourner 0 toujours. A également ajouté une commande journal et il apparaît seulement une fois


Google: Débogage d'astérisque. C'est hors top ici quand même


J'ai déjà été exécuté avec Verbose sur. Il semble que l'appel réel soit fabriqué avant que le contexte se rapproche est exécuté avant d'avoir une chance de faire quoi que ce soit. Je ne sais pas si ceci est un comportement par défaut, mais je pensais pouvoir faire l'appel à l'aide d'un fichier d'appel et d'un contexte.


Si vous souhaitez contrôler la jambe d'appel sortante, vous devez utiliser local / canal, pas sip. Oui, SIP Call ne vérifiera pas votre numéro de téléphone. Pourquoi ça devrait?


Merci pour la suggestion, j'ai essayé avec local et j'ai mis à jour ma question, mais je ne peux toujours pas le faire travailler


Désolé, personne ne veut faire votre travail pour vous. Vous avez testé vos cas avant d'appeler.


Oh ça me rend triste. Donc, vous dites que ce n'est pas faisable dans l'astérisque et j'ai besoin de faire les chèques avant de créer le fichier d'appel? Il sera simple de le faire, mais vous sentirez comme réinventer la Weel puisqu'il y a déjà de la sciedulation et des tentatives avec des fichiers d'appel dans l'astérisque que j'ai besoin de faire à nouveau l'astérisque, puis


Et de clarifier. Maintenant, j'essaie juste d'appeler une NR en dehors du numéro local qui est une condition préalable à cette idée de travailler du tout.


Il est faisable d'un astérisque.



1
votes

Les fichiers d'appel sont parfaits pour la planification, mais j'utiliserais PHP AGI au lieu de DIALPLAN pour faire le côté Web.

Vous auriez le fichier d'appels à composer un extensible local avec le numéro de téléphone cible et tous les paramètres nécessaires pour interroger le service Web (ID utilisateur, e-mail, etc.). Ensuite, l'AGI exécute la demande de courbure et vous pouvez continuer à composer de l'AGI. Je suppose que ce serait plus à l'aise pour vous que le dialplan. Il enlèverait la partie "pour une raison quelconque, il fait partie de votre confusion, car vous avez un contrôle direct dans PHP sur l'appel et peut vous connecter au fichier de votre script AGI.

Vous pouvez également faire des requêtes d'API plus avancées, telles que des API externes nécessitant des jetons d'Auth, le traitement de la sortie plus complexe, etc.

Voici quelques liaisons utiles pour vous aider à démarrer:

Liens de la bibliothèque AGI (je préfère personnellement PHPAGI)

PHP CURL DOCS


0 commentaires

0
votes

Vous avez une grande aide de la communauté astérisque. Le principal problème était que deux contextes étaient nécessaires, un pour chaque étape de l'appel.

  • Un contexte pour faire appel à cadran (Message_Dial ci-dessous) LI>
  • Un autre contexte pour lire le fichier son. (message ci-dessous) li> ul>

    Voici le fichier extensions.conf qui fonctionne. Ajoutez simplement toutes les conditions dans le numéro de dialplan dans Message_Dial avant la commande DIALLE: P>

    Channel: Local/s@message_dial
    CallerID: +46<hidden>
    MaxRetries: 3
    RetryTime: 15
    Context: message
    Extension: s
    Priority: 1
    Archive: Yes
    SetVar: PHONE_NUMBER=+46<hidden>
    


0 commentaires

0
votes

Je préférerais utiliser une action AMI d'origine avec les canaux locaux et AGI à cette fin. Une autre excellente option est ARI, vous permet de faire ce que vous voulez faire avec l'astérisque.

J'utilise Ajam ou Phpami ou Pami. Vous devez considérer cela.


0 commentaires