﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc
280	Работа пульта с телефонной сетью	alx	san	"Александр, по результатам устной беседы с Димой по проблеме тикета #275 у меня возникли вопросы/предложения, по которым, мне кажется, тебе надо принять решение.

Я (с подсказки Димы) обнаружил, что в программе есть такая настройка как ""Адрес ТФОП"". Как объяснил Дима, этот адрес используется для двух разных целей. Во-первых, он используется для определения, пришел ли вызов в конференцию из телефонной сети или нет, во-вторых, он используется для исходящих вызовов в телефонную сеть. По обоим моментам мне есть что сказать.

=== По поводу определения абонента ТСОП ===

Сейчас программа определяет, является ли некто абонентом ТСОП, сравнивая его контакт с адресом шлюза, указанным в конфигурации программы. Это, по моему, как минимум, ненадежно, так как
 1. адрес (домер) в URI контакта сообщения INVITE может не совпадать с адресом шлюза (например у шлюза платы VE-01 там 127.0.0.1, о чем мы с тобой говорили не далее чем вчера);
 1. для входящих из ТСОП вызовов может использоваться не тот же шлюз, что для исходящих;
 1. наконец, шлюзов может быть больше одного;
 1. возможно еще что-то не учел...

Таким образом, если по уму реализовывать задачу ""распознавания"" абонентов, пришедших из ТСОП через шлюз, надо, как минимум, анализировать не только (и не столько) поле Contact:, сколько поля Via: и Record-Route: каждого сообщения на предмет наличия в одном из URI адреса шлюза, заданного в конфигурации (и задавать там придется все шлюзы в виде списка адресов)... А если выяснится, что один из шлюзов работает на том же хосте, что и FreeSwitch, определить абонентов ТСОП по адресам окажется вообще невозможно...

И все это для чего? Только для того чтобы вывести на ""плашке"" иконку телефона? Мне кажется, слишком много геморроя ради сомнительного результата. Не лучше ли просто убрать эту функцию из программы? А если уж оставить, то надо, мне кажется придумать какой-то совсем другой алгоритм работы, не основанный на распознавании адресов...

=== По поводу исходящих вызовов в ТСОП ===

Сейчас, по словам Димы, его программа сама решает, что делать с вызовами абонентов телефонной сети: она берет из конфигурации адрес шлюза и дает FS команду направить вызов этому шлюзу. То есть, по сути, пульт диспетчера берет на себя задачу маршрутизации вызовов абонентов телефонной сети, что, по идее, является основной функцией телефонного коммутатора.

Когда-то программа Вари делала так же, и мы обговаривали, что такое поведение нелогично и негибко (а если, например, требуется маршрутизировать вызовы через несколько разных шлюзов? Местные - через одни, Россия - через другой, Мир - через третий?), и мы договаривались переделать это по уму, а именно, программа вызовы телефонных номеров не будет направлять на конкретный шлюз, а вместо этого будет просто вызывать extention в специально для этого созданном на FS контексте (например на нашем сервере для этого создан контекст ""pstn""). Соответственно, в конфигурации программы вместо адреса шлюза(ов) задавать имя контекста для таких вызовов. А после этого FS уже будет решать, что делать с вызовами в контексте ""pstn"".

К сожалению, как говорит Дима, Варя этого так и не сделала...

Предлагаю принять решение о том, что нам делать с этими двумя моментами."	задача	closed	major	2 очередь	Диспетчерская связь	fixed	public telephone network, pstn	alx
