VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Как сделать контрольное SMS при автообзвоне

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
Alexeii
Сообщения: 2
Зарегистрирован: 22 ноя 2012, 09:56

Как сделать контрольное SMS при автообзвоне

Сообщение Alexeii »

Собрал систему оповещения использую статью http://asterisk-pbx.ru/wiki/doku.php/autodial.

Принцып работы ее такой:
-Звоню на телефон с номером 698
-продектовываю сообщение (в 6-00 обьявлен сбор сотрудников по сигналу, для подтверждения нажмите цифру 1)
-нажимаю #
-прослушиваю надиктованное сообщение и кладу трубку
-звонок инециализирует запуск скрипта call_list.sh
-скрипт с готового заранее файла List.txt готовит call-файлы и по одному скармливает их Asterisk
-Asterisk обрабатывае call-файлы, прозванивает все телефоны и надиктовывает им сообщения.

Все хорошо Все счастоивы - НО хотелось бы получить подтверждение что сотрудники оповещены посредством SMS сообщения на первый номер сотового телефона из списка List.txt, в нашем случае 89271111111
В связи с тем что НЕОПОВЕЩЕНЫ обычно бывает 1-3 человека, то SMS лучше указывать неоповещенные номера

SMS:
neopoveshen:
89271111113
89271111117



Файл List.txt с номерами телефонов (телефонов до 10 шт)
89271111111
89271111112
89271111113
89271111114
-------
89271111110

скрипт /var/spool/asterisk/call_list.sh запускается при звонке на номер 698. Формирует call файлы и по одному его скармливает Asteriskу

сам скрипт call_list.sh

Код: Выделить всё

#!/bin/sh
while read number; do
cat <<EOF  >  /var/spool/asterisk/$number
Channel: Dongle/dongle0/$number
Callerid: $number
MaxRetries: 1
RetryTime: 20
WaitTime: 30
Context: outboundmsg1
Extension: s
Priority: 1
EOF

    chown root:root /var/spool/asterisk/$number
    mv /var/spool/asterisk/$number  /var/spool/asterisk/outgoing

    echo "$number"

    number=`expr $number + 1`

    while [ "$?" -eq "0" ]

    do
count_files ()

{

    count_f=`ls /var/spool/asterisk/outgoing | wc -l`

        if [ "$count_f" -eq "1" ]; then

            sleep 10

            return 0

        else

            return 1

        fi

}

    count_files

    done



done < /var/spool/asterisk/list.txt

exit 0
extensions.conf такого вида

Код: Выделить всё

exten => _698,1,Answer()
exten => _698,n,Wait(2)
exten => _698,n,Record(/tmp/trevoga:wav)
exten => _698,n,Wait(1)
exten => _698,n,Playback(/tmp/trevoga)
exten => _698,n,Wait(1)
exten => _698,n,System(/var/spool/asterisk/call_list.sh start)
exten => _698,n,Hangup()

[outboundmsg1]
exten => s,1,Set(TIMEOUT(digit)=5)             
exten => s,2,Set(TIMEOUT(response)=10)         
exten => s,3,Answer
exten => s,4,Wait(1)
exten => s,5,Background(/tmp/trevoga)
exten => s,6,WaitExten(5)         
exten => 1,1,Goto(s,5)   
exten => 2,1,Goto(msgack,s,1) 
exten => t,1,Hangup

[msgack]

exten => s,1,Hangup

Спасибо за помощ.
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: Как сделать контрольное SMS при автообзвоне

Сообщение zzuz »

Принцып - Принцип.
продектовываю - продиктовываю.
обьявлен - объявлен.
инециализирует - инициализирует.
счастоивы - счастливы.
помощ - помощь.

Мало того , что человек с костылями пришел, так еще и в школе забыл доучиться.
Линия24 - Системы Массового Телефонного Обслуживания
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: Как сделать контрольное SMS при автообзвоне

Сообщение ded »

Каков поп, таков и приход.
Какой же бред генерируют начальственные головы! Который потом кодят неграмотные граждане.
Alexeii
Сообщения: 2
Зарегистрирован: 22 ноя 2012, 09:56

Re: Как сделать контрольное SMS при автообзвоне

Сообщение Alexeii »

Помощи не дождался !!
В итоге сделал так:

Файл List.txt с номерами телефонов для удобства пришлось сделать таким

Код: Выделить всё

89000000001.Ivanov
89000000002.Sidopov
89000000003.Zhukov
89000000004.Petrov
89000000005.Petr1
89000000006.Tixonov
89000000007.Smirnov
89000000008.Putin
89000000009.Madona
точка для удобства разделения номера и фамилии (не очень удобно когда в SMS приходит номер- гораздо лучше когда фамилия)

Скрипт /var/spool/asterisk/call_list.sh прищлось поменять

Код: Выделить всё

#!/bin/sh

cat <<EOF  >  /var/spool/asterisk/sms.txt
No
EOF
#Создали txt файл со словом "No"

while read number; do


number1=${number%.*}
name=${number#*.}


cat <<EOF  >  /var/spool/asterisk/$number1

Channel: Dongle/dongle0/$number1
Callerid: $number1
MaxRetries: 1
RetryTime: 20
WaitTime: 30
Set: Sms=$name
#Set: Raz=2
Context: outboundmsg1
Extension: s
Priority: 1
Account: 12

EOF




    chown root:root /var/spool/asterisk/$number1
    mv /var/spool/asterisk/$number1  /var/spool/asterisk/outgoing

    

    echo "$number1"
    echo "$name"

    number1=`expr $number1 + 1`



    while [ "$?" -eq "0" ]

    do
count_files ()

{

    count_f=`ls /var/spool/asterisk/outgoing | wc -l`

        if [ "$count_f" -eq "1" ]; then

            sleep 10

            return 0

        else

            return 1

        fi

}



    count_files

    done



done < /var/spool/asterisk/list.txt


txtsms1=`cat /var/spool/asterisk/sms.txt`
#переменной txtsms1 присвоили содержимое файла sms.txt

echo $txtsms1 > /var/spool/asterisk/sms.txt
#удалили перевод строки, т.е. записали все в одну строку "No Ivanov Petr1"

txtsms=`cat /var/spool/asterisk/sms.txt`
#переменной txtsms1 присвоили содержимое файла sms.txt

echo "$txtsms"

cat <<EOF  >  /var/spool/asterisk/smstxt

Channel: LOCAL/answer@answer
Application: DongleSendSMS
Data: dongle0,+89000000022,${txtsms}

EOF
#создали call файл для отправки SMS

chown root:root /var/spool/asterisk/smstxt
mv /var/spool/asterisk/smstxt  /var/spool/asterisk/outgoing

chown root:root /var/spool/asterisk/sms.txt

rm /var/spool/asterisk/sms.txt
#Удалили файл
exit 0
Количество попыток дозвона -2
пришлось в диалплане поработать с переменной FOO1

Код: Выделить всё

[globals]
FOO1=3
[general]

[answer]
exten =>answer,1,Answer(1)
exten =>answer,n,hangup

[outboundmsg1]

exten => s,1,Set(TIMEOUT(digit)=5)             
exten => s,2,Set(TIMEOUT(response)=10)         
exten => s,3,Answer
exten => s,4,Set(GLOBAL(FOO1)=3)
exten => s,n,Wait(1)
exten => s,n,Background(/tmp/trevoga)
exten => s,n,WaitExten(5)        
exten => 1,1,Goto(s,5)   
exten => 2,1,Goto(msgack,s,1) 
exten => t,1,Hangup
exten => failed,1,Set(GLOBAL(FOO1)=$[${FOO1} - 1])
exten => failed,2,GotoIf($[${FOO1} = 1]?3:6)
exten => failed,3,System(echo '${Sms}' >> /var/spool/asterisk/sms.txt)
exten => failed,4,Set(GLOBAL(FOO1)=3)
exten => failed,5,Hangup
exten => failed,6,Hangup

Как смог!!
SMS приходит в формате

Код: Выделить всё

No Petpov
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH