Как осуществляется уведомление о записи телефонного разговора?

Как можно настроить оповещение о записи разговора при исходящем вызове в FreePBX 16 и Asterisk 13? Я уже реализовал уведомление для стороны, которой мы звоним, с помощью следующего кода: 

```
[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(/var/lib/asterisk/sounds/ru/custom/zapis_razgovora))
```

Однако в текущей настройке звонящая сторона слушает тишину во время проигрывания уведомления, и это создает неясность относительно начала разговора. Я хотел бы узнать, как можно сделать так, чтобы звонящая сторона слышала либо сигнал beep, либо чтобы обе стороны одновременно слышали предупреждение. Попытка использовать `exten => s,n,Playback(beep)` не сработала. Что еще можно сделать для решения этой проблемы?
  • 22 октября 2024 г. 12:32
Ответы на вопрос 1
Для уведомления обеих сторон о записи телефонного разговора в 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()` и другие необходимые функции в вашем конфигурационном файле, чтобы избежать проблем с совместимостью.

Также не забудьте протестировать изменения в конфигурации, чтобы убедиться, что все работает согласно вашим ожиданиям.
Похожие вопросы