• Просто ярлычок на сайте

      Знаете ведь, что есть такое маленькое дело, которое и делать-то недолго и просто, но вот почему-то оно висит недоделанное долго. И в определенный день решаешь, все, сегодня сделаю. И делаешь. И живешь спокойно дальше.


      Так у меня было с ярлычком для сайта. Коллега предложил добавить на сайт небольшой яркий ярлычок, чтобы по нему кликали и переходили на страницу «Оставить заявку в техническую поддержку». Пользователи и раньше могли оставить заявку в техническую поддержку через эту страницу. И телефон указан. Но хотелось, чтобы был такой ярлычок всегда сбоку. И всегда под рукой.
      Читать дальше →
    • Ryo CDR: еще один asterisk CDR viewer

        Для астериска, наверное, только ленивый не писал cdr viewer. Таких решений полно: asterisk cdr viewer, agcdr,  asterisk cdr viewer mod (статья на Хабре), cdr-stats и еще много других, которых я не знаю.

        Но не требовалась функциональность крутых фильтров, сортировок-группировок, а нужен просто просмотр данных по звонкам за день, возможность прослушивать запись разговора и защита паролем. Чтобы бизнес-тетушка, сидя на заднем кресле автомобиля, пока ее муж, объезжая вечерние пробки, везет ее домой, могла взять планшет и посмотреть данные по звонкам своих сотрудников и быстро прослушать записи разговоров.

        Недолго поискав по гитхабу, я наткнулся на webcdr. Немного обработал его напильником: убрал лишнее, добавил http basic авторизацию и получил необходимый вариант cdr viewer'а. C привычным тетушке веб-интерфейсом в стиле Twitter Bootstrap. Тетушка довольна.

        image

        Далее немного деталей.

        Читать дальше →
      • Asterisk: ngrep, sipgrep, sngrep, protocol diagram

          Это небольшая заметка о паре утилит, которые использую время от времени для работы с астериском (для отладки телефонии и просмотра SIP пакетов). Многие коллеги не знают о более простых утилитах, которые могли бы сэкономить минутку-другую рабочего времени.

          Далее речь пойдет о ngrep, sipgrep, sngrep, js-sequence-diagrams
          Читать дальше →
        • Asterisk: каждый звонок как прыгающий мячик

            В эти предпраздничные дни, когда отчасти должен проводить время на работе, но изменения в рабочие системы уже не вносятся, ибо «скоро праздники, кому нужны твои свежие баги?», можно заняться вырезанием звездочек и снежинок из бумаги и маленькими экспериментами.

            В общем, мы с вами не раз слышали такое выражение: «мой звонок пинали как мячик от оператора к оператору, и в итоге отфутболили», а может даже сами когда-то такое сказали в сердцах. И подумалось, а ведь если представить звонок как скачуший мячик от стенке к стенке, а так как у нас несколько десятков звонков бывает на астериске одномоментно, то это должно выглядеть как минимум забавно.

            Что получилось? Далее детали и небольшое видео.

            image
            Читать дальше →
          • Asterisk + LUA: быстрый старт

              За последний год на Хабре появилось несколько статей про использование диалплана lua в asterisk (раз, два, три, четыре). Это достаточно интересный способ написания гибких и мощных диалпланов. Но чтобы попробовать такой способ написания диалпланов надо потратить некоторое количество времени: установить нужные библиотеки, пересобрать с необходимыми опциям астериск.

              Вдобавок у многих пользователей asterisk'а разный уровень подготовки: кто-то ближе к системному администрированию или даже к традиционной телефонии, чем к программированию. Плюс специфика телефонии — лучше лишний раз незнакомыми экспериментами не нагружать работающие системы, а проводить тесты и эксперименты на своем ноутбуке — приходится захламлять систему. В общем, есть немало причин «отложить на потом».

              В данной статье я хочу показать всем желающим и работающим с астериском, как, используя docker, можно быстро ощутить вкус гибких сценариев lua. А уж затем решить стоит этим пользоваться дальше на практике или нет. (Кому неинтересно читать, а интересно смотреть и слушать — в конце текста 6-минутное видео с основными моментами и результатом.)


              Читать дальше →
            • Быстрые помощники для вашего Asterisk'а

                Эта статья подводит промежуточный итог в разработке моих приложений для asterisk'а. Все началось в новогодние праздники, когда мне захотелось сделать быстрый голосовой набор на asterisk'е. Затем был реализован поиск направления по номеру звонящего (полезная штука для входящих на номера 8-800). Затем была пара заказных проектов. А недавно еще и LCR для asterisk. Все эти приложения разработаны с использованием библиотеки ding-dong, которая позволяет работать с AGI (Asterisk Gateway Interface) в node.js приложении.

                Далее я хотел бы показать, что используя node.js и ding-dong, можно быстро разрабатывать полезные приложения для астериска.
                Читать дальше →
              • Маршрутизация по наименьшей стоимости (LCR) в Asterisk

                  Тема актуальная. Для меня как для корпоративного телефониста лет пять-десять назад всегда была задача настроить функцию ARS на Panasonic TDA100/200/600 или LCR на LG LDK100/300. В общем, сделать так чтобы подешевле звонить было. Но времена меняются, и сейчас у многих компаний используется Asterisk, а я уже не настраиваю УПАТС Panasonic, LG и прочие.

                  В Астериске, всем известно, вся маршрутизация делается в диалплане. Но если у оператора много направлений и цена на каждое из них различна, то в диалплане получаются портянки на несколько страниц. Решения разные: кто-то разбивает по разным файлам диалплана, использует макросы, кто-то подключает к работе БД, кто-то выносит на отдельный сервис.

                  Я хочу поделиться своим решением: вынести поиск оператора с наименьшей стоимостью заданного направления в стороннее приложение на node.js, с которым Астериск взаимодействует посредством AGI.


                  Читать дальше →
                • Разработка архитектуры системы через сервисно-ресурсную модель

                    Хочу предложить немного обсудить тему сервисно-ресурсной модели и спросить о необходимости разработки инструмента для использования сервисно-ресурсной модели в проектировании, разработке и дальнейшей эксплуатации систем.

                    Исходная позиция: разрабатываю и эксплуатирую с коллегами онлайн-систему, которая обслуживает сотни клиентов. Наша система работает на нескольких серверах, использует несколько БД, использует очереди сообщений, внешние сервисы для отправки смс и почты. Типичная ситуация? Вполне.

                    Что хочу получить?

                    Хочу получить более прозрачную систему для охвата всей картины подшефного хозяйства, чтобы видеть узкие места, видеть зависимости одних частей системы от других, знать, что ssh на одном сервере крайне важен для «вон того маленького обработчика», который работает по ночам на другом сервере.
                    Читать дальше →
                  • Отправка смс через шлюз Openvox VoxStack

                      Статья, вероятно, будет интересна только обладателям GSM шлюзов OpenVox линейки VoxStack, настоящим и потенциальным. Известно, что внутри этих шлюзов находится полноценный Asterisk. Который имеет дополнительные команды в AMI и CLI для отправки смсок.



                      [Фото из топика с хорошим описанием функционала этих GSM шлюзов]

                      Далее хочу представить вам две небольшие наработки на node.js, которые позволили мне сделать отправку смс через VoxStack более удобной.

                      Читать дальше →
                    • Астериск: маршрутизация по номеру звонящего и коду региона

                        Информация далее, возможно, будет интересна тем, кто использует астериск, получает на него номер 8-800 и имеет абонентов в офисах, которые расположены в нескольких городах РФ.

                        Мое решение классической задачи астерискера-телефониста: бизнес хочет, чтобы на звонки Дальнего Востока отвечал офис во Владивостоке, звонки Урала и Сибири — офис в Новосибирске, а на все остальные — офис в Москве.

                        Можно воспользоваться вариантом, представленным ранее на Хабре в статье, но я решил сделать решение немного более универсальным. Далее детали реализации и видео-инструкция.
                        Читать дальше →