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 (лицето, вдигнало телефона) ще направи следното:

  • вдига телефона от неговата страна
  • чакай малко
  • ще възпроизвежда записани от вас звукови файлове (посочени са пълните пътеки до файловете)
  • затварям телефона