2010-11-29 35 views
3

J'ai une application qui fonctionne avec Twilio. L'idée est que vous appellerez un numéro de téléphone twilio répondra et vous donnera des options de menu. Une fois que vous appuyez sur un chiffre, il va soumettre les données de poste, puis raccrochez (Cette partie fonctionne correctement) Le problème que je rencontre est de savoir s'il existe un moyen de soumettre des données de poste si l'utilisateur raccroche dès twilio réponses ... J'ai trouvé le code suivant dans leur documentation.envoyer des données POST lorsque vous raccrochez sur Twilio

<?xml version="1.0" encoding="UTF-8"?> 
<!-- page located at http://example.com/gather_hints.xml --> 
<Response> 
<Gather action="/process_gather.php" method="GET"> 
    <Say>Enter something, or not</Say> 
</Gather> 
<Redirect method="GET"> 
    /process_gather.php?Digits=TIMEOUT 
</Redirect> 
</Response> 

Le problème avec ceci est que vous devez attendre jusqu'à la fin du message pour que l'appel se termine. Y at-il un moyen de le faire dès que commence, si l'utilisateur raccroche, il va faire quelque chose comme aller à la balise de redirection?

Merci!

Modifier: Donc, sur la page process_gather.php, je peux sauvegarder le statut complété en tant que variable?

$Completed = $_POST["completed"]; //which would set $Completed == 'completed' 

puis dans cette page je peux dire, fondamentalement, si if (! Empty ($ REMPLI)) faire quelque chose (je dois travailler dans ma logique, mais je veux juste assurer que je reçois la idée générale)

+0

Ce n'est pas état complété qui compte. C'est que le callback CallStatus arrive. vous aurez besoin d'un nouveau script .php, (quelque chose comme '/ call_ended.php') qui vérifie si'/process_gather.php' a déjà été exécuté. – TelegramSam

+0

Comment verrais-je si process_gather.php a fonctionné? Je suppose que je ne le comprends pas vraiment ... – Bill

+0

J'ai mis à jour ma réponse ci-dessous avec quelques exemples de code qui devraient aider. – TelegramSam

Répondre

9

La meilleure façon de résoudre ce problème consiste à utiliser l'URL StatusCallback. Vous pouvez définir cette URL pour les appels entrants dans la configuration Numéro de votre compte ou via un argument facultatif pour les appels sortants.

Lorsque l'appel est terminé, Twilio POST (ou GET) à l'URL avec tous les same variables qu'il passe lors d'une demande normale. La variable CallStatus sera définie sur completed.

Si cette URL est appelée avant que vous obteniez l'entrée de l'utilisateur (à votre script `/process_gather.php '), alors ils ont raccroché.

Remarque: Vous pouvez utiliser des cookies pour gérer l'état d'une session dans le cadre d'un appel: toutes les requêtes effectuées par Twilio au cours du même appel (et la demande StatusCallback) contiendront tous les cookies que vous envoyez. Cela vous permet d'utiliser une variable de session pour suivre la progression de l'appel.

PHP Exemple /proces_gather.php:

<?php 
session_start(); 
// adds it to our session 
$_SESSION['gather_result']=$_POST["Digits"]; 
// then do whatever else you want your gather script to do. 
?> 

PHP Exemple /status_callback.php, qui doit être configuré comme l'URL StatusCallback pour le numéro de téléphone dans l'écran compte Twilio:

<?php 
session_start(); 
//check for gather_result 
if(isset($_SESSION['gather_result'])){ 
    //user did enter digits 
} else { 
    //do whatever you want to do if the user entered no digits. 
} 
?> 
+3

John de Twilio ici ... c'est la bonne réponse. Merci Sam! –

+0

Merci pour l'aide. J'ai édité mon post juste pour m'assurer que je l'ai bien. Je pense que je le fais, mais je ne suis pas tout à fait sûr. – Bill

+0

Hmm ok ça a du sens ... Je vais essayer ça. – Bill