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. менять цвет мячика в зависимости от статуса звонка или длительности ожидания ответа. Но для мониторинга качества обслуживания есть другие программные продукты.

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

Всем отличного настроения!

© Habrahabr.ru