﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc
301	FXS, 1IND: Реализовать overlap dialing через IP	alx	alx	"По опыту замены нашей аппаратурой старых координатных АТС с использованием сигнализации индуктивным кодом операторами отмечалось, что время соединения становится больше. Это объясняется тем, что старые координатные АТС, приняв первую цифру номера, сразу занимали соединительную линию и начинали трансляцию последующих цифр в эту соединительную линию в процессе набора номера абонентом. В отличие от этого, плата VE-01 сначала накапливает у себя полный номер, и только после окончания набора номера вызывающим абонентом занимает соединительную линию и начинает передавать туда номер. Как результат, суммарное время набора увеличивается.

Предлагается реализовать функцию overlap dialing через SIP примерно по следующему сценарию:

{{{#!plantuml
@startuml
skinparam sequenceMessageAlign center

participant FXS as A
participant 1IND as B
participant ""АТС"" as C

-> A: Снятие трубки
-> A: Набор ""1""
-> A: Набор ""2""
A --> B: INVITE 12@domain.org
B --> A: 100 Trying
B -> C: Занятие
B -> C: Набор ""1""
B -> C: Набор ""2""
B --> A: 183 Session Progress
B <-[#blue]-> A: <font color=blue>//медиапоток//
-> A: Набор ""3""
A --> B: INVITE 123@domain.org\nReplaces: 12@domain.org
B --> A: 100 Trying
B --> A: 484 Address Incomplete (на 12@domain.org)
B -> C: Набор ""3""
B --> A: 183 Session Progress
B <-[#blue]-> A: <font color=blue>//медиапоток//
...
note over C: прием номера завершен
...
C -> B: Ответ
B --> A: 200 OK
A <-[#blue]> C: <font color=blue>//разговорное состояние//
note over A, C: абоненты ведут разговор

@enduml
}}}

1. Абонент FXS снимает трубку и начинает набирать номер.
1. Как только абонент набрал первые цифры, достаточные для определения направления (допустим, это ""12""), канальное окончание FXS отправляет INVITE c этими двумя цифрами (12@domain.org).
1. INVITE принимается канальным окончанием 1IND, который занимает соединиртельную линию и начинает передавать в нее цифры ""1"" и ""2"" обычным образом.
1. Абонент канального окончания FXS продолжает набор - и набирает третью цифру. Пусть это будет цифра ""3"". Канальное окончание FXS отправляет в сеть новое сообщение INVITE, на этот раз на URI 123@domain.org, содержащее поле Replaces с указанием реквизитов ранее установленного диалога.
1. Канальное окончание 1IND, уже занятое предыдущим вызовом, принимает новый, убирает из ""123"" уже переданные цифры ""1"" и ""2"" и передает в СЛ цифру ""3"". На ранее принятый INVITE канальное окончание отвечает ""484 Address Incomplete"".
1. Так повторяется, пока абонент FXS продолжает набор.
1. Когда из СЛ придет ответ, канальное окончание 1IND даст ответ ""200 OK"", и соединение перейдет в состояние разговора.

Насколько я понимаю, для работы такого сценария требуется, чтобы цифр номера в самом первом INVITE было достаточно для правильной маршрутизации вызова, так как, один раз послав INVITE одному окончанию, мы вряд ли сможем потом ""передумать"" и работать с другим (а если первое сразу ответит ""Busy""?). Поэтому предлагается конфигурационный параметр, устанавливающий минимальную длину префикса, после набота которого разрешается overlap dialing (в приведенном выше примере это 2).

Прошу комментировать и критиковать."	улучшение	new	низкий	2 очередь	any			san
