Asterisk: каждый звонок как прыгающий мячик

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

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

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

    image

    Как здесь все устроено?


    Самым простым способом. При звонке, который в диалплане астериска выполняется приложением Dial в AMI бросается событие Dial (subevent: begin), а когда такой звонок завершается, то происходит событие Dial (subevent: end).

    Т.е. мы пишем небольшой веб-сервер на node.js, которое слушает эти события в AMI и затем передает их всем браузерам, которые зашли на веб-страничку и подключились к websockets.

    Для отображения скачущих мячиков на веб-странице в html5 canvas воспользуемся библиотекой konva. Скорость и направление движения, а также цвет мячиков случайные в допустимом интервале.

    Как установить?


    Использую ubuntu 14.04

    1. Клонируем репозиторий:

    git clone https://github.com/antirek/bounce-call.git
    

    2. Перейдем в директорию bounce-call и установим зависимости:

    cd bounce-call 
    npm install && bower install
    

    3. Правим конфигурационный файл config.js:

    {
        port: 3100,    //порт веб-сервера
        asterisk: {      // настроить в manager.conf астериска
            host: 'localhost',
            port: 5038,
            username: 'admin',
            password: 'admin'
        }
    };
    

    4. Запускаем приложение:

    node app.js
    

    И если у вас все получилось, то у вас в браузере должны начать летать мячики, появляясь при инициировании вызова и исчезая при завершении вызова. Как на видео.



    Репозиторий: github.com/antirek/bounce-call

    Что дальше?


    Коллеги предлагали интересные дополнения:

    1. сделать игру по типу Moorhuhn: попал по мячику — звонок завершен. Но это, согласитесь, как-то не вписывается в рамки качественного телефонного сервиса.

    2. менять цвет мячика в зависимости от статуса звонка или длительности ожидания ответа. Но для мониторинга качества обслуживания есть другие программные продукты.

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

    Всем отличного настроения!
    Поделиться публикацией

    Комментарии 3

      +1
      Первая ассоциация со скриншотом — agar.io :D
        +1
        Мне больше напомнило d3 и производные от нее библиотеки, к примеру bl.ocks.org ))
        +1
        В теории туда можно и карту прикрутить.
        А потом смотреть кто кому «голы» забивает, но это так, Just For Fun

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое