Ответы пользователя по тегу Телефония
  • Как набрать номер на телефонах Yealink через Action URI?

    @Gansterito
    http://192.168.3.101/servlet?key=number=89ХХХХХХХХ...
    где YYY - номер аккаунта с которого будет происходить вызов (хотя по документации там надо URI, работает просто номер).
    Ответ написан
  • Как sip софтфон узнает ip-адрес устройства, на котором установлен?

    @Gansterito
    > или софтфон вообще сам не выполняет запросов на определение ip
    Софтфон должен знать свой IP. Если не считать IP-адреса в заголовке IP-пакета, то еще он встречается в заголовке Contact и в SDP. Что касается IP-пакета, тут все просто - пакет идет с тем source ip, какой висит на исходящем интерфейсе в сторону сервера регистрации, если жестко не задан другой адрес. Адрес в Contact - тут сложней. В справочнике сказано - "Агент пользователя не должен передавать новых сообщений регистрации (запросов, содержащих новых сообщений в заголовке Contact), пока не получит окончательный ответ от сервера регистрации на предыдущий запрос...". Еще: "Запрос Register может включать в себя заголовок Contact, содержащий ноль или более контактых адресов.".
    Какие тут могут быть варианты:
    1) SIP-клиент шлет несколько REGISTER-пакетов с разными адресами в Contact, пока не пройдет регистрация.
    2) SIP-клиент шлет один REGISTER-пакет с несколькими адресами в заголовке Contact.
    Видимо, зависит от реализации клиента.

    Если на пути между клиентом и сервером стоит NAT с функционалом SIP ALG, то заголовок Contact будет подвержен изменению в соответствии с логикой работы этого самого SIP ALG.

    Для определения адреса за NAT (а также тип NAT) SIP-клиент может использовать STUN-сервер (SIP ALG в этом случае уже не нужен и даже может мешать). В этом случае заголовок Contact будет сформирован без локального адреса, а сразу с публичным IP-адресом и портом.
    Ответ написан
    2 комментария
  • 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 и т.д.
    Ответ написан
  • Почему может рваться связь?

    @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), а сам вызов продолжался бы.
    Ответ написан
    Комментировать
  • Можно ли собрать свой определитель номера для домашнего телефона?

    @Gansterito
    Можно. Раньше были радио-конструкторы на базе Z80, где реализован "российский АОН" (который поднимал трубку и "курлыкал" в линию). Сейчас на новых ГАТС есть функция "Евро АОН" (который трубку не поднимает), но включен он не везде, и зачастую идет как доп. услуга.
    Наверное, оба варианта можно реализовать на современной базе - Arduino и пр.
    Мануалы и схемы - искать в журнале Радио. Теорию - в многочисленных трудах Гольдштейна.
    Ответ написан
    Комментировать