Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / опрос.

опрос.

нужно сделать опрос 3 вопроса по три ответа с записью ответа и номера звонящего в бд.
Сообщений: 5

опрос.

собстввенно все в описании описал, привожу кусок кода, проблема в том, что дальше скрипта, который заносит результаты в бд дело не идет. поэтому больше одного вопроса реализовать не получается, а это не айс.
может ктото скажет как завтавить эту конструкцию работать, или есть какие то стандартные способы решения моей проблемы?

заарнее благодарен всем за помощь!

exten => s,1,Answer
exten => s,2,Set(TIMEOUT(response)=5)
exten => s,3,Background(opros/start)

exten => s,4,Background(opros/v1)
exten => s,5,Background(opros/o1)
exten => s,6,WaitExten(5)

exten => t,1,Goto(1,1)
exten => t,2,Goto(2,1)
exten => t,3,Goto(3,1)

exten => 1,1,System(/etc/asterisk/opros11.sh ${CALLERID(num)} ${EXTEN})
exten => 2,1,System(/etc/asterisk/opros12.sh ${CALLERID(num)} ${EXTEN})
exten => 3,1,System(/etc/asterisk/opros13.sh ${CALLERID(num)} ${EXTEN})

exten => i,1,Playback(opros/repeat)
exten => i,2,Goto(s,5)

exten => s,7,Background(opros/v2)
exten => s,8,Background(opros/o2)

в логах
-- Executing [2@opros:1] System("SIP/311-083489f0", "/etc/asterisk/opros12.sh 311 2") in new stack
== Auto fallthrough, channel 'SIP/311-083489f0' status is 'UNKNOWN'
2010-06-23 14:51

Avatara of svoy
Откуда: Киев
Сообщений: 1096

Re: опрос.

используй силу.. (с)
т.е AGI ()

и ваАпще как то код глаза режет, можно все сделать проще и без системных скриптов, как IVR или поочередно задавать вопросы и ловить нажатие клавиш.. ответы складировать в переменную, которую после окончания опроса передавать в базу (тоже множество методов)
2010-06-23 15:08

Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: опрос.

[vopros]
exten => s,1,Background(opros/start)
exten => s,n,goto(vopros01,s,1)

[vopros01]
exten => s,1,Background(opros/vopros01)
exten => s,n,wait(exten)
exten => s,n,goto(vopros03,s,1)
exten => 1,1,System(/etc/asterisk/opros11.sh ${CALLERID(num)} ${EXTEN})
exten => 2,1,System(/etc/asterisk/opros12.sh ${CALLERID(num)} ${EXTEN})

[vopros02]
exten => s,1,Background(opros/vopros02)
exten => s,n,wait(exten)
exten => s,n,goto(vopros03,s,1)
exten => 1,1,System(/etc/asterisk/opros11.sh ${CALLERID(num)} ${EXTEN})
exten => 2,1,System(/etc/asterisk/opros12.sh ${CALLERID(num)} ${EXTEN})

[vopros03]
exten => s,1,Background(opros/vopros03)
exten => s,n,wait(exten)
exten => s,n,goto(vopros04,s,1)
exten => 1,1,System(/etc/asterisk/opros11.sh ${CALLERID(num)} ${EXTEN})
exten => 2,1,System(/etc/asterisk/opros12.sh ${CALLERID(num)} ${EXTEN})

[vopros04]
exten => s,1,Background(opros/vopros04)
exten => s,n,wait(exten)
exten => s,n,goto(vopros05,s,1)
exten => 1,1,System(/etc/asterisk/opros11.sh ${CALLERID(num)} ${EXTEN})
exten => 2,1,System(/etc/asterisk/opros12.sh ${CALLERID(num)} ${EXTEN})
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2010-06-23 15:29

Avatara of zzuz
Откуда: SPb
Сообщений: 1307

Re: опрос.

Используйте Read() и Gotoif()

вот

macro opros () {
Answer;
TIMEOUT(response)=5;
Background(opros/start);
begin:
Read(answ,opros/v1&opros/o1,1,,,5);
if($[${EXISTS(${answ})} = 1]) {
switch ("${answ}") {
case "1": System(/etc/asterisk/opros11.sh ${CALLERID(num)} ${answ}) ;
case "2": System(/etc/asterisk/opros12.sh ${CALLERID(num)} ${answ}) ;
case "3": System(/etc/asterisk/opros13.sh ${CALLERID(num)} ${answ}) ;
default: Playback(opros/repeat); goto begin;
}
} else for (z=0; ${z} < 3; z=${z} + 1) { System(/etc/asterisk/opros1${z}.sh ${CALLERID(num)} ${answ}); };
Background(opros/v2&opros/o2);

}
http://линия24.рф - Астериск и прочие бубны!
2010-06-23 18:31

Avatara of litnimax
Откуда: Москва
Сообщений: 3421

Re: опрос.

Используй магию.
Скрипт с фиксацией ответов должен принимать:
arg1: название опроса
arg2: номер абонента
arg3: номер вопроса
В звуковых файлах также в названии закодирован вопрос.
Набранный номер отвечает за выбор опроса.
Тогда все просто и универсально, можно дать FTP пользователям, чтобы сами заливали опросы и вопросы, а также работать с DB из CLI (database put/del), не трогая диалплан, чтобы менять опросы (либо юзерам интерфейс прикрутить)

[macro-poll]
exten => s,1,Read(choice,questions/${ARG1}/q${ARG3},1);
exten => s,n,GotoIf($["${choice}" = ""]?1); repeat. TODO: no more than 3 times.
exten => s,n,System(poll.sh "${ARG1}" ${ARG2} ${ARG3} ${choice})

[poll]
exten => _X.,1,Answer
exten => _X.,n,Wait(0.5)
exten => _X.,n,Set(poll_name=${DB(poll_by_exten/${EXTEN})})
exten => _X.,n,Set(num=${DB(poll_q/${poll_name})})
exten => _X.,n,Set(q=1)
exten => _X.,n,While($[${num} > 0])
exten => _X.,n,Macro(poll,"${poll_name}",${CALLERID(num)},${q})
exten => _X.,n,Set(q=${MATH(${q}+1)})
exten => _X.,n,Set(num=${MATH(${num}-1)})
exten => _X.,n,EndWhile
exten => _X.,n,Playback(thank-you)



http://pbxware.ru - все для Asterisk! || Switchvox - сделано на Asterisk! Подробности на http://switchvox.ru
2010-06-24 10:18

Сообщений: 1573

Re: опрос.

Макс, с год назад "открыл" для себя конструкцию:

q=$[${q}+1] (вместо такой: q=${MATH(${q}+1)} )

раньше тоже пользовася MATH. Вроде попроще ) ... IMHO!


Пардон за оффтоп ...

2010-06-24 13:16

Сообщений: 5

Re: опрос.

Всем спасибо! реализовал.
возникла мысль расширить функционал и прикрутить ещё автообзвон, но это уже позже....
2010-06-24 13:52

Avatara of litnimax
Откуда: Москва
Сообщений: 3421

Re: опрос.

cron333:

Макс, с год назад "открыл" для себя конструкцию:
q=$[${q}+1] (вместо такой: q=${MATH(${q}+1)} )
Я знал про прямое сложение еще до того, как MATH появилась :-)
Просто чревато ошибками. Пробел поставил - и уже цифры принимаются за текст. В общем, с MATH надежнее.
http://pbxware.ru - все для Asterisk! || Switchvox - сделано на Asterisk! Подробности на http://switchvox.ru
2010-06-25 09:48

Сообщений: 1573

Re: опрос.

litnimax:

cron333:

Пробел поставил - и уже цифры принимаются за текст.
Нет такого ... :)

litnimax:

В общем, с MATH надежнее.

Понял твое IMHO. Уважаю ... ;)
2010-06-26 11:56

Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru