Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

ivr на php-agi [закрыт]

0

Приветствую друзья !

Помогите плиз с php-agi : чать IVR написана на PHP, ниже приведен кусок кода, по которому система ждет ввода циферки и далее переводит на определенный dest. Хочу сделать, чтобы при неверном выборе или по истечению таймаута система делала повтор ожидания ввода и после 2х неудачных попыток переводила на оператора. Немного поразмыслив, решил использовать цикл while - все верно заработало, при неверном выборе система повторяла ожидание ввода. Но при правильном выборе не происходит перевода на нужный dest - пока цикл не пройдет заданное количество раз. Как реализовать эту, казалось бы простую фичу ? c php знаком поверхностно:-(

while ($i <=3 ):

           $s=$agi->get_data('end_of_check_balance',9000,1);

           $st=$s['result'];

           if ($st=="9"){

           $agi->goto_dest('test_balance',123);

           } elseif ($st=="8") {

           $agi->goto_dest('ivr-9');

           } elseif ($st=="*") {

           $agi->goto_dest('ivr-24');

           } elseif ($st=="0") {

           $agi->goto_dest('app-announcement-3');

           } else {

             if ($i==3) break;

             $agi->stream_file('dannye_ne_verny');

            }

            $i++;

             endwhile;

             $agi->goto_dest('app-announcement-3');
удалить переоткрыть спам изменить тег редактировать

спросил 2012-08-13 08:54:47 +0400

nana_MeDBeD Gravatar nana_MeDBeD
312 46 11 34

Comments

while ($i <=3 ):

Кто переменную определять будет?

zzuz ( 2012-08-13 11:13:43 +0400 )редактировать

это часть кода

nana_MeDBeD ( 2012-08-15 05:24:22 +0400 )редактировать

1 Ответ

1

exit добавить после goto_dest

?

ну и agi set debug on

ссылка удалить спам редактировать

ответил 2012-08-13 09:14:16 +0400

komrad123 Gravatar komrad123
3810 5 3 44

Comments

1

имеешь в виду break ?

nana_MeDBeD ( 2012-08-13 10:29:04 +0400 )редактировать

угу, с перлом попутал.

komrad123 ( 2012-08-13 11:46:33 +0400 )редактировать

немного покурив мануал по php нашел в чем была загвоздка и все заработало. Проблема была в том, что цикл был вложенным в конструкцию if-else. Поэтому для выхода из нее необходимо использовать break с числовым параметром, равным количеству вложений (в моем случае - break 2;).

nana_MeDBeD ( 2012-08-16 04:58:05 +0400 )редактировать

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2012-08-13 08:54:47 +0400

Просмотрен: 762 раз

Обновлен: Aug 13 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.