klink0v (klink0v) wrote,
klink0v
klink0v

Astersik channel local

Какое-то время тому назад я и сам не подозревал, что наряду с "традиционными" каналами типа SIP или DAHDI у Asterisk-а есть занятная магия под названием chan_local. А зря. Иногда бывает очень удобен. Особенно он полезен, когда нужно из extension-а сделать полноценный вызывающий либо вызываемый канал. Поясню на примере.

Задача. Сделать робо-будильник, который будет чётко по часам звонить на определенные номера и что-нибудь вещать.

Вообще это не проблема. Берём cron или systemd, вспоминаем про CLI Originate и колдуем себе на здоровье. Но теперь усложним задачу. Допустим, нам надо набирать не на один аппарат, а на два разных: где быстрее снимут трубку, туда и балакать. Кроме того, нам хочется что-то осмысленное писать в Caller ID. Вот тут-то и поможет Channel Local. Пример конфига extension-ов (extensions.conf).

Теперь из cron-а можно вызвать что-нибудь типа

И готово. Теперь каждый день ровно в полдень сработает cron. Через консоль asterisk-у подается команда инициировать вызов на канал Local с некоторыми параметрами. Которые говорят ему, что для создания такого канала надо пойти в диалплан "alarms" и начать выполнять extension номер два. После поднятия трубки на одном из SIP-устройств phone1 или phone2 данный канал направляется в диалплан "hints", где как будто бы "с другой стороны" снимают трубку и проигрывают в соединение голосовое сообщение из некоторого файла "SomeVoiceMessage".

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

Tags: asterisk, hints
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 3 comments