61
KAZOO 101 KAZOO 101 Михаил Родионов ([email protected])

KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Embed Size (px)

Citation preview

Page 1: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

KAZOO 101KAZOO 101

Михаил Родионов ([email protected])

Page 2: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ПРОЕКТ

Page 3: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ИСТОРИЯ

Компания 2600hz:● Основана в 2010м● Часть сотрудников пришли из проекта blue.box (PHP+FreeSWITCH)

● Проект Whistle (свисток)● Whistle 2.0 → KAZOO● KAZOO v3 (2013г)● KAZOO v4 (2016г)

Page 4: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ОСОБЕННОСТИ

● Проект основан “собственными силами” (без стартапных денег от VC и т.п.

● Большая ИДЕЯ устроить революцию в телеком-индустрии

● Open Source, лицензия MPL● Облачность, масштабируемость и отказоустойчивость – “в ДНК”

● API и внешние интерфейсы

Page 5: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

АКТИВНОСТЬ

Page 6: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ПРИЧЁМ ТУТ МЫ?

Page 7: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ИСПОЛЬЗУЕМОЕ ПО 3RD PARTY

Page 8: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Erlang

Erlang используется в многих компонентах KAZOO

● RabbitMQ - Erlang● BigCouch – Erlang● KAZOO eCallMgr - Erlang● KAZOO Applications - Erlang● Kamailio – C● Freeswitch – C/C++● HAProxy – C

Page 9: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

МОНЕТИЗАЦИЯ

Компания 2600hz – оператор связи● Предоставляет whitelabeled hosted-платформу и приложения (SaaS)

● Предоставляет услуги поддержки KAZOO● Предоставляет услуги доработки KAZOO● Разрабатывает коммерческие расширения● Имеет собственную MVNO

Page 10: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ПЛАТФОРМА

Page 11: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ФУНКЦИОНАЛЬНАЯ

Функциональная платформа Виртуальных АТС● Произвольная нумерация● Звонки, переводы звонков● Удержание, парковка● Запись разговоров● Конференции● Голосовая почта, факсы● Группы обзвона, переадресации● Presence, BLF

Page 12: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ФУНКЦИОНАЛЬНАЯ

● TTS/ASR● Медиа-ресурсы и Say● HTTP-запросы Pivot● Web-хуки● Управление CallerID● Подключениие собственных ITSP● Служебные коды (ДВО)● Очереди вызовов*● ….

Page 13: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

БЕЗОПАСНАЯ

● Полная изоляция клиентов друг от друга● Одно устройство – один SIP-аккаунт● Ограничение количества транков● Ограничения по IP (IP ACL)● Ограничения packet rate● API-токены с ограниченным сроком жизни● Ограничение API request rate● API Token restrictions● TLS/SRTP● WSS/DTLS

Page 14: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Архитектура системы KAZOO

SBC

MediaAMQP eCallMgr

Приложения (Whapps)

База данных

Erlang

AMQP

HTTP

SIP

Page 15: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

МАСШТАБИРУЕМАЯ

● Кластеры горизонтально масштабируются добавлением узлов

● Кластеры соединяются между собой в отказоустойчивые гео-распределённые структуры

Page 16: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Архитектура системы KAZOO

SBC

MediaAMQP eCallMgr

Приложения (Whapps)

База данных

Erlang

AMQP

HTTP

SIP

Page 17: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ОТКАЗОУСТОЙЧИВАЯ

● Отсутствие единой точки отказа● Возможность резервирования кластеров● Все компоненты дублируются

Page 18: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Архитектура системы KAZOO

SBC

Media

AMQP

eCallMgr

Приложения (Whapps)

База данных

SBC

AMQP

eCallMgr

Media

Приложения (Whapps) Приложения (Whapps)

База данныхБаза данныхБаза данных

Page 19: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Архитектура системы 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

● Многозоновая конфигурация – отказоустойчивость и распределение нагрузки между многими кластерами

● Естественный способ масштабирования платформы

Page 20: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ОБЛАЧНАЯ

● Взаимодействие компонент по открытым протоколам (HTTP, AMQP, Erlang)

● Работа в VM (в т.ч. в публичных облаках)● Отказоустойчивость● Масштабируемость по мере роста нагрузки

Page 21: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ОСНОВНЫЕ ПОНЯТИЯ

Page 22: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

СУЩНОСТИ

Account

Account

AccountUser

User

User

Device

Device

Device

Conference

Page 23: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

СУЩНОСТИ

Основные сущности внутри аккаунтов:● Users● Devices● Callflows● VMBoxes● FAXBoxes● Conferences● Lists● Media

Page 24: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ОРГАНИЗАЦИИ (ACCOUNTS)

● Name● Realm (FQDN)● CALLER-ID● Outbound flags● Хранятся в отдельных БД● Являются контейнерами

Page 25: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ПОЛЬЗОВАТЕЛИ (USERS)

● Физлица● Имя, Фамилия, Email● CALLER-ID● Аватар● Произнесённое имя● Перенаправление● Username/password

Page 26: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

УСТРОЙСТВА (DEVICES)

● Принадлежат пользователям● SIP-устройства● Мобильные● Устройства перенаправления● SIP credentials● CALLER-ID● PRESENCE-ID● НЕ ИСПОЛЬЗУЮТСЯ БОЛЕЕ ЧЕМ НА ОДНОМ ФИЗИЧЕСКОМ УСТРОЙСТВЕ

Page 27: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

СЦЕНАРИИ (CALLFLOWS)

● Имеют НОМЕРА● Цепочка вызовов “модулей”:

● Вызов пользователя/устройства● Воспроизведение● Меню● Приём факса● ….

● ВЕТВЛЕНИЕ

Page 28: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ГОЛОСОВАЯ ПОЧТА

● Собственные приветствия● Отправка на Email● Голосовое меню● Новые/Просмотренные и т.п.● Защита PIN-кодом● Соответствие номеру Extension● Оповещение звонком

Page 29: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ФАКСЫ

● Отправка на почту (fax2email)● Отправка ИЗ почты (email2fax)● Интеграция с Google Cloud Printer● PDF/TIFF/Картинки/Офисные форматы (unoconv)

● Поддержка T.38

Page 30: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

КОНФЕРЕНЦИИ

● Аудиоконференции● Более чем на одном сервере● Видео MCU (FreeSWITCH 1.6/KAZOO 4)● Различные профили (SD, HD, ограничения)● MeetMe, серверы конференций● Защита PIN-кодами● API

Page 31: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

СПИСКИ (LISTS)

● Списки контактов● Поиск по списку● Сравнение со списком (match)● Универсальный инструмент

Page 32: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ИДЕНТИФИКАТОРЫ (ID)

● 32 символа (HEX)● Используются повсеместно● Уникальны внутри БД

Page 33: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

API

Page 34: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

API

● REST + JSON● Простая и понятная структура● Схемы данных● Функциональная полнота (через API доступно ВСЁ)

Page 35: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Биллинг

Page 36: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Встроенный биллинг

● Postpay● Prepay● Пополнения● Автоматические пополнения (ограничения)● Bursts● Toll free● Поддержка реселлеров

Page 37: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

CDR

● CDR содержат очень много информации о каждом плече

● Доступны через API● Доступны на шине AMQP

Page 38: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

СЕРВИСНЫЕ ПЛАНЫ

● Цены транков● Цены “мест”● Подсчёт количеств● Ограничения количеств

Page 39: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Ratedecks

● Цены минут направлений● (not merged) Множественные тарифные сетки

● Импорт CSV

Page 40: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

GUI/UI

Page 41: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

ВАЖНО

KAZOO – ЭТО НЕ UI

Page 42: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

“OLD” KAZOO UI

● Drag and Drop● JS + JQuery● УМРЁТ ВЕСНОЙ

Page 43: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

“OLD” KAZOO UI

Page 44: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

MONSTER UI

● Monster UI framework● Изначально многоязычный● Приложения● Магазин приложений● Современный вид● JavaScript

Page 45: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

MONSTER UI SmartPBX

Page 46: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Будущее

Page 47: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

KAZOO V4

● Erlang 18● FreeSWITCH 1.6● CouchDB 2● Federations● Q4-2015 – Q1-2016● Движение в сторону выноса логики в Kamailio

Page 48: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

БУДУЩЕЕ УЖЕ НАСТУПИЛО

Page 49: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Наши проекты

Page 50: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Списки (Lists)

Универсальные списки (API) Поддержка VCARD Поддержка аватаров Модули Callflow

Page 51: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Охрана периметра - Frontier

IP ACLs на уровне account и device

Ограничения packet rate

Скоро: временные блокировки

Защита SIP, API и не только

Page 52: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

RADIUS/AAA

Нативная реализация KAZOO Полноценный клиент AAA authn, authz, accounting,

session times, interim updates, disconnect packets

Произвольные словари RADIUS Возможность добавить DIAMETER Дружественен к реселлерам Модуль произвольных запросов

Page 53: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

FMC (Узнавание по CallerID)

“Опознание” своих устройств по CallerID

Ассоциация с account/device Звонки с мобильных на

внутренние Улучшения DTMF Может использоваться как основа

при построении MVNO

Page 54: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Мелочи

CAMP-ON Eavesdrop Приоритеты ACD Стратегия случайного обзвона с

весами для ring-group Поддержка unoconv (форматы Office) и

изображений для FAX Временные приветствия voicemail Выбор операторов (outbound_flags) для

accounts Поддержка Voicefabric TTS Monster-UI Russian i18n files

Page 55: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Ещё мелочи...

Call Waiting на стороне сервера Метод PATCH для большинства

модулей API Модификации записи разговоров Приветствие в конференциях

записанным именем Системные коллекции dial-plans Множественные фиксы DTMF-команд Исправления ACD И т.п.

Page 56: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Сейчас в работе

Page 57: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Проект Ananke

Оригинирование вызовов по расписанию

Пример – звонки ОТ voicemail Управление попытками Планировщик, учитывающий

часовые пояса

*Ananke – Богииня судьбы (в греческой мифологии)

Page 58: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Проект Stromboli

Provisioner Политики настроек Многолинейные

устройства Безопасность!!! Частично open source

(для Yealink) Интеграция телефонных “фич”

Page 59: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Проект Bluemoon

Поддержка LUA внутри callflows и API

Работа с данными звонка в реальном времени

Расширение API скриптами

Page 60: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

Проект Wormhole

Связь между accounts

Подключение клиентских АТС в состав облачной нумерации

Тонкая настройка манипуляций с CallerID

Безопасность в приоритетах

Page 61: KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)

СПАСИБО ЗА ВНИМАНИЕ!

Михаил Родионов, [email protected]