Возникла следующая задача: обзвон по списку (реализовано через outgoing) с опросом по нескольким пунктам(оценка) с загрузкой в БД mysql результатов. Функцию опроса с оценками я уже делал, все работает. (но это при входящем звонке НА астериск).А при исходящем вызове на мобильный номер не могу на мобильном нажать тональную клавишу - точнее нажать то могу, но тон на астериск не передается. Подозреваю, что дело либо в dtmfmode (но вроде все варианты уже пробовал info,inbound,rfc2833) либо надо какую-то опцию (по аналогии с Dial(T)) добавить.
Логика работы: есть файл с номерами телефонов, откуда скриптом формируются outgoing-файлы для автообзвона астериском (работает), при ответе на мобильном телефоне происходит переадресация на контекст [ocenka1], идет приветствие (TV1), затем первый вопрос (TV2) и ожидание ввода, при отсутствии ввода повтор вопроса, при повторном отсутствии - сброс вызова. При вводе верной клавиши (1 или 2) подключается к базе и добавляет/изменяет запись в соответствующей таблице и перекидывает на следующий вопрос(по аналогии); при неверной (i) отбрасывает на вопрос (100,2).
Большая просьба если кто-то знает решение, подскажите или направьте в нужную сторону (только не совсем туманно))
Ниже конфиги:
sip.conf
Код: Выделить всё
[dial_out]
type=friend
context=incoming
host=IPшлюзаисходящего
allow=alaw
language=ru
dtmfmode=inband
canreinvite=no
limitonpeer=yes
Код: Выделить всё
[tv-dialer]
exten => _98XXXXXXXXXX,1,Dial(SIP/dial_out/#321#${EXTEN:1},T) ;Звоним наружу МГ
exten => _98XXXXXXXXXX,n,Hangup ;Вешаем трубку
[tv-informer]
exten => 2223,1,Answer ;Берём трубку
exten => 2223,n,Wait(1) ;Ждём 3 секунды
exten => 2223,n,Goto(ocenka1,100,1) ;Уходим на контекст оценки
exten => 2223,n,Hangup ;Вешаем трубку
[ocenka1]
exten => 100,1,Playback(/usr/local/share/asterisk/sounds1/TV1)
exten => 100,2,BackGround(/usr/local/share/asterisk/sounds1/TV2)
exten => 100,n,WaitExten(4)
exten => 100,n,BackGround(/usr/local/share/asterisk/sounds1/TV2)
exten => 100,n,WaitExten(4)
exten => 100,n,Hangup()
exten => _[1-2],1,MYSQL(коннект к базе)
exten => _[1-2],n,MYSQL(запись данных о звонке)
exten => _[1-2],n,Goto(ocenka2,110,1); здесь на следующий вопрос уходит
exten => i,1,Goto(100,2)
Код: Выделить всё
#!/bin/sh
# Asterisk call fromlist script for FreePBX
# by Eugene Varnavsky
# November 2012
# Based on example at http://asterisk-support.ru/forum/topics/267/
pause=20
echo "Dialing with $pause second pause"
while read number; do
echo "Channel: SIP/dial_out/#321#$number
MaxRetries: 0
RetryTime: 5
WaitTime: 60
Context: tv-informer
Extension: 2223
Callerid: номер откуда звонить
Account: autodialer
Priority: 1" > /var/spool/asterisk/tmp/$number
chown root:wheel /var/spool/asterisk/tmp/$number
mv /var/spool/asterisk/tmp/$number /var/spool/asterisk/outgoing
echo "$number"
sleep $pause
#number=`expr $number + 1`
while [ "$?" -eq "0" ]
do
count_files ()
{
count_f=`ls /var/spool/asterisk/outgoing | wc -l`
if [ "$count_f" -eq "30" ]; then
sleep 10
return 0
else
return 1
fi
}
count_files
done
done < /tv_opros/final_tv.txt
echo "Done"
exit 0