Ответы пользователя по тегу Asterisk
  • Почему Asterisk подставляет IP адрес PPPoE соединения в историю звонков на телефоне?

    @Gansterito
    Попробуйте жестко указать IP-адрес в sip.conf (параметр bind или что-то типа этого), или IP-адрес транспорта в pjsip.conf. Тогда при появлении новых IP-адресов Asterisk их будет игнорировать.
    Ответ написан
  • Как лучше написать ТЗ для разработки модуля Asterisk?

    @Gansterito
    Вы уверены что это именно модуль?
    Я к тому, что модуль Asterisk - это so-файл, который лежит в /usr/lib/asterisk/modules. Пишется на Си, требует достаточно высокого уровня подготовки.
    А Ваша задача может быть решена, например, внешним AGI или FastAGI скриптом. Пишется много на чем, значит и уровень подготовки ниже, и количество потенциальных исполнителей больше.
    Ответ написан
    3 комментария
  • Как скрытие топологию астериска так что бы каждый транк выходил в мир через отдельный ip адрес?

    @Gansterito
    Нужно, чтобы * биндил для разных транков разные IP-адреса.
    Если речь про SIP, то:
    - модуль chan_sip биндит адрес глобально и указать конкретный IP для конкретного транка не получится.
    - модуль chan_pjsip гораздо гибче - там в каждом транке указывается транспорт, и в транспорте можно указывать и разные протоколы (udp,tcp,tls), и IP-адреса, и source-порты. Вопрос с RTP-трафиком должен решаться также - транспорт имеет возможность указать параметр external_media_address - "внешний" адрес для передачи медиа.
    Ответ написан
    Комментировать
  • Asterisk Playback?

    @Gansterito
    Могу предложить два варианта:
    1) Хеш-функция от переменной UniqueueID. Функция должна выдавать значение от 1 до 20 (или сколько у Вас там). Как эту функциою написать - другая задача, но тут возможны коллизии, когда один файл может повториться более одного раза.
    2) Установка каждому вызову SET(GROUP()=mygroup), а затем проигрывание файла ${GROUP_COUNT(mygroup)}.wav. Это почти такой же вариант как от предыдущего комментатора, но без глобальной переменной, а через группу. Гарантирует уникальность проигрываемого одновременно файла.
    Ответ написан
    Комментировать
  • Актуален ли сейчас asterisk и voip в целом?

    @Gansterito
    Не совсем понятно что подразумевается под "разработчиком". Если это программист на С, пишущий модули или закрывающий баги в *, то это одно направление. Если это программист на Python/Perl/etc, пишущий систему, взаимодействующую с * через AMI/AGI/ARI - другое. Если это человек, пишуший кОнфиг к * ручками, оптимизирующий его работу - третье.
    В любом случае, войдя в направление "телефония" придется самостоятельно расширять свой кругозор, расти. А там уже будут новые горизонты - "highload", масштабируемые решения и т.д.
    Возможно, потребуются глубокие знания SIP (справочник Гольдштейна в помощь) и других телефонных протоколов - PRI, SS7 и т.д.
    Ответ написан
  • Как передать номер CID в внешнюю систему?

    @Gansterito
    Не совсем понятно в какой момент (с привязкой к какому событию) необходимо передавать пакет сторонней системе.
    Если важен только факт вызова (не важно отвечен или нет), то достаточно сделать как в примере выше - system на неблокирующий скрипт. Может быть, перед System поставить Ringing, чтобы КПВ уже ушел звонящему абоненту.
    Если важен факт ответа (и другие параметры - длительность вызова и т.д.), то System нужно вешать на событие Hangup, которое сгенерируется после окончания разговора.
    Если важен момент ответа, то нужно колдовать с флагом G команды Dial.
    Ответ написан
  • Почему может рваться связь?

    @Gansterito
    Заходите на S20 по SSH, там запускайте 2 экземпляра tcpdump - на внешний интерфейс в сторону оператора и на внутренний, в сторону телефонов. Примерно так: tcpdump -i eth0 -n -s0 -w /tmp/dump-eth0.pcap
    Еще желательно запустить asterisk -rvvvvv для сбора данных из консоли. На всякий случай.

    Далее, делаете тестовый вызов, ждете "обрыва" через 186 секунд. Прерываете tcpdump, загружаете себе на декстоп оба дампа, открываете оба уже упомянутым выше Wireshark-ом, смотрите что происходило (меню Telephony - Sip flows сильно поможет).

    Вопрос "по времени" - 186 секунд многовато, чтобы не соответствовать каким-то таймингам SIP-а на прерывание разговора. Обычно 15 или 30 секунд - потерялся "ACK". А 186 - скорее где-то ошибочно выставляется длительность звонка. Может быть NAT теряет "трансляцию", но тогда прерывался бы голос (RTP), а сам вызов продолжался бы.
    Ответ написан
    Комментировать
  • Почему не работает SIP через vpn?

    @Gansterito
    Посмотрите tcpdump-ом на стороне Asterisk доходят ли до него SIP-пакеты REGISTER, отвечает ли Asterisk.
    Ответ написан
    7 комментариев
  • Как отправлять DTMF сигналы разной длительности с разным интервалом в Asterisk?

    @Gansterito
    А в каком режиме идет DTMF от Asterisk в сторону GSM-шлюза?
    Может быть Asterisk генерирует DTMF в соответствии с rfc2833, а звуковые тоны воспроизводит сам GSM-шлюз (как ему захочется/сможется)?
    Ответ написан
  • Отваливается asterisk. В чем может быть проблема?

    @Gansterito
    Как часто происходит?
    Что в логах астериска до сегфолта? Включите максимальное логирование в /var/log/asterisk/full, включите в системе создание core-файлов при падении приложений, дождитесь воспроизведения.
    Ответ написан
    Комментировать