• Телеграм: отправка сообщений на номер мобильного в чат с ботом

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


      Традиционно уведомления о пропущенных звонках отправлялись или на емейл, или на мобильный в виде смс. С появлением Телеграм стало возможным отправлять сообщения в мессенджер. Одна незадача: мы не можем отправить сообщение именно на номер мобильного.


      А нам это удобнее, т.к. номера мобильных у нас уже есть (у нас есть сотни абонентов, желающих получать уведомления :), а chat id еще найти надо, да еще и для каждого свой.


      Решение: небольшой чат-бот.

      Читать дальше →
      • +4
      • 15,3k
      • 5
    • Просто ярлычок на сайте

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


        Так у меня было с ярлычком для сайта. Коллега предложил добавить на сайт небольшой яркий ярлычок, чтобы по нему кликали и переходили на страницу «Оставить заявку в техническую поддержку». Пользователи и раньше могли оставить заявку в техническую поддержку через эту страницу. И телефон указан. Но хотелось, чтобы был такой ярлычок всегда сбоку. И всегда под рукой.
        Читать дальше →
      • 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 и имеет абонентов в офисах, которые расположены в нескольких городах РФ.

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

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

                            Статей по использованию сервисов распознавания речи в asterisk от Google и Яндекса на Хабре уже есть несколько. Но всегда хочется сделать что-нибудь свое и как-нибудь по-своему.

                            Так вот, хотелось сделать быстрый голосовой вызов абонентов из адресной книжки. Когда в организации работаешь с несколькими десятками человек, каждый день иногда забываешь и путаешь внутренние номера абонентов (а кнопок быстрого набора на всех не хватает). Поэтому просто надо, чтобы нажал кнопочку, сказал «Зина из третьего мобильный» и тебе отвечает Зина из третьего на своем мобильном.

                            Короткое видео с демонстрацией работы:


                            Читать дальше →
                          • Numcap — npm для определения оператора и региона по номеру телефона

                              Тем, кто работает с телефонией, приложениями связанных со звонками и т.п. время от времени приходится сталкиваться с вопросами: «а можно определять с какого региона этот звонок?» и «а этот номер какого мобильного оператора?»

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

                              Но ведь можно автоматизировать этот поиск? Конечно. И многие аккуратно парсят этот CSV и складывают к себе в базу данных. А затем используют. Я тоже так делаю.

                              Но недавно с моим коллегой мы решили немного это упаковать и сделать npm для быстрого подключения ресурса нумерации к проекту на node.js.

                              Ссылка на гитхаб, ссылка на npm.

                              Далее немного деталей.
                              Читать дальше →
                            • Свои карты на leaflet.js

                                В городе Красноярске намечено проведение Универсиады в 2019 году, в связи с этим и не только администрация Красноярска проводит разработку генерального плана территориального развития города до 2033 года. Недавно чиновники выложили схемы генерального плана на сайте администрации города для общественного обсуждения. Но вот незадача: просмотр и анализ схем неудобен, потому что файлы имеют большие размеры и разрешение. Например, файл основной схемы имеет размер 43,34Мб и разрешение 19256x16019px. У меня компьютер тормозит при просмотре такой картинки.

                                Немного поскриптовав с коллегами, сделали вот такую интерактивную карту antirek.github.io/krskmap/main/index.html



                                Далее немного подробнее, как сделать свою карту на leaflet.js из картинки с большим разрешением.

                                Читать дальше →
                              • Scrawl — скриншотер сайтов и безопасность веб-интерфейсов SIP-устройств

                                  Все началось с того, что некоторые абоненты, подключающиеся по протоколу SIP к нашей корпоративной АТС без использования VPN, не соблюдали основы безопасности и оставляли на внешнем IP-адресе доступ к веб-интерфейсу или роутера, или IP-шлюза со стандартным логином-паролем. Что дает потенциальным злоумышленникам возможность получить настройки, прикинуться нашим абонентом и сделать множество звонков по междугородним направлениям.

                                  Сначала просто CURL'ом подергал IP-адреса абонентов (выявилось, что некоторые аппараты при простом HTTP POST запросе ребутятся), а затем захотелось как-нибудь с изюминкой просканировать да красоту получить. В общем, получился Scrawl — скриншотер сайтов (сайт проекта, репозиторий).

                                  На модной волне headless браузеров захотелось попробовать PhantomJS, более удобный интерфейс к которому дает CasperJS, а затем стало желательно использовать совместно с Node.JS, поэтому стал использовать SpookyJS.

                                  Читать дальше →
                                • Pixi-editor — простая рисовалка на pixi.js

                                    Занимаясь одним большим проектом, добавил небольшую функциональность — выделение «маркером». Затем выделил эту часть в Pixi-editor. И теперь Pixi-editor — это рисовалка на основе pixi.js, и как следствие использует для рисования в браузере. Довел до примерного функционала рисовалки граффити Вконтакте.

                                    Кому любопытно: демо, гитхаб.
                                    Далее скриншот и пара комментариев.
                                    Читать дальше →
                                  • yandex-speech — wrapper к речевым технологиям Яндекса

                                      Ознакомившись с обзором движков для распознавания речи, заметил там API от Яндекса. И на выходных написал небольшую обертку для Node.js для распознавания речи с целью поиска мата в своих телефонных разговорах. По мотивам топика на Хабре.

                                      Список нецензурных слов выкладывать не буду, а сам npm устанавливается командой.
                                      npm install yandex-speech
                                      


                                      Исходники и примеры использования:
                                      github: www.github.com/antirek/yandex-speech

                                      Немного деталей:
                                      Читать дальше →
                                      • +21
                                      • 11,8k
                                      • 6
                                    • Dalek.js — простое функциональное тестирование веб-приложений

                                        Вы знаете, что такое Selenium и/или PhantomJS? И с чем их едят? Тогда, возможно, вам будет интересен проект Dalek.js — кроссбраузерная утилита для тестирования веб-приложений.

                                        Dalek.js позволяет писать тесты, которые ходят по веб-страничкам, щелкают ссылки, заполняют формы, отправляют данные и делают скриншоты. То же самое и даже больше делают тесты, написанные с использованием Selenium'а или Phantom.js, в чем подвох?

                                        Читать дальше →
                                      • HuGu — коллективный плейер музыки Вконтакте на node.js

                                          Зачем это надо? А вспомним ситуацию: в офисе работают несколько человек, и у одного к компьютеру подключены музыкальные колонки. — «Вась, смени LoveRadio! Поставь Рамштайна!» И Вася, отвлекаясь от отчета/игры/мысли: «Надоел Рамштайн, давайте лучше „Поющие трусы“ поставлю? Мегазачотные песни!»

                                          А может ли каждый добавлять свои любимые музыкальные композиции в общий плейлист? Через браузер? Из плейлиста Вконтакте? Да, может.
                                          Читать дальше →
                                        • Отложенный вызов на Астериск

                                            Проблема стара как АТС Панасоник в вашем офисе. Если она, конечно, еще есть.
                                            При внедрении Астериска работники с опытом всегда хотят оставить прежний набор функционала АТС, которым они привыкли пользоваться. И одной из киллер-фич Панасоника была «6-ка» — отложенный вызов.

                                            «Я ему звоню, а у него 'занято'! Дык, я тогда хоп '6' жму и трубку ложу, а как он освободится так и АТСка мне перезвонит» — с удовольствием рассказывает Михалыч, наш завсклада. «А твоя чудо-машина может?»

                                            Оу, а неужели Астериск умеет делать «6»-ку из коробки? Далее будет развернутый положительный ответ на данный вопрос с еще небольшим количеством баек.

                                            Читать дальше →
                                            • +10
                                            • 4,8k
                                            • 2