kazoomeetup moscow 2015. Михаил Родионов. Введение в kazoo (kazoo 101)
TRANSCRIPT
KAZOO 101KAZOO 101
Михаил Родионов ([email protected])
ПРОЕКТ
ИСТОРИЯ
Компания 2600hz:● Основана в 2010м● Часть сотрудников пришли из проекта blue.box (PHP+FreeSWITCH)
● Проект Whistle (свисток)● Whistle 2.0 → KAZOO● KAZOO v3 (2013г)● KAZOO v4 (2016г)
ОСОБЕННОСТИ
● Проект основан “собственными силами” (без стартапных денег от VC и т.п.
● Большая ИДЕЯ устроить революцию в телеком-индустрии
● Open Source, лицензия MPL● Облачность, масштабируемость и отказоустойчивость – “в ДНК”
● API и внешние интерфейсы
АКТИВНОСТЬ
ПРИЧЁМ ТУТ МЫ?
ИСПОЛЬЗУЕМОЕ ПО 3RD PARTY
Erlang
Erlang используется в многих компонентах KAZOO
● RabbitMQ - Erlang● BigCouch – Erlang● KAZOO eCallMgr - Erlang● KAZOO Applications - Erlang● Kamailio – C● Freeswitch – C/C++● HAProxy – C
МОНЕТИЗАЦИЯ
Компания 2600hz – оператор связи● Предоставляет whitelabeled hosted-платформу и приложения (SaaS)
● Предоставляет услуги поддержки KAZOO● Предоставляет услуги доработки KAZOO● Разрабатывает коммерческие расширения● Имеет собственную MVNO
ПЛАТФОРМА
ФУНКЦИОНАЛЬНАЯ
Функциональная платформа Виртуальных АТС● Произвольная нумерация● Звонки, переводы звонков● Удержание, парковка● Запись разговоров● Конференции● Голосовая почта, факсы● Группы обзвона, переадресации● Presence, BLF
ФУНКЦИОНАЛЬНАЯ
● TTS/ASR● Медиа-ресурсы и Say● HTTP-запросы Pivot● Web-хуки● Управление CallerID● Подключениие собственных ITSP● Служебные коды (ДВО)● Очереди вызовов*● ….
БЕЗОПАСНАЯ
● Полная изоляция клиентов друг от друга● Одно устройство – один SIP-аккаунт● Ограничение количества транков● Ограничения по IP (IP ACL)● Ограничения packet rate● API-токены с ограниченным сроком жизни● Ограничение API request rate● API Token restrictions● TLS/SRTP● WSS/DTLS
Архитектура системы KAZOO
SBC
MediaAMQP eCallMgr
Приложения (Whapps)
База данных
Erlang
AMQP
HTTP
SIP
МАСШТАБИРУЕМАЯ
● Кластеры горизонтально масштабируются добавлением узлов
● Кластеры соединяются между собой в отказоустойчивые гео-распределённые структуры
Архитектура системы KAZOO
SBC
MediaAMQP eCallMgr
Приложения (Whapps)
База данных
Erlang
AMQP
HTTP
SIP
ОТКАЗОУСТОЙЧИВАЯ
● Отсутствие единой точки отказа● Возможность резервирования кластеров● Все компоненты дублируются
Архитектура системы KAZOO
SBC
Media
AMQP
eCallMgr
Приложения (Whapps)
База данных
SBC
AMQP
eCallMgr
Media
Приложения (Whapps) Приложения (Whapps)
База данныхБаза данныхБаза данных
Архитектура системы KAZOO
SBC
Media
AMQP
eCallMgr
Приложения (Whapps)
База данных
SBC
AMQP
eCallMgr
Media
Приложения (Whapps) Приложения (Whapps)
База данныхБаза данныхБаза данных
SBC
Media
AMQP
eCallMgr
Приложения (Whapps)
База данных
SBC
AMQP
eCallMgr
Media
Приложения (Whapps) Приложения (Whapps)
База данныхБаза данныхБаза данных
ЦОД 1 ЦОД 2
● Многозоновая конфигурация – отказоустойчивость и распределение нагрузки между многими кластерами
● Естественный способ масштабирования платформы
ОБЛАЧНАЯ
● Взаимодействие компонент по открытым протоколам (HTTP, AMQP, Erlang)
● Работа в VM (в т.ч. в публичных облаках)● Отказоустойчивость● Масштабируемость по мере роста нагрузки
ОСНОВНЫЕ ПОНЯТИЯ
СУЩНОСТИ
Account
Account
AccountUser
User
User
Device
Device
Device
Conference
СУЩНОСТИ
Основные сущности внутри аккаунтов:● Users● Devices● Callflows● VMBoxes● FAXBoxes● Conferences● Lists● Media
ОРГАНИЗАЦИИ (ACCOUNTS)
● Name● Realm (FQDN)● CALLER-ID● Outbound flags● Хранятся в отдельных БД● Являются контейнерами
ПОЛЬЗОВАТЕЛИ (USERS)
● Физлица● Имя, Фамилия, Email● CALLER-ID● Аватар● Произнесённое имя● Перенаправление● Username/password
УСТРОЙСТВА (DEVICES)
● Принадлежат пользователям● SIP-устройства● Мобильные● Устройства перенаправления● SIP credentials● CALLER-ID● PRESENCE-ID● НЕ ИСПОЛЬЗУЮТСЯ БОЛЕЕ ЧЕМ НА ОДНОМ ФИЗИЧЕСКОМ УСТРОЙСТВЕ
СЦЕНАРИИ (CALLFLOWS)
● Имеют НОМЕРА● Цепочка вызовов “модулей”:
● Вызов пользователя/устройства● Воспроизведение● Меню● Приём факса● ….
● ВЕТВЛЕНИЕ
ГОЛОСОВАЯ ПОЧТА
● Собственные приветствия● Отправка на Email● Голосовое меню● Новые/Просмотренные и т.п.● Защита PIN-кодом● Соответствие номеру Extension● Оповещение звонком
ФАКСЫ
● Отправка на почту (fax2email)● Отправка ИЗ почты (email2fax)● Интеграция с Google Cloud Printer● PDF/TIFF/Картинки/Офисные форматы (unoconv)
● Поддержка T.38
КОНФЕРЕНЦИИ
● Аудиоконференции● Более чем на одном сервере● Видео MCU (FreeSWITCH 1.6/KAZOO 4)● Различные профили (SD, HD, ограничения)● MeetMe, серверы конференций● Защита PIN-кодами● API
СПИСКИ (LISTS)
● Списки контактов● Поиск по списку● Сравнение со списком (match)● Универсальный инструмент
ИДЕНТИФИКАТОРЫ (ID)
● 32 символа (HEX)● Используются повсеместно● Уникальны внутри БД
API
API
● REST + JSON● Простая и понятная структура● Схемы данных● Функциональная полнота (через API доступно ВСЁ)
Биллинг
Встроенный биллинг
● Postpay● Prepay● Пополнения● Автоматические пополнения (ограничения)● Bursts● Toll free● Поддержка реселлеров
CDR
● CDR содержат очень много информации о каждом плече
● Доступны через API● Доступны на шине AMQP
СЕРВИСНЫЕ ПЛАНЫ
● Цены транков● Цены “мест”● Подсчёт количеств● Ограничения количеств
Ratedecks
● Цены минут направлений● (not merged) Множественные тарифные сетки
● Импорт CSV
GUI/UI
ВАЖНО
KAZOO – ЭТО НЕ UI
“OLD” KAZOO UI
● Drag and Drop● JS + JQuery● УМРЁТ ВЕСНОЙ
“OLD” KAZOO UI
MONSTER UI
● Monster UI framework● Изначально многоязычный● Приложения● Магазин приложений● Современный вид● JavaScript
MONSTER UI SmartPBX
Будущее
KAZOO V4
● Erlang 18● FreeSWITCH 1.6● CouchDB 2● Federations● Q4-2015 – Q1-2016● Движение в сторону выноса логики в Kamailio
БУДУЩЕЕ УЖЕ НАСТУПИЛО
Наши проекты
Списки (Lists)
Универсальные списки (API) Поддержка VCARD Поддержка аватаров Модули Callflow
Охрана периметра - Frontier
IP ACLs на уровне account и device
Ограничения packet rate
Скоро: временные блокировки
Защита SIP, API и не только
RADIUS/AAA
Нативная реализация KAZOO Полноценный клиент AAA authn, authz, accounting,
session times, interim updates, disconnect packets
Произвольные словари RADIUS Возможность добавить DIAMETER Дружественен к реселлерам Модуль произвольных запросов
FMC (Узнавание по CallerID)
“Опознание” своих устройств по CallerID
Ассоциация с account/device Звонки с мобильных на
внутренние Улучшения DTMF Может использоваться как основа
при построении MVNO
Мелочи
CAMP-ON Eavesdrop Приоритеты ACD Стратегия случайного обзвона с
весами для ring-group Поддержка unoconv (форматы Office) и
изображений для FAX Временные приветствия voicemail Выбор операторов (outbound_flags) для
accounts Поддержка Voicefabric TTS Monster-UI Russian i18n files
Ещё мелочи...
Call Waiting на стороне сервера Метод PATCH для большинства
модулей API Модификации записи разговоров Приветствие в конференциях
записанным именем Системные коллекции dial-plans Множественные фиксы DTMF-команд Исправления ACD И т.п.
Сейчас в работе
Проект Ananke
Оригинирование вызовов по расписанию
Пример – звонки ОТ voicemail Управление попытками Планировщик, учитывающий
часовые пояса
*Ananke – Богииня судьбы (в греческой мифологии)
Проект Stromboli
Provisioner Политики настроек Многолинейные
устройства Безопасность!!! Частично open source
(для Yealink) Интеграция телефонных “фич”
Проект Bluemoon
Поддержка LUA внутри callflows и API
Работа с данными звонка в реальном времени
Расширение API скриптами
Проект Wormhole
Связь между accounts
Подключение клиентских АТС в состав облачной нумерации
Тонкая настройка манипуляций с CallerID
Безопасность в приоритетах
СПАСИБО ЗА ВНИМАНИЕ!
Михаил Родионов, [email protected]