Например если два пользователя разговаривают, а третий пользователь звонит одному из них, например первому. В этом случае первый должен иметь возможность принять звонок и поставить второго пользователя на удержание, начав разговор с третьим. Поговорив с третьим, первый пользователь должен иметь возможность завершить с ним звонок и вернуться ко второму пользователю, который все это время ждал на удержании.

Ответ:

Это пример такого звонка

User1 звонит User2
соединение установлено между User1 и User2
User3 звонит User1
User1 отвечает User3
User1 ставит на удержание User2
user2 на удержании
соединение между user1 и user3 установлено

User1 сбрасывает звонок User3
User1 возвращается к User2
соединение установлено между User1 и User2

Такая возможность была в ранних версиях продукта.

Потом мы поняли две вещи:
1. Эта функция недостаточно популярна.
2. Эта функция достаточно сложная и требует приложения достаточных усилий для корректной работы.
Дело в том что даже обычные трансферы и удержание звонка в WebRTC(Chrome) не работают без специальных обходных путей на стороне сервера.
Это увеличивает сложность системы, а включение многих линий приведет к дополнительному увеличению сложности и новым ошибкам.
Поэтому в настоящий момент мы имеем настройку на стороне сервера в flashphoner.properties:
send_busy_when_on_call=true
Эта настройка говорит серверу сбрасывать входящий звонок с BUSY, если пользователь находится в состоянии разговора.

Поддержку многих линий мы можем рассмотреть при следующих событиях:
- Это будет достаточно востребованная функция
- Chrome браузер будет нормально поддерживать работу с потоками при удержании и трансфере звонков