Opened 11 hours ago

#478 new улучшение

Добавить reason в ответы на входящие INVITE

Reported by: alx Owned by: alx
Priority: средний Milestone: 2 очередь
Component: any Keywords:
Cc:

Description

Когда-то давно, на заре существования платы 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.

Change History (0)

Note: See TracTickets for help on using tickets.