﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc
478	Добавить reason в ответы на входящие INVITE	alx	alx	"Когда-то давно, на заре существования платы VE-01, был реализован механизм событий, позволяющий принимать один и тот же вызов разным канальным окончаниям. Для этого событию `call_event_t` было добавлено поле `answer_code`, куда изнечельно конструктором события помещается код 404 (не найден), а также строка `answer_contact` (изначально пустая). Когда ищется кнаальное окончание, готовое обслужить вызов, это событие последовательно предлагается всем канальным окончаниям. При этом канальные окончания могут менять этот код: например канальное окончание, URI которого совпадает с вызываемым URI, но не готовое обслужить вызов (занятое другим вызовом, неисправное и т.п.) может изменить код ответа (например на 486). По окончании поиска, если вызов не был принят в работу, деструктор события формирует ответ с соответствующим кодом - выполняется `ua_response_status(data, answer_code, 0, false, answer_contact)`.

Позже функция `ua_response_status()` была расширена еще одним параметром `reason`, который многими канальными окончаниями используется для уточнения причины неуспешного ответа. Однако при поиске канального окончания для обслуживания вызова этот параметр до сих пор не используется. А это могло бы быть полезно, так как канальное окончание может отказаться обслуживать вызов по многим разным причинам, которые не всегда можно понять из кода ответа (например фокус конференции отвечает ""480 Temporary Unavailable"" если достигнут лимит числа участников конференции).

**Предлагается** добавить событию `call_event_t` поле `answer_reason`, которое канальные окончания смогут устанавливать одновременно с (и дополнительно к) `answer_code`."	улучшение	new	средний	2 очередь	any			
