Требуется настройка Asterisk​

Цена договорная
07 ноября 2023, 22:50 • 4 отклика • 52 просмотра
Здравствуйте коллеги!
Требуется разовая помощь в настройке Asterisk под наши задачи.
Настройка требуется для дальнейшей интеграции SIP в наш сервис (домофония). Ниже размещаю описание стоящих перед нами задач, с которыми нужна помощь. Тут мы предлагаем наше видение решения проблемы, возможно у вас будет другой взгляд и лучшее решение - мы будем рады его обсудить.

Любые вопросы по задаче будем рады разъяснить - идеально созвониться и обсудить не в переписке.
Бюджет задачи обсудим с Вами лично.

1) Динамически регистрируемые пользователи на сервере Asterisk Server

Основной задачей для нас является автоматизации регистрации пользователей (SIP) аккаунтов. Это является и основной сложностью, требующей решения. Поскольку мы не знаем заранее, когда пользователь зарегистрируется в нашей системе, и мы не знаем, какое у него будет имя пользователя или номер телефона, мы не можем передать файл конфигурации в Asterisk. Нам нужно использовать что-то более динамичное. В Asterisk нет четкого способа решить эту проблему. Исходя из того, что мы прочитали, мы считаем, что решением данной задачи может стать база данных реального времени (real-time database), реализация которой присутствует в Asterisk. Конфигурации сохраняются в базе данных и могут быть добавлены / извлечены / удалены / обновлены динамически (CRUD). Один из способов сделать это заключается в том, что служба нашей системы подключается непосредственно к базе данных и манипулирует таблицами. Возможно, есть другой надежный способ добавить пользователей в Asterisk или альтернативные реализации данной задачи?

Для работы с решением и интеграцией с нашей системой, нам понадобятся инструкции и рекомендации по использованию базы данных в режиме реального времени, например, какой таблицей манипулировать в случае, когда нам нужно добавить нового пользователя.

2). Получать события от Asterisk в нашем сервисе

Цель использования этой функции - получать событие, когда кто-то звонит совершает звонок.

Мы видим эту реализацию сейчас так: квартира, как сущность, не является SIP-клиентом, это абстрактный клиент с идентификатором. В квартире могут быть зарегистрированы жильцы (один или более), которые также зарегистрированы как SIP-клиенты и могут участвовать в телефонных звонках. Sip-сервер Asterisk “знает”, как подключить (инициировать вызов) домофон к квартире, но он не знает, как кто из жильцов подключен к квартире, какие жильцы (users) могут принимать входящие звонки с домофона в эту квартиру)

Итак, нам нужно перехватить событие вызова в квартиру в сервисе домофонии и передать вызов первому ответившему жителю, т/к звонок доложен направляться всем жильцам, зарегистрированным в этой квартире одновременно. После того, как один из жильцов ответил на вызов – вызовы другим жильцам прекращаются. Когда наша система получает данные, в какую квартиру звонит домофон, мы извлекаем информацию о жильцах квартиры из базы данных и сообщаем всем жильцам, что у них есть входящий звонок с домофона. Это делается с помощью сигнального механизма, который включает в себя SignalR, GogglePush, Huawei Push и Apple VoIP Push.

Этот момент критически важен для системы. Жильцы, которые используют мобильные приложения, не имеют постоянного подключения к Sip. Приложение может быть свернуто, закрыто – чаще всего находится в неактивном состоянии. В этой ситуации мы должны прислать пользователю Push, чтобы установить вызов.

Первый житель, который ответит на телефонный звонок, будет подключен к звонку с домофона. Чтобы это сработало, необходимо прослушивать событие из Asterisk, это можно сделать с помощью ARI, WebSocket events.

3. Еще есть одна сложность в конфигурации sip:

Как работает сейчас:

Оба пользователя должны быть онлайн в SIP, только в этом случае пройдет звонок. В случае, если запрашиваемый пользователь не онлайн - звонок сразу сбросится (завершился)


Как нужно для приложения:

Независимо от того находится ли вызываемый абонент онлайн - sip должен продолжать ожидать соединений (продолжать звонок).

SIP сервер должен уведомлять наш сервер о запрашиваемом звонке, наш сервер, с помощью push уведомляет клиента, клиент по ответу на push подключается к sip, отвечает на звонок



Для корректной работы с решением и использованием обозначенного функционала нам понадобились бы инструкции, рекомендации по использованию событий ARI и других методов в интерфейсе, которые могли бы быть полезны для достижения наших целей. Кроме того, нам понадобилась бы инструкция, как правильно подключать клиентов описанным выше способом.




В резюме, нам нужен работающий SIP-сервер Asterisk с описанной выше рабочей моделью.

SIP-сервер должен быть развернут на тестовом сервере, если возможно, в docker, к которому нам нужно будет иметь доступ

Все шаги, описанные выше, потребуют разъяснения и инструкций по работе с ними от специалиста:

- База данных в режиме реального времени и требования к ее установке;

- Таблица базы данных в режиме реального времени и минимальные требования к информации, предоставляемой в эти таблицы;

- Наилучший способ использования CRUD, непосредственно в базе данных или с помощью некоторых методов в Asterisk API;

- Список событий, фильтрация в AMI или ARI Api, которые имеют отношение к задаче, описанной выше;

- Структурирование вызова с устройства domofon в квартиру и последующее подключение к жильцам;

- Описание наилучшего подхода к использованию ARI при ретрансляции и организации передачи вызовов между домофоном и жителями, как описано выше.