пятница, 14 января 2011 г.

Автообзвон в Asterisk

Автообзвон в Asterisk
В данной статье я хочу рассказать о том, как создать простейший Автоинформатор. С другой стороны, кто-то может создать на основе этой статьи систему дозвона с сайта или обзвона абонентов по расписанию. В общем, огромные возможности для изобретательного ума (-:

Осуществлять всё это будем при помощи call файлов. Наиболее полная и доступная информация находится по адресу http://www.voip-info.org. Здесь вы можете узнать, какие параметры необходимо в нём указать, а какие – по желанию.

Прежде всего несколько предостережений:

* дата создания этих файлов должна быть в будущем, т.е. астериску через дату файла необходимо указать, когда исполнить этот файл
* данные файлы НЕЛЬЗЯ создавать в исходящей директории Asterisk-а, они могут туда быть только скопированы или перемещены из любого другого места
* вы должны заранее рассчитать, сколько call-файлов можно одновременно запускать на выполнение. Это зависит от мощности оборудования, на котором установлен Asterisk, а так же от ширины доступных каналов для осуществления звонков.

Прежде всего хочу сообщить, что все действия я буду осуществлять в системе с установленным Trixbox.

Для начала давайте создадим простой call-файл, результатом выполнения которого будет следующее: система набирает один внутренний номер, а когда там поднимают трубку, то она набирает другой внутренний номер:

#Внутренний звонок
#
Channel: Local/101 #Эта строка говорит о том, что вызывается внутренний абонент «101». Безусловно, он должен быть в системе

Callerid: 100 #эта строка указывает нам на то, как у вызываемого абонента отобразится, кто его вызывает

MaxRetries: 5
RetryTime: 300
WaitTime: 45
Extension: 100 #После того, как абонент «101» возьмёт трубку, необходимо соединить его с абонентом «100»

Priority: 1

В принципе, это и есть весь файл. Теперь надо сделать ещё пару действий:

1. В командной строке набрать:
# date
Mon Feb 11 15:49:15
# touch –t 200802111550
Сначала система сообщает нам своё системное время, а затем мы устанавливаем время файла.

2. Скопировать или перенести данный файл в соответствующую директорию Asterisk-а:
# mv /var/spool/asterisk/outgoing

При достижении указанного времени Asterisk исполнит указанный файл. Ещё раз обращаю ваше внимание, что НЕЛЬЗЯ создавать call-файл непосредственно в /var/spool/asterisk/outgoing.

Давайте несколько разнообразим наш call-файл. Далее я просто приведу несколько вариантов без подробного описания, а так же последовательности действий, которые необходимо выполнить, чтобы запустить их на исполнение.

Channel: IAX2/100 #сначала внутренний абонент
Callerid: 100
MaxRetries: 5
RetryTime: 300
WaitTime: 45
Context: from-internal
Extension: 38067ХХХХХХХ #если внутренний снимает трубку, звоним абоненту на мобильный
Priority: 1

Хочу обратить ваше внимание, что в этом случае в системе должны быть настроены соответствующим образом trunk и исходящее соединение с диал-планом, в соответствии с которым система сможет набрать указанный внешний номер.

В этом варианте мы сначала звоним абоненту на мобильный, а потом соединяем его с внутренним, с начальником (-:

Channel: IAX2/out-trunk/38067XXXXXXX
Callerid: 100
MaxRetries: 5
RetryTime: 300
WaitTime: 45
Context: from-internal
Extension: 100
Priority: 1

В данном варианте я использую IAX2 транк для звонка, хотя это может быть и SIP транк, и Zap линия.

В следующем примере мы создадим именно то, что в общем случае можно назвать автодозвоном и автоинформатором. Иными словами, система дозвонится на указанный номер и проиграет заранее записанное сообщение. Я буду использовать стандартный звуковой файл.

Channel: Local/101
Callerid: 100
MaxRetries: 5
RetryTime: 300
WaitTime: 45
Context: test-sound
Extension: s
Priority: 1

Дозвон будет осуществляться на внутренний номер «101», при желании можно указать и внешний номер, как это указанно в предыдущих примерах. Но обращаю ваше внимание на Context: test-sound.

Для этого в файл extensions_custom.conf необходимо внести следующее:

[test-sound]
exten => s,1,DigitTimeout,5 ; Set Digit Timeout to 5 seconds
exten => s,2,ResponseTimeout,10 ; Set Response Timeout to 10 seconds
exten => s,3,Answer
exten => s,4,Wait(1)
exten => s,5,Background(demo-congrats) ; "play outbound msg"
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup

Не забудьте перезапустить Asterisk, а то все внесения изменений руками не вступают в силу, пока вы его не перегрузите.

Вот и всё, что я хотел рассказать о call-файлах. Теперь, имея телефонную базу абонентов, можно делать обзвон и сообщать им, например, их состояние счёта или какую-то полезную информацию.
http://myasterisk.ru/

Комментариев нет:

Отправить комментарий