Для уведомления обеих сторон о записи телефонного разговора в Asterisk можно использовать механизм управления аудиопотоком, чтобы одновременно проигрывать уведомление звонящей и принимающей стороне. Вот как вы можете это сделать в FreePBX и Asterisk 13.
Одним из решений будет использование `Local`-добавочного номера, который может работать с двумя потоками аудио одновременно. Вам нужно будет создать свой собственный контекст или макрос, в котором вы сможете проигрывать предупредительное сообщение для обеих сторон.
Вот примерный подход:
1. Создайте новый контекст в вашем `extensions.conf`:
```plaintext
[recording-alert]
exten => s,1,NoOp(Playing recording notification)
same => n,Playback(ru/custom/zapis_razgovora)
same => n,Return
```
2. Измените ваш существующий макрос или контекст, который вызывает `Dial`, чтобы использовать `Local`:
```plaintext
[macro-dialout-trunk]
exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM}${OUT_${DIAL_TRUNK}_SUFFIX},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS}b(func-apply-sipheaders^s^1,(${DIAL_TRUNK}))A(local-announce^s^1))
```
3. Затем создайте новый контекст, который будет одновременно обрабатывать подключение и уведомления:
```plaintext
[local-announce]
exten => s,1,NoOp(Announcing recording notification)
same => n,Set(DIALEDNUM=${ARG1})
same => n,Dial(SIP/${DIALEDNUM},,b(recording-alert^s^1)) ; сюда можно добавить дополнительные параметры для звонка
same => n,Return
```
Преимущества данного подхода:
- Вы сможете проигрывать уведомление для обеих сторон, не создавая состояния тишины для одной из них.
- Использование `Local`-добавочного номера помогает легко структурировать и управлять логикой вызова.
Убедитесь, что у вас включен `Read()` или `ReadFile()` и другие необходимые функции в вашем конфигурационном файле, чтобы избежать проблем с совместимостью.
Также не забудьте протестировать изменения в конфигурации, чтобы убедиться, что все работает согласно вашим ожиданиям.