DMRConnectDMRConnect
Главная · Для разработчиков · Абоненты и группы

Абоненты и группы вашего сервера

Как показать в приложении позывные вместо номеров и дать людям список групп вашего сервера.

Если у вас на сервере свои номера, которых нет в RadioID (клубные ID, ретрансляторы, шлюзы), DMRConnect может показывать вместо них позывные и имена: на табло, в журнале вызовов и в SMS. А со списком групп у людей заработают стрелки выбора группы на главном экране, и вместо голого номера будет видно название. Всё это отдаётся одним файлом local_subscriber_ids.json, тем же, что держат HBlink и FreeDMR. Абоненты работают в DMRConnect 2.0.8 и новее, группы с версии 2.1.1.

Где приложение ищет файл

  1. По адресу из настроек сервера: поле «Список абонентов» в приложении или ключ cu в QR-ссылке (поле есть в генераторе).
  2. В нашем справочнике серверов: адрес сервера -> адрес файла.
  3. По адресу https://адрес_сервера/local_subscriber_ids.json.

Файл нужен по https. Обычный http Android по умолчанию приложениям не открывает, и с такого адреса список не скачается.

Если сервер у людей записан по IP, а файл лежит на сайте с доменным именем, третий способ не сработает: по голому IP веб-сервер обычно отдаёт заглушку. Тогда положите адрес файла в QR-код или напишите нам в группу, добавим ваш сервер в справочник, и приложение найдёт файл само.

Формат

Основа та же, что у RadioID: массив users. Обязательны radio_id и callsign, имя (name или fname и surname) и город по желанию.

Группы кладутся рядом, в массив talkgroups. Это наше расширение: HBlink, FreeDMR и старые версии приложения лишний массив просто пропускают, так что файл остаётся совместимым. У каждой группы обязателен номер tg, название name желательно, без него приложение покажет «TG 6». Порядок групп в файле не важен, стрелки листают их по номеру. Отдавайте только группы, куда может зайти любой участник сервера: файл открыт без пароля.

{"users": [
  {"radio_id": 1030000, "callsign": "NAVIRUS", "name": "", "city": ""},
  {"radio_id": 2509998, "callsign": "R9ABC", "name": "Иван", "city": "Иркутск"}
],
 "talkgroups": [
  {"tg": 6, "name": "Общая"},
  {"tg": 25, "name": "Иркутская область"},
  {"tg": 9990, "name": "Эхо-тест"}
]}

Можно отдать файл только с группами или только с абонентами, приложение примет и такой. Файл отдаётся без пароля с типом application/json. Если его обновляет сам мастер, достаточно показать его с сайта, например в nginx:

location = /local_subscriber_ids.json {
    alias /путь/к/local_subscriber_ids.json;
    default_type application/json;
}

Если сервер отдаёт заголовок Last-Modified, приложение спрашивает файл с If-Modified-Since и при ответе 304 ничего не качает. Для списка в несколько тысяч абонентов это заметно экономит трафик людей.

Как приложение с ним обращается