Asterisk автоматично набиране и обратно повикване чрез AGI, блог
Мрежи, конфигурация на оборудването, мрежови услуги.
Автоматичен
Има задачи, изпълнението на които е възможно чрез автоматично набиране. например ?
Например вие сте sys.admin, имате локална мрежа и куп оборудване в нея, но не сте на работа денонощно и ако е така, нещо може да се случи в мрежата, например събитие в системата за наблюдение, но не сте на работното място. Разбира се, можете да си изпратите SMS, ако имате такава възможност, но имате сървър Звездичка можете да се обадите и да си кажете какво се е случило 😉
И така, предполагаме, че вече имате инсталиран и конфигуриран сървър. Звездичка, който има достъп до града.
За да осъществим автоматично обаждане, са ни необходими следните неща:
- генериране на файл за повикване
- има в плана за набиране (план за набиране (дефиниран в /usr/local/etc/asterisk/extensions.conf)) контекст със списък с действия
Нека започнем с файл за повикване, основният му синтаксис е:
- Канал: - Кой канал да използвате за разговора
- CallerID: "name" - Задайте Caller ID, тук е по-лесно да кажем, че можем да зададем Caller ID (номера, от който се обаждаме).
- MaxRetries: - Максимален брой опити за повикване, по подразбиране 0, което е един опит.
- RetryTime: - Време в секунди между опитите за набиране, по подразбиране 300 (5 минути).
- WaitTime: - Колко секунди да изчакате, за да се откачите, 45 по подразбиране.
- Контекст: - Кой контекст използваме от extensions.conf
- Разширение: - Кое разширение използваме в избрания контекст (също и в extensions.conf).
- Приоритет:
- С какъв приоритет започваме.
Дадох непълен списък, пълният списък е достъпен тук. Лично за всяко число създавам свой собствен контекст в extensions.conf .
Съответно, познавайки синтаксиса, вече можем да генерираме файл за повикване, като използваме примера за повикване през SIP канала:
За тези, които са в резервоара, нека анализираме файла за обаждания ред по ред:
- обадете се на SIP номер 89161112233 чрез sip-доставчика (име от /usr/local/etc/asterisk/sip.conf, за да отидете в града)
- използвайте идентификатор на повикващия 9998877
- Максимален брой опити за набиране 2
- Пауза между опитите 20 секунди
- Изчакайте 60 секунди, за да се откачите
- Използвайте контекст с име outgoing_to_89161112233
- Започнете с разширение (ext) s
- И започнете с приоритет 1 в разширението s
След като формира файл за повикване, той трябва да бъде поставен в папката:/var/spool/asterisk/outgoing/server Звездичка намирането на файл в тази папка веднага ще се опита да го обработи.
Трябва веднага да кажа, че можете да забавите обработката на файла, т.е. задържат реф. обадете се и го отложете за определено време.
Сървър Звездичка гледа датата на създаване на файла с повикванията и ако промените датата на създаване на дата в бъдеще, тогава Звездичка няма да обработи файла с повикванията, докато не дойде точно тази дата.
Как да го направя ? Много просто, за това използваме командата за докосване, която е достъпна във всички системи Unix.
След като създадем самия файл с повиквания, вземаме и променяме датата на неговото създаване, шаблонът за дата е както следва:
ГОДИНА МЕСЕЦ ДЕН ЧАСИ МИНУТИ . СЕКУНДИ (внимание: пред секундите има точка, това е, което ви трябва, а не печатна грешка).
/ usr/bin/touch -t 1007091918.55 /path/to/call/file.call
Датата на създаване на файла за повикване ще се промени и ако преместите файла в/var/spool/asterisk/outgoing /, съответно Звездичка няма да бъде обработен, докато не дойде зададената дата.
Съвет: по-добре е да генерирате файл за повикване в някаква tmp директория, да извършите всички необходими действия върху тях и след това да преместите (прехвърлите) в/var/spool/asterisk/outgoing/.
Сега нека разгледаме самия контекст, за една система за наблюдение може да бъде така:
Въз основа на този контекст Звездичка набирането на 89161112233 (лицето, вдигнало телефона) ще направи следното:
- вдига телефона от неговата страна
- чакай малко
- ще възпроизвежда записани от вас звукови файлове (посочени са пълните пътеки до файловете)
- затварям телефона