• Почему приходит некорректный DIALSTATUS в астериск?

    KolyaniuS
    @KolyaniuS
    безнадежный оптимист
    статус CONGESTION не может придти в случае если канал был инициирован и затем закрыт по инициативе одной из сторон. Судя по вашему диалплану AGI-скрипт у вас никогда не выполниться, поскольку он стоит после приложения Dial без каких-либо параметров. После того как приложение Dial отработает контекст переходит в расширение h, а не на следующий шаг, как вы предполагали
    Ответ написан
  • Как организовать структуру и деплой проекта с docker?

    KolyaniuS
    @KolyaniuS
    безнадежный оптимист
    Как мне запулить мой проект на этот серв?

    Есть два варианта:
    1. через hub.docker.com
    а) делаете docker login для регистрации на docker-хабе (можно зайти и сделать свой проект приватным чтобы остальным не повадно было)
    б) собираете ваш dockerfile с помощью docker build
    в) затем docker push для отправки слоев на ваш хаб
    г) затем логинитесь на боевом сервере и делаете docker pull для скачивания слоев
    д) docker run
    2. Просто кидаете с помощью scp ваш Dockerfile и файлы проекта на боевой сервер и делаете
    docker build
    Подробнее о командах можно почитать в документации - я лишь описал концепцию
    Как затем производить правки в коде?

    Все просто - залейте ваш проект в любой репозиторий (github, bitbacker, gitlab ...), после внесения изменений просто логинитесь на сервере, заходите в ваш докер-контейнер и запускаете git pull в нужную директорию, затем сборка или т.п. (для автоматизации процесса можно использовать любой CI).
    Проекту нужна БД(куда без нее).

    Очень просто - добавляете новый контейнер (например docker pull mysql), на хабе можно посмотреть информацию о запуске такого контейнера https://hub.docker.com/_/mysql/ и коннектитесь к базе из вашего приложения по внутренней сети вашей docer-системы (docker bridge).
    Ответ написан
    1 комментарий
  • Почему после включения HTTP2 сайт не работает в большинстве браузеров?

    KolyaniuS
    @KolyaniuS Автор вопроса
    безнадежный оптимист
    Переместил директивы касающиеся настроек ssl из блока server { ... } в http {... } и все заработало ...
    nginx.org/ru/docs/http/ngx_http_ssl_module.html
    Везде указаны оба контекста в качестве разрешенных
    Ответ написан
    2 комментария
  • Почему не регистрируется SIP-телефон?

    KolyaniuS
    @KolyaniuS
    безнадежный оптимист
    Ну сервер же у вас говорит 401 Unathorized клиенту - и ждет ответа на запрос авторизации.
    Не вижу пакетов Register с авторизацией со стороны клиентов - подозреваю что в сторону телефонов пакеты просто не доходят
    Ответ написан
  • Как создать новый массив из другого массива, элементы которого представлены объектами?

    KolyaniuS
    @KolyaniuS Автор вопроса
    безнадежный оптимист
    Всем спасибо за советы - сделал так:

    var arr = [{x: 1, y: 1}, {x: 2, y: 2}];
    var new_arr = cloneArray(arr);
    
    new_arr[0].x = 2;
    new_arr[1].x = 5;
    
    console.log(arr);
    console.log(new_arr);
    
    function cloneArray(arr) {
      var result = [];
      arr.forEach(function(value) {
        var arr_elem = {};
        for (var prop in value) 
          arr_elem[prop] = value[prop];
        result.push(arr_elem);
      });
      return result;
    }


    Поскольку задача достаточно узкоспециализированная и мой опыт в JS оставляет желать лучшего - такой вариант вполне удовлетворяет.
    Если будут идеи по-интереснее - пишите :)
    ЗЫ: только без регулярок и парсинга )
    Ответ написан
    Комментировать
  • Где можно научиться программировать ip-телефонию?

    KolyaniuS
    @KolyaniuS
    безнадежный оптимист
    В свое время начинал изучать IP-телефонию сразу на практике в реальном проекте.
    Книга и документация дадут вам только лишь теоретические знания - это не плохо для начала, но совсем никак не продвинет в изучении предмета!
    Без практического применения знаний вы ничего не поймете.
    Самый простой способ постичть азы SIP-телефонии - развернуть свой Asterisk и экспериментировать на нем, параллельно изучая документацию (благо она есть в достатоточном количестве) и сопутствующие форумы.
    Более сложный, но наиболее продуктивный метод изучения всех тонкостей SIP-протокола (на котором собственно все это безобразие базируется) - это развернуть OpenSIPS и проштрудить вот этот документ (можно найти "бесплатный" вариант).
    Так же стоит обратить внимание на FreeSwitch (офф документации вполне может быть достаточно на первоначальном уровне).
    Ответ написан
    Комментировать
  • Есть ли SIP софтфон который может открыть браузер?

    KolyaniuS
    @KolyaniuS
    безнадежный оптимист
    sipml5
    правда будет работать только в браузерах, которые поддерживают webrtc
    Ответ написан
    Комментировать
  • Как понять кто удаляет файлы?

    KolyaniuS
    @KolyaniuS Автор вопроса
    безнадежный оптимист
    Пока ползал - файлы снова удалились
    Посмотрел lsof что там происходит и выловил кучу событий на подобие этого

    httpd 11538 asterisk DEL REG 252,3 3015321 /var/www/html/admin/modules/asteriskinfo/i18n/ru_RU/LC_MESSAGES/asteriskinfo.mo
    Как теперь через /proc или lsof отследить какой процесс инициировал эти действия?
    Ответ написан
    Комментировать
  • Как перевести звонок в транк, если экстеншн недоступен?

    KolyaniuS
    @KolyaniuS
    безнадежный оптимист
    Как вариант - в астериске имеется функция DEVICE_STATE.
    В Вашем случае реализовать схему можно, например так:

    if (${DEVICE_STATE(${EXTEN})} = UNAVAILABLE) {
    Dial(SIP/123@sip-trunk);
    };
    Ответ написан
    Комментировать
  • Как организовать ip-телефонию для отдела продаж небольшой компании?

    KolyaniuS
    @KolyaniuS
    безнадежный оптимист
    Исходите из того, какая CRM Вам нужна - самописная либо же готовое решение (платное/свободное).
    1 Вариант - своя собственная CRM
    минусы:
    - нужен специалист-программист-альтруист, который будет тратить Ваше время/деньги/нервы на реализацию всевозможных хотелок;
    - не факт что в итоге такая CRM будет работать с Вашей системой IP-телефонии или соответствовать Вашим ожиданиям о том, как оно должно в итоге работать
    - дальнейшая поддержка проекта, что выливается в дополнительные расходы и т.д.
    плюсы:
    - возможно Вам удастся добиться того, что такая CRM будет полностью удовлетворять всем требованиям бизнес-процессов в Вашей организации
    2 Вариант - бесплатная CRM (свободно распространяемая)
    Подходящие под Ваши перечисленные требования (интегрируются с тем же Астериском) могу назвать sugarCRM, vtigerCRM.
    минусы:
    - опять же нужен специалист. который все это установит/настроит/сконфигурирует;
    - придется довольствоваться теми функциональными возможностями, которые данные CRM предоставляют
    плюсы:
    - изобретать собственный велосипед не нужно.
    3 Вариант - платные готовые CRM
    Исходите из того, сколько человек будет пользоваться такой системой сейчас и в дальнейшем.
    Такие системы поставляются либо в облаке, либо как готовые десктопные решения и выбирать ту или иную следует именно в соответствии с данным фактом.
    Посчитайте для начала расходы на внедрение CRM и только потом, исходя из того. что предлагают другие компании, сделайте вывод - стоит ли самому городить огород с астерисками и потом навешивать на него свой/готовый инструментарий и потом заниматься поддержкой всего этого безумия на грани падения или же переплатить на первоначальном этапе и не забивать голову лишними проблема в дальнейшем.
    Из того, с кем приходилось сталкиваться:
    МангоОфис - дорого, не удобно, техподдержка никакая
    sipuni - нет CRM, дорого, очень классный инструментарий
    telphin - нет CRM, дешевая связь
    dom.ru - даже близко не облачная АТС, нет CRM
    zadarma - связь дешевая, но соответственно никакая
    Ответ написан
  • Как прозвонить на определенный внешний мобильный номер и в случае поднятия трубки абонентом тут же прервать связь?

    KolyaniuS
    @KolyaniuS
    безнадежный оптимист
    context out {
    _X.=> {
    ...
    Dial(SIP/number@provider,,M(postdial^${DIALSTATUS}));
    ...
    };
    };
    macro macro-postdial {
    catch s {
    if (${ARG1} = ANSWER) { Hangup; };
    };
    };
    Ответ написан
  • Каким образом можно написать простой sip server и sip client (софтфон)?

    KolyaniuS
    @KolyaniuS
    безнадежный оптимист
    https://code.google.com/p/p2p-sip/ - простой пир-ту-пир SIP-сервер на питоне. Берите исходники и ковыряйте.
    www.creytiv.com/baresip.html - открытая библиотека под SIP-клиента на сях.
    Ответ написан
    Комментировать