Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Обзор конфигурации Kamailio в Kazoo
Search
IqTek
October 01, 2019
Programming
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Обзор конфигурации Kamailio в Kazoo
IqTek
October 01, 2019
More Decks by IqTek
See All by IqTek
Обзор понятий и технологий VoIP
iqtek96
0
79
Техническая и программная сторона VoIP
iqtek96
0
130
WebRTC
iqtek96
1
140
2._Разработка_с_Asterisk.pdf
iqtek96
0
120
ML в VoIP
iqtek96
0
140
Ретроспектива одного проекта - IqDialer
iqtek96
0
170
FMC - интегрируем офисную телефонию с GSM сетью
iqtek96
0
77
Что нового в VoIP в 2019
iqtek96
0
64
Kamailio как proxy для WebRTC
iqtek96
0
380
Other Decks in Programming
See All in Programming
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
270
Vite+ Unified Toolchain for the Web
naokihaba
0
740
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.3k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
霧の中の代数的エフェクト
funnyycat
1
350
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
370
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
100
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
120
初めてのKubernetes 本番運用でハマった話
oku053
0
120
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
230
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
480
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
New Earth Scene 8
popppiees
3
2.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
The Curse of the Amulet
leimatthew05
2
13k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
How to train your dragon (web standard)
notwaldorf
97
6.7k
Technical Leadership for Architectural Decision Making
baasie
3
440
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
500
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
180
Transcript
Конференция Kamailio 2019 Обзор конфигурации Kamailio в Kazoo Гончаровский Игорь
Конференция Kamailio 2019 О себе • Работа с VoIP c
2005 года • Преимущественно Asterisk • Kamailio для решения побочных задач • Эксплуатация Kazoo c 2014 года
Конференция Kamailio 2019 Kazoo • OpenSource проект • Ранее использовал
opensips • Масштабируемая телефонная платформа • Ключевые компоненты ◦ Kamailio ◦ FreeSwitch ◦ RabbitMQ ◦ Erlang apps ◦ Haproxy ◦ CouchDB
Конференция Kamailio 2019
Конференция Kamailio 2019 Kamailio in Kazoo • SIP SBC •
Шлюз для Websocket • Сервер приложений • Сервисы, называемые ‘ролями’ • yum install -y kazoo-kamailio
Конференция Kamailio 2019 Модуль kamailio • Модуль db_kazoo • Конвертирует
запросы на запись и чтение • Обменивается AMQP сообщения (RabbitMQ) • В mainstream kamailio c 4.2
Конференция Kamailio 2019 int db_kazoo_bind_api(db_func_t *dbb) { dbb->init = db_kazoo_init;
dbb->use_table = db_kazoo_use_table; dbb->close = db_kazoo_close; dbb->query = db_kazoo_query; dbb->free_result = db_kazoo_free_result; dbb->insert = db_kazoo_insert; dbb->replace = db_kazoo_replace; dbb->insert_update = db_kazoo_insert_update; dbb->delete = db_kazoo_delete; dbb->update = db_kazoo_update; dbb->raw_query = db_kazoo_raw_query; dbb->cap = DB_CAP_ALL; return 0; }
Конференция Kamailio 2019 Модуль kamailio if(kazoo_query("callevt", $var(routing_key), $var(payload_request))) { $du
= $(kzR{kz.json,Channels[0].switch_url}); } event_route[kazoo:consumer-event-presence-mwi-update] { if($xavp(watchers=>message-summary) > 0) { kazoo_pua_publish_mwi($kzE); pres_refresh_watchers("$(kzE{kz.json,From})", "message-summary", 1); } }
Конференция Kamailio 2019 Функции и переменные • kazoo_publish(exchange, routing_key, json_payload)
• kazoo_query(exchange, routing_key, json_payload [, target_var]) • kazoo_subscribe(exchange, exchange_type, queue, routing_key) • kazoo_subscribe(json_description) • kazoo_pua_publish(json_payload) • kazoo_encode(to_encode, target_var) • kazoo_json(json_payload, field, target_var) Переменные: $kzR и $kzE
Конференция Kamailio 2019 Event routes event_route[kazoo:mod-init] { … } event_route[kazoo:consumer-event]
{ … } event_route[kazoo:consumer-event-connection-open] { … }
Конференция Kamailio 2019 Асинхронные события • Отправка BLF и MWI
без FreeSwitch • SIP MESSAGE • Расширенная информация о парковке (Polycom) • Обновление dispatcher по команде от kz_apps
Конференция Kamailio 2019 Enabled/Disabled Roles # # #!trydef TRAFFIC_FILTER-ROLE #
# #!trydef WEBSOCKETS-ROLE # # #!trydef TLS-ROLE # # #!trydef ANTIFLOOD-ROLE # # #!trydef RATE_LIMITER-ROLE # # #!trydef ACL-ROLE # # #!trydef MESSAGE-ROLE # # #!trydef PUSHER-ROLE # # #!trydef REGISTRAR_SYNC-ROLE # # #!trydef PRESENCE_SYNC-ROLE # # #!trydef PRESENCE_NOTIFY_SYNC-ROLE # # #!trydef SIP_TRACE_ROLE ## Enabled Roles #!trydef DISPATCHER-ROLE #!trydef NAT-TRAVERSAL-ROLE #!trydef REGISTRAR-ROLE #!trydef PRESENCE-ROLE #!trydef RESPONDER-ROLE #!trydef NODES-ROLE #!trydef FAST_PICKUP-ROLE #!trydef PRESENCE_QUERY-ROLE
Конференция Kamailio 2019 Enabled/Disabled Roles # # #!trydef TRAFFIC_FILTER-ROLE #
# #!trydef WEBSOCKETS-ROLE # # #!trydef TLS-ROLE # # #!trydef ANTIFLOOD-ROLE # # #!trydef RATE_LIMITER-ROLE # # #!trydef ACL-ROLE # # #!trydef MESSAGE-ROLE # # #!trydef PUSHER-ROLE # # #!trydef REGISTRAR_SYNC-ROLE # # #!trydef PRESENCE_SYNC-ROLE # # #!trydef PRESENCE_NOTIFY_SYNC-ROLE # # #!trydef SIP_TRACE_ROLE • На каждую роль - файл конфигурации • local.cfg - настройки • defaults.cfg - обязательная конфигурация
Конференция Kamailio 2019 Dispatcher • Выбирает наилучший freeswitch • Поиск
сервера клиента • Поиск вызова для pickup/transfer • trunkstore -> kamailio ## Enabled Roles #!trydef DISPATCHER-ROLE #!trydef NAT-TRAVERSAL-ROLE #!trydef REGISTRAR-ROLE #!trydef PRESENCE-ROLE #!trydef RESPONDER-ROLE #!trydef NODES-ROLE #!trydef FAST_PICKUP-ROLE #!trydef PRESENCE_QUERY-ROLE
Конференция Kamailio 2019 Nat Traversal ## Enabled Roles #!trydef DISPATCHER-ROLE
#!trydef NAT-TRAVERSAL-ROLE #!trydef REGISTRAR-ROLE #!trydef PRESENCE-ROLE #!trydef RESPONDER-ROLE #!trydef NODES-ROLE #!trydef FAST_PICKUP-ROLE #!trydef PRESENCE_QUERY-ROLE • nathelper
Конференция Kamailio 2019 Registrar ## Enabled Roles #!trydef DISPATCHER-ROLE #!trydef
NAT-TRAVERSAL-ROLE #!trydef REGISTRAR-ROLE #!trydef PRESENCE-ROLE #!trydef RESPONDER-ROLE #!trydef NODES-ROLE #!trydef FAST_PICKUP-ROLE #!trydef PRESENCE_QUERY-ROLE • registrar • usrloc
Конференция Kamailio 2019 Presence ## Enabled Roles #!trydef DISPATCHER-ROLE #!trydef
NAT-TRAVERSAL-ROLE #!trydef REGISTRAR-ROLE #!trydef PRESENCE-ROLE #!trydef RESPONDER-ROLE #!trydef NODES-ROLE #!trydef FAST_PICKUP-ROLE #!trydef PRESENCE_QUERY-ROLE • presence • presence_dialoginfo • presence_mwi • resence_xml • 1000+ строк конфигурации
Конференция Kamailio 2019 Опциональные модули # # #!trydef TRAFFIC_FILTER-ROLE #
# #!trydef WEBSOCKETS-ROLE # # #!trydef TLS-ROLE # # #!trydef ANTIFLOOD-ROLE # # #!trydef RATE_LIMITER-ROLE # # #!trydef ACL-ROLE # # #!trydef MESSAGE-ROLE # # #!trydef PUSHER-ROLE # # #!trydef REGISTRAR_SYNC-ROLE # # #!trydef PRESENCE_SYNC-ROLE # # #!trydef PRESENCE_NOTIFY_SYNC-ROLE # # #!trydef SIP_TRACE_ROLE • PUSHER - поддержка APNS Push нотификаций • TLS - поддержка TLS • WEBSOCKET - WS/WSS • RATE_LIMITER - поддержка ограничений настроенных в Kazoo • SIP_TRACE - поддержка Homer • PRESENCE_SYNC - синхронизация presence на разных зонах Kazoo
Конференция Kamailio 2019 Минусы • Большой объем конфигурации и логики
• WebRTC media обрабатывается в FS
Конференция Kamailio 2019 Гончаровский Игорь Kazoo конфигурация Kamailio Вопросы?