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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
77
Техническая и программная сторона VoIP
iqtek96
0
130
WebRTC
iqtek96
1
140
2._Разработка_с_Asterisk.pdf
iqtek96
0
110
ML в VoIP
iqtek96
0
140
Ретроспектива одного проекта - IqDialer
iqtek96
0
170
FMC - интегрируем офисную телефонию с GSM сетью
iqtek96
0
72
Что нового в VoIP в 2019
iqtek96
0
64
Kamailio как proxy для WebRTC
iqtek96
0
380
Other Decks in Programming
See All in Programming
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
290
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
270
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
850
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
540
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.3k
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
660
JavaDoc 再入門
nagise
1
370
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
250
dRuby over BLE
makicamel
2
380
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
100
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Marketing to machines
jonoalderson
1
5.5k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
170
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
160
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
600
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Context Engineering - Making Every Token Count
addyosmani
9
970
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 Вопросы?