Ладно, это все лирика, есть конкретная проблема (непосредственно с указанной не связанная), мнение о которой тоже хотелось бы услышать в сообществе.
есть сервис "голосовая капча": при выходе на МН линию клиенту в pre_answer состоянии проигрывается три цифры, которые клиент должен передать dtmf-ом. Если цифры совпали, то клиент пропускается на МН линию, если нет - не пропускается.
схема работы такая: операторский свитч отправляет нам звонок на фрисвич, там делается пре-ансвер, выполняется капча. После этого фрисвич надо исключить из медиаобмена. Как РАБОТАЕТ на некоторых свичах (но, судя по всему, это нарушает RFC), но не работает со свичами Nokia:
1 делаем pre_answer
2 проигрываем цифры
3 слушаем inband-dtmf
4 устанавливаем bypass_media=true
5 делаем исходящий звонок при помощи bridge
профит. Но при этом нарушается RFC, на что сослались инженеры Nokia при разборе проблемы. А именно: сначала в 183 отправляется SDP-answer с одним значением c=
, а потом в 200 OK отправляется еще один SDP-answer, в котором в SDP атрибуте c=
указан другой IP адрес и другие порты для подключения. Я когда теоретически рассматривал эту конструкцию, вообще говоря, сомневался, что фрисвич так умеет. Но он умеет. А Nokia - нет. Они предлагают использовать UPDATE для обновления состояния SDP offer/answer после первого согласования. Соответственно, вопрос: а сабж умеет UPDATE? как?