Условный перевод звонка (куда зависит от желания оператора) через AMI
Пишу приложение, помогающее оператору быстро перебросить звонок на нужного менеджера.
Бизнес процесс такой:
Оператору поступает звонок. Исходя из ответов клиента, оператор определяет менеджера, который может помочь клиенту. Оператор удерживает звонок, связывается с менеджером, обрисовывает клиента.
- Если менеджер может принять звонок, оператор кладет трубку и звонок уходит на менеджера.
- Если менеджер не может принять звонок (занят, вышел, пошел перекурить), то оператор обращается "к дублеру".
Ключевые моменты:
- На кого перевести определяет оператор
- Оператор убеждается, то менеджер готов принять звонок (безусловный перевод не годится)
Теперь о приложении:
Приложение использует AMI интерфейс. При звонке определяет номер клиента. По номеру определяет клиента. По клиенту определяется список менеджеров, которые могут с ним работать. Оператор из списка выбирает клиента. По кнопке должно происходить следующее:
1) Клиент ставится на удержание. ему играет музыка
2) Программа переключает оператора на выбранного менеджера.
3) Если все ОК оператор кладет трубку.
4) Если НЕ ок. оператор кнопкой тыкает на следующего менеджера.
Вопрос:
Проблема с условным переводом из АМИ.
Когда оператор тыкает кнопку можно отправить такую команду:
Action: Redirect
Channel: SIP/109-b62033b8
Exten: 305
Context: default
Priority: 1
Но тогда переход выполняется без проверки менеджера. Звонок тупо уходит на него, а хотелось бы так, как описано выше. Какие команды должно отпраить приложение?
Помогите, пожалуйста.
ps: На сервере уже настроен такой перевод **#. Но как выполнить его из программы я не в курсе.