Абоненты и группы вашего сервера
Как показать в приложении позывные вместо номеров и дать людям список групп вашего сервера.
Если у вас на сервере свои номера, которых нет в RadioID (клубные ID, ретрансляторы, шлюзы), DMRConnect может показывать вместо них позывные и имена: на табло, в журнале вызовов и в SMS. А со списком групп у людей заработают стрелки выбора группы на главном экране, и вместо голого номера будет видно название. Всё это отдаётся одним файлом local_subscriber_ids.json, тем же, что держат HBlink и FreeDMR. Абоненты работают в DMRConnect 2.0.8 и новее, группы с версии 2.1.1.
Где приложение ищет файл
- По адресу из настроек сервера: поле «Список абонентов» в приложении или ключ
cuв QR-ссылке (поле есть в генераторе). - В нашем справочнике серверов: адрес сервера -> адрес файла.
- По адресу
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 ничего не качает. Для списка в несколько тысяч абонентов это заметно экономит трафик людей.
Как приложение с ним обращается
- Скачивает при выборе сервера и потом сверяется каждые 3 часа. Если файла не нашлось, повторно ищет через 12 часов. Последний полученный список хранится в телефоне, так что без доступа к сайту имена и группы остаются.
- Абоненты появляются в «Контактах» отдельным списком с поиском и в выборе приватного вызова. Группы появляются в стрелках и в выборе группы на главном экране.
- Контакты и группы, которые человек завёл сам, главнее списка сервера: его название для того же номера не перезаписывается.
- Файла нет или в нём не JSON: приложение работает как обычно, ничего не ломается.
- BrandMeister и рефлекторы YSF, NXDN, P25 файл не ищут: там имена берутся из RadioID и из самого эфира.