Opened 8 years ago

Closed 8 years ago

Last modified 7 years ago

#280 closed задача (fixed)

Работа пульта с телефонной сетью

Reported by: alx Owned by: san
Priority: major Milestone: 2 очередь
Component: Диспетчерская связь Keywords: public telephone network, pstn
Cc: alx

Description

Александр, по результатам устной беседы с Димой по проблеме тикета #275 у меня возникли вопросы/предложения, по которым, мне кажется, тебе надо принять решение.

Я (с подсказки Димы) обнаружил, что в программе есть такая настройка как "Адрес ТФОП". Как объяснил Дима, этот адрес используется для двух разных целей. Во-первых, он используется для определения, пришел ли вызов в конференцию из телефонной сети или нет, во-вторых, он используется для исходящих вызовов в телефонную сеть. По обоим моментам мне есть что сказать.

По поводу определения абонента ТСОП

Сейчас программа определяет, является ли некто абонентом ТСОП, сравнивая его контакт с адресом шлюза, указанным в конфигурации программы. Это, по моему, как минимум, ненадежно, так как

  1. адрес (домер) в URI контакта сообщения INVITE может не совпадать с адресом шлюза (например у шлюза платы VE-01 там 127.0.0.1, о чем мы с тобой говорили не далее чем вчера);
  2. для входящих из ТСОП вызовов может использоваться не тот же шлюз, что для исходящих;
  3. наконец, шлюзов может быть больше одного;
  4. возможно еще что-то не учел...

Таким образом, если по уму реализовывать задачу "распознавания" абонентов, пришедших из ТСОП через шлюз, надо, как минимум, анализировать не только (и не столько) поле Contact:, сколько поля Via: и Record-Route: каждого сообщения на предмет наличия в одном из URI адреса шлюза, заданного в конфигурации (и задавать там придется все шлюзы в виде списка адресов)... А если выяснится, что один из шлюзов работает на том же хосте, что и FreeSwitch, определить абонентов ТСОП по адресам окажется вообще невозможно...

И все это для чего? Только для того чтобы вывести на "плашке" иконку телефона? Мне кажется, слишком много геморроя ради сомнительного результата. Не лучше ли просто убрать эту функцию из программы? А если уж оставить, то надо, мне кажется придумать какой-то совсем другой алгоритм работы, не основанный на распознавании адресов...

По поводу исходящих вызовов в ТСОП

Сейчас, по словам Димы, его программа сама решает, что делать с вызовами абонентов телефонной сети: она берет из конфигурации адрес шлюза и дает FS команду направить вызов этому шлюзу. То есть, по сути, пульт диспетчера берет на себя задачу маршрутизации вызовов абонентов телефонной сети, что, по идее, является основной функцией телефонного коммутатора.

Когда-то программа Вари делала так же, и мы обговаривали, что такое поведение нелогично и негибко (а если, например, требуется маршрутизировать вызовы через несколько разных шлюзов? Местные - через одни, Россия - через другой, Мир - через третий?), и мы договаривались переделать это по уму, а именно, программа вызовы телефонных номеров не будет направлять на конкретный шлюз, а вместо этого будет просто вызывать extention в специально для этого созданном на FS контексте (например на нашем сервере для этого создан контекст "pstn"). Соответственно, в конфигурации программы вместо адреса шлюза(ов) задавать имя контекста для таких вызовов. А после этого FS уже будет решать, что делать с вызовами в контексте "pstn".

К сожалению, как говорит Дима, Варя этого так и не сделала...

Предлагаю принять решение о том, что нам делать с этими двумя моментами.

Change History (20)

comment:1 by san, 8 years ago

По поводу исходящих вызовов в ТСОП

Согласен. Сейчас сделано "как было" и мы с Димой договаривались что потом переделаем "как правильно", и видимо потом уже наступило.

Алексей, можешь поставить Диме задачу для реализации правильного, на твой взгляд, алгоритма вызова абонентов ТСОП ?

По поводу определения абонента ТСОП

Приём входящих вызовов из ТСОП у нас был реализован с помощью абонента pstn-gw, в определённом контексте, разве этого не достаточно для определения входящего абонента из ТСОП?

in reply to:  1 comment:2 by alx, 8 years ago

Replying to san:

Алексей, можешь поставить Диме задачу для реализации правильного, на твой взгляд, алгоритма вызова абонентов ТСОП ?

Done, #282.

По поводу определения абонента ТСОП

Приём входящих вызовов из ТСОП у нас был реализован с помощью абонента pstn-gw, в определённом контексте, разве этого не достаточно для определения входящего абонента из ТСОП?

Во-первых, почему-то у Димы сейчас определение сделано совсем не через pstn-gw, а как я описал выше - через проверку адреса (домена).

Во-вторых, да, я посмотрел в конфиге, есть такой пользователь pstn-gw. Но что это нам дает в плане определения абонента ТСОП?

В-третьих, это ты говоришь о входящих (когда к нам из телефонной сети пришел вызов номера 0 и попал в конференцию 0). А как быть с исходящими вызовами (когда диспетчер вызывает какой-то телефонный номер)?

comment:3 by alx, 8 years ago

Summary: Рабора пульта с телефонной сетьюРабота пульта с телефонной сетью

comment:4 by dimag, 8 years ago

Keywords: public telephone network pstn added
Resolution: fixed
Status: newclosed

r316.
Также закрыл замечание 282.

comment:5 by alx, 8 years ago

Resolution: fixed
Status: closedreopened

В r316:

  1. В настройках программы по-прежнему вижу "Адрес ТФОП". Эта настройка не убрана.
  2. В настройках программы не вижу настройки имени контекста для вызова абонентов ТСОП. Насколько я вижу, в r316 имя контекста "прибито гвоздями" прямо в коде.
  3. По-прежнеиу не решена проблема (не принято решение) о том, как должны идентифицироваться абоненты, пришедшие в конференцию из ТСОП сами (то есть входящие вызовы).

По пп. 1 и 2 создал тикеты #284 и #285.

Version 1, edited 8 years ago by alx (previous) (next) (diff)

comment:6 by dimag, 8 years ago

По пункту 1,2 надо спросить Александра.

in reply to:  6 ; comment:7 by san, 8 years ago

Replying to dimag:

По пункту 1,2 надо спросить Александра.

в чём вопрос?

Replying to alx:

  1. По-прежнему не решена проблема (не принято решение) о том, как должны идентифицироваться абоненты, пришедшие в конференцию из ТСОП сами (то есть входящие вызовы).

Какие передложения, варианты?
можно как-то использовать тот-же метод "с префиксом" как при исходящих?

in reply to:  7 ; comment:8 by alx, 8 years ago

Replying to san:

Какие передложения, варианты?
можно как-то использовать тот-же метод "с префиксом" как при исходящих?

Попробовать, наверное, можно.

comment:9 by dimag, 8 years ago

Пункты 1,2 выполненны.
По пункту 3 жду решения.

in reply to:  8 comment:10 by alx, 8 years ago

Replying to alx:

Попробовать, наверное, можно.

Попробовал, сделал. Не без труда, через задницу, но работает как надо.

comment:11 by san, 8 years ago

Т.е. сейчас у Димы в программе входящие звонки должны отображаться без доработок?

Last edited 8 years ago by san (previous) (diff)

in reply to:  11 comment:12 by alx, 8 years ago

Replying to san:

Т.е. сейчас у Димы в программе входящие звонки должны отображаться без доработок?

Что ты имеешь в виду?
Они и так отображались, вопрос лишь в том, насколько правильно...

Я сделал только одно - когда позвонивший подключается к конференции (то есть нажимает "0" в голосовом меню), к его username слева добавляется "pstn".

Last edited 8 years ago by alx (previous) (diff)

comment:13 by san, 8 years ago

понятно

comment:14 by dimag, 8 years ago

Данный пункт можно ззакрыть как fixed.

comment:15 by dimag, 8 years ago

Данный пункт можно закрыть?

comment:16 by san, 8 years ago

Забавный монолог :)
Я не знаю, я не проверял этот функционал, если всё работает - закрывайте

comment:17 by dimag, 8 years ago

Cc: alx added

Алексей, ваше мнение, работы с входящими звонками от ТФОП вас устраивает?

in reply to:  17 comment:18 by alx, 8 years ago

Replying to dimag:

Алексей, ваше мнение, работы с входящими звонками от ТФОП вас устраивает?

В целом - да. Мне не очень нравится, что факт принадлежности вызова к телефонной сети определяется по имени вызывающего абонента (наличию префикса ТСОП), но решения лучше я все равно придумать не могу...

comment:19 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

Тогда я закрываю этот тикет, все необходимые изменения были в r316

comment:20 by san, 7 years ago

Milestone: Текущее2 очередь

Milestone renamed

Note: See TracTickets for help on using tickets.