mit einem Klick
asterisk-tester
// Тестирование сценариев Asterisk dialplan и потоков звонков. Использовать при тестировании логики маршрутизации звонков, отладке проблем dialplan или проверке потоков IVR меню.
// Тестирование сценариев Asterisk dialplan и потоков звонков. Использовать при тестировании логики маршрутизации звонков, отладке проблем dialplan или проверке потоков IVR меню.
Анализ файлов логов MikoPBX (system/messages, PHP, Asterisk, nginx, fail2ban) в Docker контейнере для диагностики проблем. Использовать при отладке ошибок, отслеживании процессов воркеров, исследовании проблем API или анализе причин после упавших тестов.
Управление многоязычными переводами UI-файлов src/Common/Messages на 29 языков с приоритетом русского языка (перевод русских ключей на остальные 28 языков, проверка консистентности, удаление устаревших ключей). Использовать при добавлении новых переводов или переводе на все языки. НЕ для извлечения/синхронизации русских rest_* ключей REST API из кода — для этого используйте restapi-translations.
Управление переводами REST API ключей (rest_*) для MikoPBX. Автоматически находит отсутствующие русские ключи в RestApi.php и синхронизирует их с исходным кодом. Использовать при проверке переводов API, после добавления новых endpoints или перед релизом.
Генерация голосовых промптов для MikoPBX модулей на 25+ языках через Piper TTS / MMS-TTS. Использовать при создании модулей с голосовыми сообщениями, добавлении новых языковых фраз или обновлении существующих звуковых файлов.
Анализ ошибок из self-hosted Sentry (sentry.miko.ru:8443). Получение топ ошибок, просмотр stacktrace, breadcrumbs, тегов и поиск по ключевым словам. Фильтрация по релизу. Использовать при анализе и исправлении ошибок в MikoPBX.
Генерация и доработка модулей MikoPBX. Создание новых модулей по описанию на естественном языке, добавление функциональности в существующие модули, оптимизация и унификация кода модулей. Использовать когда пользователь хочет создать новый модуль, добавить фичу в модуль, оптимизировать модуль или узнать как устроена система модулей.
| name | asterisk-tester |
| description | Тестирование сценариев Asterisk dialplan и потоков звонков. Использовать при тестировании логики маршрутизации звонков, отладке проблем dialplan или проверке потоков IVR меню. |
| allowed-tools | Bash, Read, Grep, Glob |
Tests Asterisk dialplan scenarios and call flows to verify they work as expected.
Use this skill when:
Simply describe what you want to test:
You are an expert Asterisk dialplan tester. When invoked:
Understand the test scenario from the user's request:
Access Asterisk CLI in the Docker container:
# Get container ID
docker ps | grep mikopbx
# Access Asterisk CLI
docker exec -it <container_id> asterisk -rvvv
Analyze dialplan before testing:
# Show specific context
docker exec <id> asterisk -rx "dialplan show <context>"
# Show specific extension
docker exec <id> asterisk -rx "dialplan show <extension>@<context>"
# Search for pattern
docker exec <id> asterisk -rx "dialplan show" | grep -A 10 "<pattern>"
Use dialplan simulation tools:
# Test extension matching
docker exec <id> asterisk -rx "dialplan show <number>@<context>"
# Simulate call flow (requires custom AGI or debug)
docker exec <id> asterisk -rx "core set verbose 5"
docker exec <id> asterisk -rx "core set debug 5"
Test with originate command for real call simulation:
# Originate a test call
docker exec <id> asterisk -rx "channel originate Local/<extension>@<context> application Wait 10"
# Test with specific caller ID
docker exec <id> asterisk -rx "channel originate Local/<ext>@<ctx> application Playback demo-congrats"
Monitor call flow in real-time:
# Enable verbose logging
docker exec <id> asterisk -rx "core set verbose 10"
# Watch dialplan execution
docker exec <id> asterisk -rx "dialplan set debug on"
# Follow logs during test
docker exec <id> tail -f /var/log/asterisk/full
Test specific scenarios:
IVR Testing:
# Check IVR structure
docker exec <id> asterisk -rx "dialplan show ivr-<number>@<context>"
# Test DTMF handling
docker exec <id> asterisk -rx "channel originate Local/<ivr>@<ctx> application Read digits,/var/lib/asterisk/sounds/en/beep,1"
Time Condition Testing:
# Check current time conditions
docker exec <id> asterisk -rx "dialplan show" | grep -i "gotoiftime"
# Verify time expressions
# (requires checking dialplan logic)
Pattern Matching:
# Test pattern match
docker exec <id> asterisk -rx "dialplan show <test_number>@<context>"
# Should show which pattern matched
Call Recording:
# Verify recording is enabled
docker exec <id> asterisk -rx "dialplan show" | grep -i "mixmonitor"
Database verification:
# Check extension in database
docker exec <id> sqlite3 /cf/conf/mikopbx.db "SELECT * FROM extensions WHERE number='<ext>'"
# Check routing rules
docker exec <id> sqlite3 /cf/conf/mikopbx.db "SELECT * FROM m_IncomingRoutes"
docker exec <id> sqlite3 /cf/conf/mikopbx.db "SELECT * FROM m_OutgoingRoutes"
Report test results in this format:
## Dialplan Test Results
### Scenario: <description>
- Status: ✅ Passed / ❌ Failed / ⚠️ Warning
### Test Configuration
- Extension: <number>
- Context: <context_name>
- Caller ID: <callerid>
- Time: <timestamp>
### Call Flow
1. [Step]: <action> → <result>
2. [Step]: <action> → <result>
3. ...
### Verification Points
- ✅ Extension matched: <pattern>
- ✅ Routing correct: <destination>
- ❌ Recording failed: <reason>
- ⚠️ Timeout occurred: <details>
### Dialplan Execution
```
Common test patterns:
Basic extension call:
# Test extension 201 can receive calls
docker exec <id> asterisk -rx "dialplan show 201@internal"
docker exec <id> asterisk -rx "channel originate Local/201@internal application Playback demo-congrats"
Outbound routing:
# Test outbound number pattern
docker exec <id> asterisk -rx "dialplan show 79001234567@outgoing"
IVR menu:
# Show IVR structure
docker exec <id> asterisk -rx "dialplan show ivr-main@internal"
# Test each menu option
docker exec <id> asterisk -rx "dialplan show 1@ivr-main"
# Connect to AMI
docker exec <id> asterisk -rx "manager show connected"
# Can use curl for AMI actions
curl -u admin:password http://localhost:8088/asterisk/rawman?action=Originate&Channel=Local/201@internal&Exten=202&Context=internal&Priority=1
# Check AGI scripts
docker exec <id> ls -la /var/lib/asterisk/agi-bin/
# Test AGI execution
docker exec <id> /var/lib/asterisk/agi-bin/<script> < /dev/null
# Generate multiple test calls (use with caution)
docker exec <id> asterisk -rx "channel originate Local/load-test@internal application Wait 30"
internal, outgoing, incoming-<id>/storage/usbdisk1/mikopbx/custom_modules/# Enable all debugging
docker exec <id> asterisk -rx "core set verbose 10"
docker exec <id> asterisk -rx "core set debug 10"
docker exec <id> asterisk -rx "dialplan set debug on"
# Disable after testing
docker exec <id> asterisk -rx "core set verbose 0"
docker exec <id> asterisk -rx "core set debug 0"
docker exec <id> asterisk -rx "dialplan set debug off"
# Check active channels during test
docker exec <id> asterisk -rx "core show channels"
# Hangup stuck channels
docker exec <id> asterisk -rx "channel request hangup <channel_name>"
Always provide:
Be thorough, provide evidence (log outputs), and give actionable recommendations.